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.