13 Cross Site Scripting holes in PHP-Nuke
/////////////////////////////////////////
Table de matière :
1) Introduction
2) User.php
3) Download.php
Modules.php
XFORUM
4) ViewPro
5) Search
Downloads
6) RateDownload
7) ViewDownload
8) Members List
9) DMOZGateway
10) PN Google Search
11) Submit.php
12) Comments.php
13) Replypmsg.php
14) Friend.php
15) Greetz/Credits
1) Introduction
***************
D'abord, qu'est-ce que le CSS (Cross Site Scripting) ?
Le CSS est un trou de sécurité assez répandu sur le web et pas assez pris au sérieux.
Il affecte de nombreux sites, comme icq, google, caramail, ebay, etc.
Une petite partie de ces site sur : http://www.devitry.com/holes.html .
Le cross scripting est du à un manque de vérification dans les données envoyées à des pages
webs dynamiques, et grâce auxquel on peut faire executer du javascript ou du html directement
sur le site.
Exemple de cross scripting :
http://www45.caramail.com/general.jsp?ERROR=
On peut donc grâce à un simple lien faire executer du javascript sur la machine de quelqu'un...
Cela peut par exemple être utile pour du social engineering.
Exemple, une news envoyée au webmaster d'un site :
"
J'ai un probleme dans votre site
ici
aidez moi svp.
"
Le webmaster risque de ne pas se mefier, en voyant que l'url redirige vers son site et va saisir
l'opportunité de ne pas recopier une url en cliquant sur le lien. (encore faut-il qu'il le
lise bien en html).
--------------------------- Interlude precisions =) ------------------------------
Dans le même style il y a aussi l'url
http://www.uneurlsurlesitedumec.com@http://uneautreurldehaxor.net .
--------------------------- Fin de l'interlude ------------------------------------
Il y a bien d'autres manieres de s'en servir, à vous de l'imaginer.
Vous pouvez aussi avoir + de renseignements sur le CSS ici :
http://www.isecurelabs.com/article.php?sid=150.
Dans quelques cas, le script est un + plus sécurisé :
' est remplacé par \' ou par \.
\ est remplacé par \\.
" est remplacé par \" ou par \.
Les possibilités sont donc directement + réduites. donnera rien,
mais marche sans probleme.
Bien que la plupart des elements de chaque tutoriel aient été recopiés ici, ils sont gardés
en archive à ces urls :
http://balteam.multimania.com/Tuts/CSphpnuke.html
http://balteam.multimania.com/Tuts/4cssphpnuke.html
http://balteam.multimania.com/Tuts/searchphpnuke.txt
et je vous conseille de les visiters si vous voulez + de renseignements.
Plutôt que de continuer à écrire des tutos pour chaqunes de ces failles, j'ai décidé
d'en ecrire un qui les repredrait toutes.
PHPNuke est un service proposant de nombreux scripts php pour webmasters : http://phpnuke.org.
Je maintiens néanmoins que ce service est d'une bonne qualité.
Je rapelle aussi que je ne suis pas responsable de ce que vous ferez de ce tutoriel, il a été
écrit à titre informatif.
2) User.php
***********
Ce script permet de s'enregistrer en tant qu'utilisateur (op=register) du site ou de se logger
dans son compte.
Il permet aussi d'editer certains renseignements sur soi-même (op=edituser) et quelques autres
petites choses.
L'url vulnérable est dans l'affichage du profil utilisateur (op=userinfo) :
http://www.host.com/user.php?op=userinfo&uname=
3) Download.php
***************
Pour les telechargements donc...
On peut aussi rechercher les elements telechargeables par categories.
Là se trouve la faille :
/download.php?dcategory=&sortby=
Modules.php
***********
XForum
------
4) ViewPro
++++++++++
Permet de voir des infos sur un utilisateur. Le nom de l'utilisateur est dans l'url et il
s'affiche (forcemment) sur son profil.
Il suffit donc de remplacer son username par du javascript :
/modules.php?op=modload&name=XForum&file=member&action=viewpro&member=
5) Search
+++++++++
En bas de la page "ViewPro", un lien :
Chercher tout les messages de cette utilisateur.
Dans l'url de ce lien, le nom du membre apparait encore. Même chose que + haut,
remplacer l'username par un script :
/modules.php?op=modload&name=XForum&file=misc&action=search&srchuname=&searchsubmit=a&srchfid=all&srchfrom=0
Downloads
---------
6) Rate Download
++++++++++++++++
Dans la partie de phpnuke dédiée aux downloads, le lien Rate Download permet de coter
un programme.
L'url est, par exemple :
http://phpnuke.org/modules.php?name=Downloads&d_op=ratedownload&lid=118&ttitle=Announcement_Articles_v1.0_(for_new_Add_Link_and_Add_Download)
Inutile de chercher bien loin pour voir qu'il y a une possibilité de cross scripting dans cette
url, étant donné qu'une des valeur est "string".
En allant sur cette url, cette possibilité est concernée, quand on voit le titre
Announcement Articles v1.0 (for new Add Link and Add Download)
en gras au milieu de la page.
L'url vulnérable est donc, par exemple :
http://phpnuke.org/modules.php?name=Downloads&d_op=ratedownload&lid=118&ttitle=
7) View Download
++++++++++++++++
Pas besoin de s'attarder beaucoup, même chose que pour le précedent, juste ratedownload à
remplacer par viewdownload :
http://phpnuke.org/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=118&ttitle=
8) Members List
---------------
On peut voir la liste la liste des membres inscris au site PHPNuke avec l'url
www.host.com/modules.php?op=modload&name=Members_List
On peut ensuite les rechercher par lettre. Exemple :
http://phpnuke.org/modules.php?op=modload&name=Members_List&file=index&letter=B
L'url /modules.php?op=modload&name=Members_List&file=index&letter=hophophop nous donne
le message :
No members found for hophophop
L'url vulnérable sera donc par exemple :
http://phpnuke.org/modules.php?op=modload&name=Members_List&file=index&letter=[JAVASCRIPT]
9) DMOZGateway
--------------
DMOZGateway est un addon, un moteur de recherche via dmoz.org .
Son url est :
/modules.php?op=modload&name=DMOZGateway&file=index
La faille est evidemment dans l'affichage de la recherche :
/modules.php?op=modload&name=DMOZGateway&file=index&topic=
10) PN Google Search
--------------------
Comme le precedent addon, celui-ci est un moteur de recherche, via google (comme le dit son
nom =)).
La faille (toujours dans l'affichage de la recherche) :
/modules.php?op=modload&name=PN_Google_Search&file=google&query=
11) Submit.php
**************
Submit.php est le script inclus dans phpnuke qui permet d'envoyer des news au webmaster,
dans l'espoir que cette derniere soit publiée ou de contacter le webmaster.
Quand vous avez écris votre new, vous devez obligatoirement cliquer sur le boutton "Preview"
pour verifier que des corrections ne sont pas à faire. Le texte que vous avez écris est
alors affiché dans une page et non dans des champs d'ecriture.
Aucun filtre n'est placé dans l'option preview.
3 zones de textes sont sur submit.php :
subject, story, storyext.
Donc le sujet, l'histoire ou son intro, et l'histoire complete ou des precisions.
L'url pour "pré-voir" la new sera :
www.host.com/submit.php?subject=*****&story=*********&storyext=*****&op=Preview
Exploitée par exemple comme ceci :
www.host.com/submit.php?subject=&story=[AUTRE SCRIPT]&storyext=[ENCORE DU SCRIPT]&op=Preview
12) Comments.php
****************
En gros, la même faille que sur submit.php, l'option preview :
/comments.php?subject=&comment=&pid=0&sid=0&mode=&order=&thold=&op=Preview
13) Replypmsg.php
*****************
Ce script fait partie d'un addon de messagerie pour phpnuke.
Celui-ci, comme le dit son nom, permet d'ecrire ou de répondre à un message.
Il contient une zone de texte pour le destinataire, pour le sujet, pour le message,...
Un déstinataire peu etre choisi par défaut en rajoutant &destin=LEDESTINATAIRE dans l'url.
Dans ce cas, la zone de texte est supprimée et le nom du destnataire est directement inscris
sur la page... l'url vulnérable sera donc :
/replypmsg.php?send=1&destin=
14) Friend.php
**************
Ce script permet de "recommender" le site sur lequel on se trouve à un ami.
Quand on a cliqué sur le boutton permettant de recommencer le site, un message du style
"La recommendation a été correctement envoyée à *****..."
***** étant le nom du destinataire qu'il nous avait fallut noter.
L'url vulnérable est :
/friend.php?op=SiteSent&fname=
15) Greetz/Credits :
********************
Greetz to :
Rootzy, H3zEN, [RaFa], Majen, Entity, Cannabis2k, SecurityFocus, MadChat, Agressor, Le Lunatique,
Karl et tout ceux que j'ai oublié :)
Credits :
frog-m@n
leseulfrog@hotmail.com
20/12/01