Security hole in IMessenger ( PHP-Nuke )
///////////////////////////////////////
Introduction
************
IMessenger est un addon pour phpnuke (phpnuke.org).
Si le site possede ce service, je pense qu'il se trouve sur
http://www.lesite.com/im.php?action=Check+IM .
Ce service, réservé aux membres inscris (user.php), permet de s'envoyer des messages
instantanemment, de voir qui est connecté, et stock les messages encore non-lus.
IM.PHP
******
Le probleme d'im.php sont les filtres. Le javascript/html est autorisé. Le 2eme probleme
est à la reception des messages. L'auteur, le sujet, et le message arrivent en popup
dans une seule et même nouvelle page.
On a donc :
Auteur : Youpla
Sujet : salut =)
Message : ça va bien ?
qu'est ce que tu fais dans la vie ?
(linspiration du moment ... =))
Aucune autorisation n'est demandée pour ouvrir la popup, donc si le destinataire est en ligne,
il reçoit directement le message, sinon il le reçoit quand il se connecte.
Si on envoit comme sujet ou comme message , le
destinataire verra s'afficher dans les 2 ou 3 minutes d'après l'alerte java.
Il suffit donc d'attendre le webmaster ou un user pour lui faire executer un script.
Utiliser la faille
******************
a) Les cookies
--------------
La page "compose" de imessenger contient 2 edit (To: et Subject : ), 1 textarea (Message:),
1 button (Send im) .
L'action post se fait via im.php .
Nom de ledit To : username_to .
Nom de l'edit Subject : subject.
Nom du textarea : message.
Nom du button : action . Avec comme valeur pour le boutton "send im" : send.
Donc :
www.lesite.com/im.php?username_to=&subject=&message=&action=send.
On sait que les cookies sont basés en base64 (cherchez sur bugtraq ;)), il est donc
très facile de les decrypter. Le probleme est de recuperer ce cookie.
IMessenger est une des solutions.
Le but est de recuperer le cookie via un script redirecteur.
L'url vers laquelle le webmaster devra se rendre est
www.lesite.com/im.php?username_to=VOTREPSEUDO&subject=le document.cookie&message=ou le document.cookie ici&action=send
Script redirecteur :
Le script a envoyer au webmaster sera donc :
Il vous enverra son cookie dès la reception du message.
b) Se creer un compte admin
***************************
Même principe, le script redirecteur, mais avec l'url pour se creer un compte admin.
L'url est :
http://serveur/admin.php?add_name= [NOM] &add_aid= [PSEUDO] &add_url= [URL] &add_email= [EMAIL] &add_radminsuper=1&add_pwd= [PASSWORD] &op=AddAuthor
Url qu'il suffit mettre à la place de
http://www.lesite.com/im.php?username_to= [VOTREPSEUDO] &subject='+ document.cookie +'&message=message&action=send
dans le script.
Credits
*******
Faille découverte (vendredi 14 décembre 2001) et tuto écris (samedi 15 décembre 2001)
par frog-m@n (leseulfrog@hotmail.com).
PHPNuke a été avertit.