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
- 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:
- Creamos una variable data que contendrá el mensaje multiparte
- Incluimos el payload seleccionado por el usuario codificado en el campo image del formulario
- Añadimos el campo send del formulario
- Enviamos la petición utilizando la función send_request_cgi de la librería HttpClient que importamos al inicio
- 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
Fuente: http://www.securitybydefault.com/2014/07/modulo-de-metasploit-para-aprovechar-un.html
No hay comentarios:
Publicar un comentario