mcNews ****** Produit : ********* mcNews http://www.phpforums.net Version : ********* 1.1a Date : ****** 17/05/02 Problèmes : *********** - Path Disclosure - Inclusion de fichiers - XSS - Accès à la partie administrative Developpement : *************** Commencons par un trou XSS. La page de connection admin se trouve à l'url /admin/login.php. On peut modifier la valeur d'une variable 'path', qui est notée dans la source html et qui sert normalement à donner l'endroit où se rendre si les login et pass sont bons. Au lieu de rentrer login.php?path=index.php, on va entrer, par exemple : /login.php?path="> Cela donnera dans la source : ------------------------------------------------------------------------------
[...]
//---> Ici se termine le code éntré "> [...]
------------------------------------------------------------------------------ Le "> sert donc à fermer l'input "path". On voit que la valeur de path vaut \, car notre " a été remplacé par \". Ca pose un problème facilement réglable en cross site scripting. Si par exemple on veut faire alert('hop'), alert(\'hop\') s'affichera dans la source et le javascript ne sera pas executé. On va donc utiliser la balise
pour ne pas avoir à utiliser des guillemets. Une balise n'est pas prise en compte si elle se trouve dans une autre balise , or c'est le cas. On met donc un
après le ">. Dans notre
on met le texte à utiliser, puis on met le script. Ici j'ai pris comme exemple une fenêtre qui s'ouvre et qui récupere le cookie. Ceci pour montrer que le '+' doit être remplacé par %2B dans l'url car sinon il sera compris comme un espace. Comme on verra, récuperer le cookie de ce service est inutile. On a pas besoin de fermer notre balise dans l'url car elle sera fermée dans la source, et le "> qui fermait à la base le input path sera compris comme du texte. Voyons maintenant la sécurité du dossier /admin/. Dans les fichiers de ce repertoire, on peut voir : ------------------------------------------------------------ ---------------------- Donc les mêmes que design.php ... la difference est que dans header.php, il n'y a pas l' authentification admin... Pas besoin d'envoyer un cookie sur /admin/header.php?voir=hop&skinfile=../../file/to/view pour afficher le fichier souhaité. De plus, il faudra afficher la source HTML dans header.php, car le résultat de la requête n'est pas affiché comme du texte, mais : [...] Dans ces deux fichiers se trouve aussi le path disclosure. Le path s'affichera si le $skinfile n'existe pas. Credits : ********* frog-m@n leseulfrog@hotmail.com