OpenBB
******
Produit :
*********
OpenBB
http://www.prolixmedia.com
Versions :
**********
1.0.0 RC3 (et moins ?)
Date :
******
23/05/02
Problèmes :
***********
- XSS
- Accès aux options modérateur
Developpement :
***************
Commençons par un premier trou cross site scripting non permanent :
/myhome.php?action=messages&box=
Le problème est que les ' sont remplacé par \' et les " par \".
On va donc utiliser la balise
Voyons maintenant le XSS permanent. On va utiliser pour cela les BBcodes.
Dans faq.php on peut voir :
---------------------------------------------------------------------------------------------
Que sont les BBcodes ?
Les BBcodes sont utilisés à la place du HTML pour créer des liens, inserer des images, etc.
[...]
---------------------------------------------------------------------------------------------
Le fichier qui s'occupe de filtrer les messages et de remplacer les BBcodes par du html
est lib/codeparse.php.
Dedans on peut voir :
-----------------------------------------------
[...]
$pattern[6] = "#\[img\]http://(.*?)\?(.*?)\[/img\]#si";
[...]
$replacement[6] = '';
[...]
------------------------------------------------
Il n'est pas possible d'inserer du javascript avec le code [img]javascript:SCRIPT[/img],
car l'argument d'[img] doit commencer par http://.
On pourrait aussi essayer de fermer la balise pour executer un script comme ceci :
[img]http://">[/img] mais il y a un filtre qui l'empechera, le
même qui empeche le html, qui remplacera > par >.
Mais le " n'est pas filtré dans les balises.
Pour executer un javascript, on utilisera alors ce code ci :
[img]http://" onerror="ANYSCRIPT"[/img]
Ce qui donnera dans la source :
La balise sera bien transformée, car elle commence par http:// et le script sera bien executé,
car l'image http:// n'existe pas.
Il y a aussi une autre balise qui n'est pas annoncée, mais qui existe néanmoins dans
OpenBB :
------------------------------------------------------------------------------------
[...]
$pattern[22] = "#\[glow tcolor=(.*?), fcolor=(.*?), size=(.*?)\](.*?)\[/glow\]#si";
[...]
$replacement[22] = '';
[...]
------------------------------------------------------------------------------------
Le BBcode :
[glow tcolor=')" onmouseover="[SCRIPT]" nothing="('hop, fcolor=red, size=100]HUHUHU[/glow]
donnera dans la source HTML :
et le script sera executé si le lecteur passe sa souris au-dessus du tableau.
Le dernier trou permet un accès à tous aux options modérateurs suivantes :
- Fermer/ouvrir une partie du forum
- Mettre en mode sticky ou l'enlever
- Mettre en mode important ou l'enlever
On utilise le fichier moderator.php
Dans ce fichier, on peut voir comme sécurité une ligne du genre "if (!$ismod) {...".
L'url pour fermer une partie du forum sera :
http://www.site.com/moderator.php?action=lock&TID=LIDDUFORUM&ismod=1
ou action=sticky ou action=important.
Pour faire le contraire ou annuler l'action, il suffit de rajouter &status=1 à l'url.
Patch :
*******
Les créateurs ont été avertit.
Greetz :
********
/
Credits :
*********
frog-m@n
leseulfrog@hotmail.com