
CVE 2021-44228 Proof-of-Concept. Log4Shell ist ein Angriff gegen Server, die verwundbare Versionen von Log4J verwenden.
Apache Log4j2 2.0-beta9 bis 2.15.0 (keine Releases 2.12.2, 2.12.3 und 2.3.1)
JNDI-Funktionen, die in Konfiguration, Logmeldungen und Parametern verwendet werden, schützen nicht vor vom Angreifer kontrollierten LDAP- und anderen JNDI-bezogenen Endpunkten. Ein Angreifer, der Logmeldungen oder Logmeldungsparameter kontrollieren kann, kann beliebigen Code ausführen, der von LDAP-Servern geladen wird, wenn die Nachschlage-Ersetzung für Meldungen aktiviert ist. Ab log4j 2.15.0 ist dieses Verhalten standardmäßig deaktiviert. Ab Version 2.16.0 (zusammen mit 2.12.2, 2.12.3 und 2.3.1) wurde diese Funktionalität vollständig entfernt. Beachten Sie, dass diese Schwachstelle spezifisch für log4j-core ist und log4net, log4cxx oder andere Apache Logging Services Projekte nicht betrifft.
Daher wird es mit einem CVSS v3-Score von 10.0.(MAXIMALER SCORE)
Glücklicherweise handelt es sich um einen 0-Day-Angriff. Also haben die Entwickler dies innerhalb eines 0-Day behoben.
Das Apache Log4j-Projekt gehört zu den am weitesten verbreiteten Open-Source-Softwarekomponenten und bietet Protokollierungsfunktionen für Java-Anwendungen.
Zunächst verwendet dieser PoC:
Im http_server finden Sie 2 Dateien: MyExploit.java und ihre kompilierte .class-Datei MyExploit.class
💡ERINNERUNG: javac namefile.java um eine Java-Klasse zu kompilieren :)
Sie können einen HTTP-Server im laufenden Betrieb mit dem folgenden Befehl ausführen: python -m http.server [PORT] In diesem Fall
marshalsecs Repository Details hier
christophetds Repository Details hier
Normalerweise ist das Zielfeld im Request-Header der User-Agent, in diesem PoC wird X-Api-Version verwendet
Dieser PoC startet eine Befehlsausführung auf dem anfälligen Server, um eine Datei mit dem Namen "pwned_by_pierpaolosestito_dev" im tmp-Ordner zu erstellen. MyExploit.java enthält außerdem einen bösartigen Payload, der es einem Angreifer ermöglicht, eine Reverse-Code-Execution durchzuführen und eine Reverse-Shell zu erhalten.
💡EINIGE TIPPS: Wenn Sie docker exec [container_id] ifconfig ausführen, werden Sie feststellen, dass es sich um einen Runner handelt, der nicht in Ihrer lokalen Subdomain liegt. Um eine RCE durchzuführen, können Sie die IP in MyExploit.java ändern, die einen RCE-Befehlsstring enthält. Da der Docker-Runner Sie nicht über eine private IP kontaktieren kann, benötigen Sie eine öffentliche IP, die Sie mit Portweiterleitung erhalten können.