03 julio, 2014

g0jira: herramienta para pwnear WordPress

¡Saludos!

      Pese a que todavía no está terminado -quedan muchos bugs que subsanar, muchas funcionalidades que añadir, e implementar más exploits (por ahora sólo llevo 60, y todos en plugins antiguos, ninguna en el core)- quería dejar por aquí un ejemplo de las cosas que ya permite hacer g0jira. ( https://github.com/0verl0ad/g0jira )

     ¿Qué es g0jira? Es un -intento de- framework/herramienta/llámalo X  para escanear y explotar vulnerabilidades conocidas en WordPress y sus plugins. WPScan es sin duda una herramienta completa y que cumple bien sus funciones, pero odio depender de las herramientas de terceros cuando se trata de cosas sencillas de implementar. Es por ello que empecé a codear esta herramienta.

    Podríamos dividirla en 3 partes: enumeración, explotación y herramientas. En la parte de enumeración podemos realizar un escaneo de plugins instalados (por defecto viene con un diccionario de más de 14.000 plugins, pero la herramienta permite construir uno nuevo del tamaño deseado), la versión del WordPress (obtenida desde 4 fuentes diferentes: meta generator, readme.html, RSS, y los links de los css y js), o realizar una búsqueda de un determinado plugin entre un listado de dominios (ideal si encuentras un 0-day :) ), listar los usuarios registrados.

   En la otra parte tendríamos el modo "exploit", desde el que lanzar los exploits; y la sección de herramientas, desde la cuales poder generar payloads, ofuscar webshells, etc. Ambas están en continua expansión, y me gustaría mucho que la gente colaborara aportando más :).

  Vamos a proceder a mostrar un pequeño ejemplo de cómo funciona (utilizando lo que hasta ahora está implementado) g0jira, utilizando como escenario WordPressA Lab (descargar desde aqui http://wordpressa.quantika14.com/ ) . Procedamos:

En primer lugar vamos a enumerar los plugins instalados, acotando la búsqueda a 1500 plugins ordenados por popularidad:

perl gojira.pl --enum=dic_populares.txt --url=http://localhost/wordpress --max=1500





    Como podemos observa se han detectado bastantes plugins. En aquellos donde se ha podido extraer la versión ésta se muestra y además cual es la versión más reciente del plugin. En caso de que no coincdan se muestra un enlace al changelog para ver qué ha sido modificado. Además se muestra un link de descarga del plugin en esa versión para poder buscar vulnerabilidades en local por si queremos.

    Nos vamos a centrar en "WordPress Shopping Cart". Probemos si tenemos algún exploit en g0jira para ese plugin y esa versión (o alguna superior). Para ello:

perl gojira.pl --exploit

Seguimos las instrucciones que aparecen en el menú y seleccionamos la opción "3", y escribimos "Shopping Cart" para buscar exploits relacionados:




   Podemos ver que hay un exploit para esta versión. Se trata de un Arbitrary File Upload, o sea, que vamos a poder subir una webshell. En este punto podemos comprobar si en las herramientas que vienen con g0jira encontramos alguna que nos interese. Para ello abrimos una pestaña nueva . y tecleamos:

perl gojira.pl --tools

Seleccionamos la opción para listar todas las herramientas disponibles (opción 1) y vemos que hay dos que nos interesan: HideShell (si queremos utilizar una webshell grande prefabricada, como una c99 que tengamos) y Shell2Me (para crear una webshell pequeña y manejarla desde consola).  En nuestro caso vamos a ejecutar Shell2Me para generar una webshell nueva con nombre esto-no-es-una-shell.php

     Tras generarla (y sin cerrar esa pestaña, puesto que después vamos a controlarla desde ahí) volvemos a la otra pestaña donde teníamos el menú de los exploits.  Y ejecutamos el exploit AFU-0002 (opción 2 y después escribir el codigo del exploit). Nos pediran los datos necesarios (URL, lugar de la shell, nombre que queremos que tenga una vez subida) y después se ejecutará: de tener éxito nos devolverá la ruta donde se encuentra nuestra shell.



  Ahora copiamos la ruta donde está, vamos a la pestaña donde teníamos abierta shell2me y se la pasamos para empezar a controlarla como si de un terminal se tratase:


Un "id" para comprobar que todo marcha bien :)


   Espero que quien lea este post le dé una oportunidad e intente añadir más exploits/herramientas para que entre todos tengamos un g0jira más completo :).


Byt3z!

0 comentarios:

Publicar un comentario