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