
Log4Shell Proof-Of-Concept derived from https://github.com/kozmer/log4j-shell-poc
Este repositório é uma Prova-de-Conceito para a vulnerabilidade CVE-2021-44228.
É derivado de Este Repositório.
Neste repositório, fiz um exemplo de uma aplicação vulnerável e uma demonstração de como explorá-la.
Modifiquei o script python upstream para automatizar a geração desta vulnerabilidade.
Neste repositório existem dois Dockerfiles para fácil uso, conforme abaixo:
Nesta imagem Docker, baixamos o java jdk-8u20 do meu google drive, pois é necessário criar uma conta na Oracle para baixá-lo.
Se não confiar, pode modificar o arquivo de download no Dockerfile e baixar o jdk de aqui (certifique-se de baixar a versão Java SE Development Kit 8u20 para linux).
Esta imagem Docker executa uma versão modificada do script fornecido por kozmer e faz o seguinte:
As portas padrão usadas são 1389 para JNDI LDAP, 8000 para o SimpleHttpServer e 9001 para o shell reverso!
Para compilar e executar, execute:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Use docker logs <containerID> para ver os logs do aplicativo e obter a entrada correta que precisa ser fornecida ao aplicativo vulnerável
Para esta PoC, considerei os IPs padrão usados pelo docker (172.17.0.1/24); você pode alterá-los no script ./Docker-Ldap/run.sh para corresponder ao seu cenário.
Nesta imagem Docker, executa-se uma aplicação web vulnerável que usa a versão não corrigida do Log4J 2 e a expõe na porta 8080.
O código fonte do aplicativo também está disponível em ./Docker-Vuln, créditos a kozmer.
Para compilar e executar, execute:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
O nome de usuário é o campo injetável!
Para aceitar o shell reverso, você deve criar um ouvinte netcat na porta 9001
nc -lvnp 9001
Após baixar o repositório, certifique-se de ter o docker engine instalado e não ter outras imagens docker em execução na sua máquina.
config.sh para construir as imagens e iniciá-las. (Este script usa privilégios de root para executar; você pode modificá-los conforme necessário).9001.localhost:8080docker logs <containerID>).