
Log4Shell Proof-Of-Concept derivato da https://github.com/kozmer/log4j-shell-poc
Questa repository è una proof-of-concept per la vulnerabilità CVE-2021-44228.
Deriva da Questa repository.
In questa repository ho realizzato un esempio di applicazione vulnerabile e una dimostrazione di come sfruttarla.
Ho modificato lo script Python upstream per automatizzare la generazione di questa vulnerabilità.
In questa repo ci sono due Dockerfile per un uso semplice come segue:
In questa immagine Docker scarichiamo Java jdk-8u20 dal mio Google Drive, poiché per scaricarlo è necessario creare un account su Oracle.
Se non ti fidi, puoi modificare il file di download dal Dockerfile e scaricare il JDK da qui (assicurati di scaricare la versione Java SE Development Kit 8u20 per Linux).
Questa immagine Docker esegue una versione modificata dello script fornito da kozmer e fa quanto segue:
Le porte predefinite usate sono 1389 per JNDI LDAP, 8000 per SimpleHttpServer e 9001 per la reverse shell!
Per compilare ed eseguire, esegui:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Usa docker logs <containerID> per vedere i log dell'app e recuperare l'input corretto da fornire all'applicazione vulnerabile.
Per questa PoC ho considerato gli IP predefiniti usati da Docker (172.17.0.1/24); puoi modificarli nello script ./Docker-Ldap/run.sh per adattarli al tuo scenario.
In questa immagine Docker viene eseguita un'applicazione web vulnerabile che usa la versione non patchata di Log4J 2 e la espone sulla porta 8080.
Il codice sorgente dell'app è disponibile anche in ./Docker-Vuln, crediti a kozmer.
Per compilare ed eseguire, esegui:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Il campo Username è quello iniettabile!
Per accettare la reverse shell devi creare un listener netcat sulla porta 9001
nc -lvnp 9001
Dopo aver scaricato la repo, assicurati di avere Docker Engine installato e di non avere altre immagini Docker in esecuzione sulla tua macchina.
config.sh per costruire le immagini e avviarle. (Questo script richiede privilegi di root per essere eseguito; puoi modificarli di conseguenza).9001.localhost:8080.docker logs <containerID>).