
Questo strumento consente di verificare se una semplice applicazione web Java è vulnerabile a CVE-2021-44228 per una versione di Java e di Log4J fornita dall'utente.
Puoi anche [opzionalmente] applicare una delle mitigazioni predefinite.
Il laboratorio di simulazione avviato da log4shell_validator.py utilizza docker-compose per simulare lo sfruttamento della vulnerabilità log4j e ottenere RCE sulla macchina vulnerabile.
Prima di tutto, è necessario creare alcune immagini docker. Lo script ./build_images.sh dovrebbe occuparsene.
La simulazione dell'attacco viene eseguita nel seguente modo:
/2021-44228-via-message, registra sempre il campo header User-Agent. Il codice di questa applicazione è disponibile in ./poc_template./exploit.sh e invia un payload all'app vulnerabile.cd marshalsec/ ;mvn clean package -DskipTests ;cd -./build-images.shpython log4shell_validator.py --java-version 8 --log4j-version 2.12.1~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
[--exploit-via-thread-context]
log4j-vulnerability-tester
optional arguments:
-h, --help show this help message and exit
--java-version JAVA_VERSION
version of java to be used
--log4j-version LOG4J_VERSION
version of log4j to be used
--no-cleanup Don't delete used containers.
--disable-trust-url Disable the LDAP trustURLCodebase setting on the victim app
--remove-jndi-lookup-class
Remove the JNDI Lookup class from the log4j jar file
--disable-message-lookup
Disable the JNDI message lookup in the victim app's JVM
--debug Display all container's logs
--exploit-via-thread-context
By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation
Questo validatore è stato testato con diverse combinazioni di Java7/8 e differenti versioni di Log4J2; per altri esempi, consulta la pipeline di test estesi nella scheda github actions.
Per ora, sono state implementate le seguenti mitigazioni:
-Dlog4j2.formatMsgNoLookups=TrueIn aggiunta, è stato aggiunto un nuovo flag per testare un vettore di sfruttamento che può bypassare la disabilitazione delle message lookups: --exploit-via-thread-context
Questo software è stato creato esclusivamente per scopi di ricerca e per lo sviluppo di tecniche di mitigazione efficaci, e non è inteso per essere utilizzato per attaccare sistemi se non dove esplicitamente autorizzato. I maintainer del progetto non sono responsabili dell'uso improprio del software. Usalo in modo responsabile.