29 julio 2014

Módulo de Metasploit para aprovechar un FileUpload

Voy a continuar relatando mis aventuras por el mundo Metasploit del cual tengo que decir que está resultando ser más amigable en su desarrollo de lo que me había parecido en un principio.

En el artículo anterior vimos como crear un exploit local aprovechando un Buffer Overflow, así que en esta ocasión nos vamos a centrar en la explotación remota con un ejemplo de file upload en una aplicación Web, viendo de este modo un caso similar al de la vulnerabilidad detectada en el plugin Mailpoet para Wordpress que ha dejado expuestos a un buen número de servidores.

Preparando el entorno

Para el ejemplo he utilizado como entorno de pruebas la ISO Web for pentesters, este live CD nos creará un servidor Web dejándonos bastante margen para jugar con distintas vulnerabilidades:



Explotando la vulnerabilidad

Si accedemos al primer ejemplo de File Upload veremos un formulario de subida de ficheros que no nos presentará ningún reto a la hora de abusar de él.



No aplicará ningún tipo de control sobre el fichero subido a la Web y nos permitirá subir cualquier código PHP que se nos antoje:


Identificada la vulnerabilidad, lo siguiente que nos interesa es identificar los campos del formulario para construir el exploit:



Escribiendo el exploit

Vamos a verlo en detalle, os dejo su enlace a Pastebin 

Definición



A destacar de esta parte:
  • Especificamos que nuestro exploit es de tipo remoto
  • Incluimos la librería HttpClient para utilizar sus funciones durante la explotación
  • Definimos a través de la plataforma y arquitectura que vamos a construir un exploit para PHP
  • Registramos como opciones adicionales el path al formulario de subida y el nombre del fichero que se creará en el servidor, de este modo tenemos un exploit más genérico que podremos utilizar en otros escenarios

Función check

Crear la siguiente función nos permitirá utilizar el comando check desde la consola de MSF:



En este enlace tenéis los distintos valores que podemos devolver en esta función.

Función upload

Para dejar más claro el código he creado una función específica encargada de hacer la subida del fichero:



Si nos fijamos, aquí es donde ha entrado en juego los datos que recogimos del formulario:
  1. Creamos una variable data que contendrá el mensaje multiparte
  2. Incluimos el payload seleccionado por el usuario codificado en el campo image del formulario
  3. Añadimos el campo send del formulario
  4. Enviamos la petición utilizando la función send_request_cgi de la librería HttpClient que importamos al inicio
  5. Devolvemos la respuesta de la petición


Función exploit

Y finalmente la función exploit, que será llamada cuando ejecutemos el comando run o exploit desde la consola de MSF:


Desde esta función invocamos a upload para hacer la carga del fichero y comprobar que todo ha ido correctamente.

Un detalle a destacar de esta parte del código es la invocación a send_request_raw, su objetivo es ejecutar automáticamente el payload que acabamos de subir.


Ejecución del exploit


Cargamos y configuramos el exploit:


Comprobamos que el objetivo sea vulnerable:


Ejecutamos el exploit:


Y llegados a este punto ya podemos curiosear con más tranquilidad por el entorno:




Artículo cortesía de Miguel Ángel García

11 comments :

Pablo dijo...

Interesante y didáctico, muy bueno Miguel Ángel ;)

Venom dijo...

Apoyo la moción de censura.

Venom dijo...

¿Qué recomiendas para alguien especializado en programación y con conocimientos de seguridad anticuadísimos? ¿Los mismos libros?

Venom dijo...

¿Si leo estos libros podré evitar que tiren abajo un avion en el que vaya yo dentro? (AVISO: No me estoy mofando, lo pregunto en serio) (http://www.grupoelron.org/contactostelepaticos/jo_080609_ron.html)

David dijo...

Buenos días, me interesa bastante estos libros y quisiera
saber si realmente es de 0, ya que no tengo conocimientos previos en el tema y
empezaré este año la carrera. Me gustaría enfocar la ingeniería a la seguridad
informática y cuanto antes empiece mejor.

Saludos

Felipe dijo...

¿Y habrá alguna opción "gratis" para esta literatura?

Bruce Cachi dijo...

eso fue lo q escuchaba en mi interior pero lo q no podia escuchar pasame tu facebook XD

juanitourquiza dijo...

http://facebook.com/juanitourquiza
http://twitter.com/juanitourquiza

Sergio Jimenez dijo...

En la humilde opinión de alguien que también hizo FP superior en su día (DAW y DAM) y se ha leído varios libros de 0xWord, el nivel de la educación española es de RISA, y estos libros tienen un nivel muchísimo mas alto.

Sospecho, sin intención de ofender, que no tenías el conocimiento técnico suficiente para sacarle jugo al libro, y por eso no te sirvió. Échale un vistazo dentro de unos meses y veras como le sacas mas partido.

Saludos!

nacho dijo...

y no hay libros gratis recomendados?

Bryan dijo...

En colombia donde los puedo encontrar.