Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
hka-seminar-log4shell — Praktische Demonstration der Log4Shell-Sicherheitslücke (CVE-2021-44228) | Kitploit
Tools/GitHubGitHub/fabioeletto/hka-seminar-log4shell
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubfabioeletto/hka-seminar-log4shell

hka-seminar-log4shell

Praktische Demonstration der Log4Shell-Sicherheitslücke (CVE-2021-44228)

Repository anzeigen
1vor 1 JahrNoch 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

Seminararbeit - Log4Shell-Schwachstellen-Demonstration (CVE-2021-44228)

Sicherheitshinweis

Dieses Repository dient ausschließlich zu Bildungs- und Demonstrationszwecken im Rahmen einer sicherheitsbezogenen Seminararbeit. Verwenden Sie diesen Code nicht in Produktionsumgebungen oder gegen Systeme ohne ausdrückliche Erlaubnis. Der Aufbau soll das Sicherheitsbewusstsein fördern und zeigen, wie komplexe Schwachstellen entstehen können, wenn scheinbar harmlose Features wie Logging, Namensauflösung und dynamisches Laden von Klassen miteinander kombiniert werden.

Inhaltsverzeichnis

  • 1. Projektbeschreibung

    • 1.1 Ziel der Seminararbeit
    • 1.2 Überblick über die Demonstration
  • 2. Was ist Log4Shell?

  • 3. Technische Komponenten im Detail

    • 3.1 Log4j - Funktionsweise
    • 3.2 JNDI - Lookup-Mechanismus
    • 3.3 LDAP - Aufbau und Rolle
    • 3.4 Allgemeiner Ablauf Log4Shell
  • 4. Projektstruktur und Setup

    • 4.1 Verzeichnisübersicht
    • 4.2 Voraussetzungen
    • 4.3 Setup
  • 5. Demo des Projekts

  • 6. Schutzmaßnahmen

  • 7. Fazit

  • 8. Quellen

1. Projektbeschreibung

1.1 Ziel der Seminararbeit

Ziel dieser Seminararbeit ist es, ein tiefgehendes Verständnis für die Log4Shell-Sicherheitslücke (CVE-2021-44228) zu vermitteln, die im Dezember 2021 bekannt wurde und als eine der kritischsten Sicherheitslücken der letzten Jahre eingestuft wurde. In der Arbeit werden sowohl die theoretischen Grundlagen erklärt, als auch eine praktische Demonstration der Schwachstelle gezeigt.

1.2 Überblick über die Demonstration

Zur praktischen Veranschaulichung der Log4Shell-Sicherheitslücke wurde in diesem Repository eine isolierte und containerisierte Umgebung aufgebaut, die den vollständigen Angriffsablauf reproduzierbar darstellt. Die Demonstration basiert auf drei zentralen Komponenten:

  • vulnerable-app: Eine absichtlich verwundbare Spring Boot-Anwendung mit Log4j in Version 2.14.1. Sie loggt den User-Agent-Header aus dem HTTP-Request, welchen die Angreifer manipulieren können, um die Schwachstelle auszunutzen.
  • ldap-server: Ein Fork des bekannten Tools marshalsec, das als LDAP-Server fungiert. Dieser Server ist unter der Kontrolle des Angreifers und liefert eine Referenz auf eine bösartige Java-Klasse, die später ausgeführt wird.
  • payload-server: Ein einfacher HTTP-Server, der eine bösartige Java-Klasse (Exploit.class) ausliefert. Wie auch der LDAP-Server ist dieser Server unter der Kontrolle des Angreifers.

Hinweis: Nähere Informationen zum Setup und zur Ausführung der Demonstration finden sich im Abschnitt 4. Projektstruktur und Setup und 5. Demo des Projekts.

2. Was ist Log4Shell?

Log4Shell ist der Name einer kritischen Sicherheitslücke in der Java-Bibliothek Log4j mit der Bezeichnung CVE-2021-44228. Sie ermöglicht es einem Angreifer, mit minimalem Aufwand beliebigen Code auf einem entfernten Server auszuführen (Remote Code Execution, kurz RCE).

Die Schwachstelle betrifft Log4j in den Versionen 2.0 bis 2.14.1 und ist so gravierend, dass sie von vielen Sicherheitsbehörden, darunter dem BSI (Bundesamt für Sicherheit in der Informationstechnik), mit der höchste Risikostufe eingestuft wurde.

Log4Shell ist deshalb besonders gefährlich, weil ...

  • Log4j extrem weit verbreitet ist. Es wird von Spieleservern bis hin zu Enterprise-Anwendungen genutzt.
  • keine Authentifizierung notwendig ist, jeder anonyme externe Angreifer kann potenziell Schaden anrichten.
  • der Angriffsvektor trivial ist, oft reicht es eine manipulierte Zeichenkette an die Anwendung zu senden.
  • die Funktionalität in Log4j, um diese Schwachstelle auszunutzen, standardmäßig aktiviert ist.

Die eigentliche Ursache liegt in einer Funktionalität von Log4j, die es erlaubt, dynamische Inhalte in Log-Nachrichten über sogenannte Lookups zu laden. In Kombination mit JNDI (Java Naming and Directory Interface) und dem Protokoll LDAP (Lightweight Directory Access Protocol) erlaubt dies, entfernte schädliche Java-Klassen zu laden und auszuführen.

Die Entdeckung und Veröffentlichung der Schwachstelle löste weltweit eine Sicherheitswelle aus. Viele Systeme mussten umgehend gepatcht oder ausgeschalten werden. In der Folgezeit wurden weitere verwandte Schwachstellen (z. B. CVE-2021-45046) bekannt, was zeigt, wie tiefgehend und gefährlich die Problematik war.

Im Folgenden werden die beteiligten Technologien und deren Zusammenspiel im Detail erläutert, um ein tieferes Verständnis für die Schwachstelle zu entwickeln.

3. Technische Komponenten im Detail

3.1 Log4j - Funktionsweise

Log4j ist eine von Apache erstellte Bibliothek zur Protokollierung von Ereignissen in Java-Anwendungen. Logging ist in der Softwareentwicklung ein zentrales Werkzeug, um Systeme zu überwachen oder Fehler zu analysieren. Log4j gehört zu den bekanntesten und meistgenutzten Logging-Frameworks im Java-Ökosystem und wird sowohl in kleinen Anwendungen als auch in großen Unternehmenssystemen eingesetzt.

Warum Logging?

Während ein Programm läuft, treten beispielsweise folgende Ereignisse auf:

  • Benutzeranfragen
  • interne Zustandsänderungen
  • Fehlermeldungen

Diese Ereignisse lassen sich mit Logs dokumentieren, meist als Textausgabe in der Konsole, in Dateien oder über Netzwerkprotokolle an zentrale Logserver. Durch sinnvolles Logging lässt sich nachvollziehen, was eine Anwendung wann getan hat.

Was bietet Log4j?

Log4j bietet eine flexible, hochgradig konfigurierbare Infrastruktur zur Erzeugung und Verarbeitung von Log-Nachrichten. Zu den zentralen Funktionen gehören:

  • Log-Level: Es gibt verschiedene Wichtigkeitsstufen (z. B. DEBUG, INFO, WARN, ERROR), mit denen sich steuern lässt, wie detailliert geloggt werden soll.
  • Appenders: Log-Ausgaben können an verschiedene Ziele geleitet werden (z. B. Konsole, Datei oder entfernte Server).
  • Layouts: Mit Layouts lässt sich das Format der Log-Nachricht definieren (z. B. Zeitstempel, Thread, Nachricht).

Weitere Features, die für die Seminararbeit relevant sind, werden in späteren Abschnitten behandelt, insbesondere die Platzhalter-Funktionalität und die Lookup-Funktionalität.

Einfaches Beispiel

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

public class Example {
    private static final Logger logger = LogManager.getLogger();

    public static void main(String[] args) {
        logger.info("Starte Anwendung...");
    }
}

In diesem einfachen Beispiel wird eine Logger-Instanz erstellt oder abgerufen, falls sie bereits existiert. Anschließend wird eine Log-Nachricht auf der INFO-Stufe ausgegeben. Log4j kümmert sich um die Formatierung und Ausgabe der Nachricht, basierend auf der Konfiguration. Eine Beispielkonfiguration könnte wie folgt aussehen:

<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
Tool herunterladen