
Docker-basiertes Labor zur Validierung von CVE-2021-44228 (Log4Shell) in Java-Apps, zum Testen von Gegenmaßnahmen und zur Simulation von RCE über LDAP- und HTTP-Nutzlasten.
Dieses Tool ermöglicht es Ihnen zu überprüfen, ob eine einfache Java-Webanwendung für eine vom Benutzer angegebene Version von Java und Log4J anfällig für CVE-2021-44228 ist.
Sie können [optional] eine der vordefinierten Gegenmaßnahmen anwenden.
Das von log4shell_validator.py gestartete Simulationslabor verwendet docker-compose, um die Ausnutzung der log4j-Schwachstelle und das Erlangen von RCE auf der anfälligen Maschine zu simulieren.
Zuerst müssen einige Docker-Images erstellt werden. Das Skript ./build_images.sh sollte sich darum kümmern.
Die Angriffssimulation wird wie folgt durchgeführt:
/2021-44228-via-message./poc_template./exploit.sh aus, das einen Payload an die anfällige App sendet.cd marshalsec/ ;mvn clean package -DskipTests ;cd -./build-images.sh auspython log4shell_validator.py --java-version 8 --log4j-version 2.12.1 aus~/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
Dieser Validator wurde mit mehreren Kombinationen von Java7/8 und verschiedenen Versionen von Log4J2 getestet. Weitere Beispiele finden Sie in der Pipeline der erweiterten Tests im GitHub Actions-Tab.
Derzeit wurden die folgenden Gegenmaßnahmen implementiert:
com.sun.jndi.ldap.object.trustURLCodebase auf False.-Dlog4j2.formatMsgNoLookups=TrueDarüber hinaus wurde ein neues Flag hinzugefügt, um einen Ausbeutungsvektor zu testen, der das Deaktivieren von Message-Lookups umgehen kann: --exploit-via-thread-context
Diese Software wurde ausschließlich zu Forschungszwecken und zur Entwicklung effektiver Gegenmaßnahmen entwickelt und ist nicht dazu bestimmt, Systeme anzugreifen, es sei denn, dies wurde ausdrücklich genehmigt. Die Projektbetreuer übernehmen keine Verantwortung oder Haftung für Missbrauch der Software. Verwenden Sie sie verantwortungsbewusst.