APACHE STRUTS2 CVE-2017-9805

Hola a todoooooos!!, en el día de hoy explotaremos la vulnerabilidad crítica CVE-2017-9805 que afecta a las versiones de Apache Struts de la 2.5 a la 2.5.12. Concretamente explotaremos la (S2-052), permitiéndonos una ejecución remota de comandos, gracias a que Struts deserializa información no confiable a través de una instancia de XStream sin ningún tipo de filtro..

Y después de esta pequeña breve introducción,nos ponemos manos a la obra 😀

Recursos y software utilizado:

Kali Linux 2.0

Metasploit

Burpsuite

VirtualBox

S2-052/Struts (ISO de Pentesterlab)

Guía de Explotación:

Como de costumbre arrancaremos las dos máquinas virtuales y las dejaremos en “Host only Adapter”, acto seguido comprobaremos la conexión entre ambas por medio del comando ping o como os vaya mejor. Con las direcciones de ambas máquinas empezaremos a trabajar..

En primer lugar realizaremos un escaneo con nuestro Nmap y veremos los puertos que tiene abiertos la máquina vulnerable, como vemos en el puerto 80 está corriendo un servidor web con Apache Tomcat.

1rst scan struts.png

Posteriormente con este información seguiremos con nuestro “fingerprinting” obligatorio :), y en este caso utilizaremos Nikto para ver si conseguimos mayor información de las vulnerabilidades del servidor, como vemos en la imagen inferior parece que el servidor pueda estar protegido por algún tipo de WAF.

nikto.png

Después de estos escaneos ya que no aportan mucha información realizaremos una búsqueda de carpetas y archivos mediante Dirbuster, para ver si nos da alguna pista de aplicaciones corriendo en dicho servidor.

En la imagen de abajo vemos que arroja un resultado bastante positivo y que nos señalará el camino de la vulnerabilidad que vamos a explotar.

strutsarchive.png

Como vemos parece que en el server está corriendo una versión de Apache Struts.. con esta información arrancaremos Burpsuite, pondremos nuestro proxy “on” y observaremos con bastante atención el historial HTTP, en la imagen inferior hay una petición por método POST, la cual dejaremos anotada, ya que es la que nos interesa.

peticionpost.png

Una vez llegados hasta aquí arrancaremos METASPLOIT, y vemos si hay algún módulo con el cual podamos explotar dicha vulnerabilidad, realizamos la búsqueda con “search struts” y usamos el exploit abajo reseñado.

Procederemos a ver las opciones del exploit mediante un “show options”:

Iremos rellenando campo a campo los requeridos quedándonos así:

— set Proxies: para interceptar la petición con BURPSUITE y ver las distintas respuestas del servidor.

–set RPORT: puerto remoto.

–set RHOST: dirección remota.

–set TARGETURI: la extraemos de la captura de BURPSUITE de la petición por método POST, en la pestañita de URL.

–set PAYLOAD: elegimos un payload que nos permita una ejecución de comandos.

–set CMD: ponemos la string que queremos que se ejecute, en este caso nos creara un archivo llamado shadowconfig en la carpeta /tmp/ del servidor vulnerable.

optionsmetasploit.png

Como último activaremos el exploit y nos dirigiremos a BURPSUITE para captar la petición por método POST y ver lo que sucede.

exploitpeticion.png

Como podemos observar en la zona señalada, se ha ejecutado remotamente los comandos que le indicamos a METASPLOIT, ejecutando el archivo shadowconfig pertenenciente a la carpeta /sbin/ y posteriormente creando un archivo en la carpeta /tmp/ llamado shadowconfig. Para asegurarnos y no perder dicha petición la mandaremos al repeater de BURPSUITE y veremos como responde el servidor..

exploitrepeater.png

Parece ser, que silenciosamente el comando se ha ejecutado en el servidor. Ya que disponemos de acceso a la máquina vulnerable, comprobaremos que en la carpeta /tmp/ se ha creado el archivo shadowconfig.

comprobacion VM shadowconfig.png

Como podemos observar la ejecución remota de comandos se completó perfectamente, llegados a este punto realizaremos unas pequeñas modificaciones a la configuración del exploit y del payload, para proceder a conectarnos mediante una bind shell al server y así interacturar directamente con éste.

El primer paso dejamos el proxy vacío y cambiamos el payload por el que indicamos más abajo que nos conectará mediante netcat al servidor vulnerable.

SHELL.png

Y………VOILÁ!!!!, otra vulnerabilidad más explotada!. Cualquier duda o sugerencia tenéis mi email y sino en comments de la página, saludos!.

Anuncios

Deja un comentario