192.168.2.123 08:00:27:75:0b:06 PCS Systemtechnik GmbH
Analyse: `arp-scan -l` identifiziert aktive Hosts im lokalen Netzwerk.
Bewertung: Der Host `192.168.2.123` (VirtualBox VM) wird als Ziel identifiziert.
Empfehlung (Pentester): Ziel-IP `192.168.2.123` für weitere Scans verwenden.
Empfehlung (Admin): Netzwerk-Monitoring implementieren.
192.168.2.123 rookie.vln
Analyse: Lokale `/etc/hosts`-Datei wird bearbeitet, um `192.168.2.123` dem Namen `rookie.vln` zuzuordnen.
Bewertung: Vorbereitung für Web-Scans, erleichtert die Ansprache des Ziels.
Empfehlung (Pentester): Hostnamen `rookie.vln` verwenden.
Empfehlung (Admin): Lokale Angreifer-Konfiguration.
- Nikto v2.5.0 [...] + Target IP: 192.168.2.123 + Target Hostname: 192.168.2.123 + Target Port: 80 + Start Time: 2023-07-20 17:18:38 (GMT2) [...] + Server: Apache/2.4.29 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + /robots.txt: contains 1 entry which should be manually viewed. [...] + Apache/2.4.29 appears to be outdated [...]. + /: Server may leak inodes via ETags [...] + OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS . + /icons/README: Apache default file found. [...] [...] + End Time: 2023-07-20 17:18:56 (GMT2) (18 seconds) [...]
Analyse: `nikto` scannt Port 80 und findet: * Veralteten Apache 2.4.29 (Ubuntu). * Fehlende Sicherheitsheader. * Eine `robots.txt`-Datei mit einem Eintrag (siehe Nmap für Details). * Mögliches Inode-Leak über ETags. * Standard-Datei `/icons/README`. **Datum extrahiert:** 2023-07-20.
Bewertung: Bestätigt den Webserver und dessen veraltete Version. Der `robots.txt`-Eintrag ist der wichtigste Hinweis.
Empfehlung (Pentester): Untersuche `robots.txt`. Führe weitere Web-Enumeration durch (`gobuster`, `dirb`). Recherchiere Schwachstellen für Apache 2.4.29.
Empfehlung (Admin): Aktualisiere Apache. Implementiere Sicherheitsheader. Entferne Standarddateien.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-20 17:18 CEST Nmap scan report for rookie.vln (192.168.2.123) Host is up (0.00015s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.5e | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-rw-r-- 1 ftp ftp 1477 Jul 25 2020 anna.zip | -rw-rw-r-- 1 ftp ftp 1477 Jul 25 2020 ariel.zip [...] | -rw-rw-r-- 1 ftp ftp 170 Jan 10 2018 welcome.msg |_-rw-rw-r-- 1 ftp ftp 1477 Jul 25 2020 zlatan.zip 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: [...] 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) | http-robots.txt: 1 disallowed entry |_/logs/ |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.29 (Ubuntu) MAC Address: 08:00:27:75:0B:06 (Oracle VirtualBox virtual NIC) [...] OS details: Linux 4.15 - 5.6 [...] Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.15 ms rookie.vln (192.168.2.123) [...]
Analyse: Der vollständige Nmap-Scan (`-A` für OS/Version/Skripte/Traceroute) identifiziert drei offene Ports: * Port 21 (FTP): ProFTPD 1.3.5e. **Anonymer Login ist erlaubt!** Das Verzeichnis enthält viele `.zip`-Dateien (anna.zip, ariel.zip, etc.) und eine `welcome.msg`. * Port 22 (SSH): OpenSSH 7.6p1 (Ubuntu). * Port 80 (HTTP): Apache 2.4.29 (Ubuntu). `robots.txt` verbietet `/logs/`.
Bewertung: Der anonyme FTP-Zugriff ist der **kritischste Fund** und der wahrscheinlichste Einstiegspunkt. Die ZIP-Dateien sind sehr verdächtig und enthalten möglicherweise Zugangsdaten oder Hinweise. Der `/logs/`-Eintrag in `robots.txt` sollte ebenfalls untersucht werden.
Empfehlung (Pentester):
1. **Priorität:** Verbinde dich anonym per FTP und lade alle Dateien herunter, insbesondere die ZIP-Dateien.
2. Untersuche den Inhalt der `/logs/`-Ressource auf dem Webserver.
3. Behalte SSH für späteren Zugriff im Auge.
Empfehlung (Admin):
1. **Dringend:** Deaktiviere anonymen FTP-Zugriff, es sei denn, er ist absolut notwendig und sicher konfiguriert (z.B. nur Lesezugriff auf bestimmte, unkritische Dateien).
2. Überprüfe den Inhalt der öffentlich zugänglichen FTP-Dateien.
3. Aktualisiere ProFTPD, OpenSSH und Apache.
4. Überprüfe den `/logs/`-Eintrag in `robots.txt` und sichere ggf. das Verzeichnis.
21/tcp open ftp ProFTPD 1.3.5e 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Analyse: Bestätigt die drei offenen Ports 21, 22 und 80.
Bewertung: Schnellübersicht, keine neuen Informationen.
Empfehlung (Pentester/Admin): Siehe vorheriger Nmap-Scan.
[...] http://rookie.vln/index.html (Status: 200) [Size: 10918] http://rookie.vln/robots.txt (Status: 200) [Size: 17] [...]
Analyse: `gobuster` scannt das Web-Root-Verzeichnis und findet nur `index.html` und `robots.txt`. Das in `robots.txt` erwähnte `/logs/`-Verzeichnis wird nicht gefunden (möglicherweise weil es nicht existiert oder die `-b`-Option es ausblendet, falls es 301 zurückgibt).
Bewertung: Der Webserver scheint auf Root-Ebene wenig Angriffsfläche zu bieten. Der Fokus verlagert sich stark auf den FTP-Dienst.
Empfehlung (Pentester): Konzentriere dich auf den FTP-Dienst.
Empfehlung (Admin): Keine neuen Erkenntnisse für den Webserver.
Connected to 192.168.2.123.
220 ProFTPD 1.3.5e Server (Debian) [ffff:192.168.2.123]
Name (192.168.2.123:cycat): anonymous
331 Anonymous login ok, send your complete email address as your password
Password: [leer]
230-Welcome, archive user anonymous@PC192-168-2-199 !
[...]
230 Anonymous access granted, restrictions apply
Remote system type is UNIX.
Using binary mode to transfer files.
Analyse: Eine manuelle Verbindung zum FTP-Server wird aufgebaut. Der Login erfolgt als Benutzer `anonymous` mit einem leeren oder beliebigen Passwort.
Bewertung: Der anonyme Login ist erfolgreich und bestätigt die Nmap-Ergebnisse.
Empfehlung (Pentester): Lade alle interessanten Dateien herunter (insbesondere die ZIP-Dateien).
Empfehlung (Admin): Deaktiviere anonymen FTP-Zugriff.
--2023-07-20 17:21:47-- ftp://anonymous:*password*@192.168.2.123/ => 192.168.2.123/.listing [...] Anmelden als anonymous … Angemeldet! [...] > LIST ... fertig. [...]
Analyse: `wget -r` wird verwendet, um rekursiv alle Dateien vom anonymen FTP-Server herunterzuladen. Es meldet sich als `anonymous` an.
Bewertung: Effiziente Methode, um alle Dateien vom FTP-Server lokal zu sichern.
Empfehlung (Pentester): Untersuche die heruntergeladenen Dateien lokal.
Empfehlung (Admin): Keine direkten Maßnahmen.
insgesamt 48 -rw-r--r-- 1 root root 1477 25. Jul 2020 anna.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 ariel.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 bud.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 cathrine.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 homer.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 jessica.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 john.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 marge.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 miriam.zip -rw-r--r-- 1 root root 1477 25. Jul 2020 tom.zip -rw-r--r-- 1 root root 170 10. Jan 2018 welcome.msg -rw-r--r-- 1 root root 1477 25. Jul 2020 zlatan.zip
Welcome, archive user %U@%R ! [...]
Analyse: Das Verzeichnis mit den heruntergeladenen Dateien wird aufgelistet. Die ZIP-Dateien und `welcome.msg` sind sichtbar. `welcome.msg` enthält nur eine generische Vorlage.
Bewertung: Die ZIP-Dateien sind die primären Ziele für die weitere Untersuchung.
Empfehlung (Pentester): Versuche, die ZIP-Dateien zu entpacken und ihre Passwörter zu knacken.
Empfehlung (Admin): Keine neuen Erkenntnisse.
Archive: anna.zip [anna.zip] id_rsa password: skipping: id_rsa incorrect password Archive: ariel.zip [ariel.zip] id_rsa password: skipping: id_rsa incorrect password [...] Archive: tom.zip [tom.zip] id_rsa password: skipping: id_rsa incorrect password [...]
Analyse: Eine Schleife versucht, alle ZIP-Dateien zu entpacken. Alle Versuche scheitern mit "incorrect password", aber es wird bestätigt, dass sie eine Datei namens `id_rsa` enthalten und passwortgeschützt sind.
Bewertung: Die ZIP-Dateien enthalten verschlüsselte private SSH-Schlüssel (`id_rsa`). Die Passwörter zum Entpacken der ZIP-Archive müssen geknackt werden.
Empfehlung (Pentester): Verwende `zip2john` (nicht im Log gezeigt, aber notwendig), um die Passwort-Hashes aus den ZIP-Dateien zu extrahieren, und knacke sie dann mit `john`.
Empfehlung (Admin): Weise Benutzer an, ZIP-Archive (insbesondere solche mit sensiblen Daten wie SSH-Schlüsseln) mit starken Passwörtern zu schützen.
[...]
Loaded 1 password hash (PKZIP [32/64])
[...]
iubire (tom.zip/id_rsa)
[...]
Session completed.
[...]
Loaded 1 password hash (PKZIP [32/64])
[...]
catwoman (cathrine.zip/id_rsa)
[...]
Session completed.
Analyse: `john` wird verwendet, um die (angenommenen) Hash-Dateien für `tom.zip` und `cathrine.zip` zu knacken. * Passwort für `tom.zip` ist `iubire`. * Passwort für `cathrine.zip` ist `catwoman`.
Bewertung: Zwei ZIP-Passwörter wurden erfolgreich geknackt. Dies ermöglicht den Zugriff auf die darin enthaltenen `id_rsa`-Schlüssel.
Empfehlung (Pentester): Entpacke `tom.zip` mit dem Passwort `iubire`. Untersuche den extrahierten `id_rsa`-Schlüssel. Prüfe, ob er mit einer Passphrase geschützt ist. Versuche, dich als Benutzer `tom` per SSH anzumelden.
Empfehlung (Admin): Benutzer sollten keine schwachen, im Wörterbuch enthaltenen Passwörter verwenden.
Hi Users, be carefull with your keys. Find them in %yourname%.zip. The passwords are the old ones. Regards root
Hi Admins, be carefull with your keys. Find them in %yourname%.zip. The passwords are the old ones. Regards root
Analyse: Die versteckten Dateien `.@users` und `.@admins` (Base64-kodiert) werden vom FTP-Server heruntergeladen und angezeigt. Sie enthalten dieselbe Nachricht: Schlüssel sind in den ZIP-Dateien, Passwörter sind "die alten".
Bewertung: Bestätigt, dass die ZIP-Dateien die SSH-Schlüssel enthalten. Der Hinweis "alte Passwörter" ist vage, könnte sich aber auf die ZIP-Passwörter beziehen, die wir gerade geknackt haben, oder auf die Passphrasen der Schlüssel selbst.
Empfehlung (Pentester): Fahre mit der Analyse der extrahierten `id_rsa`-Datei von `tom` fort.
Empfehlung (Admin): Hinterlasse keine solchen Hinweise auf öffentlich zugänglichen Servern.
550 revshell.php: Operation not permitted
550 /home: No such file or directory
Analyse: Versuche, eine Datei hochzuladen (`put`) oder das Verzeichnis zu wechseln (`cd`), scheitern.
Bewertung: Bestätigt, dass der anonyme FTP-Zugriff keine Schreibrechte oder die Möglichkeit zum Verzeichniswechsel hat.
Empfehlung (Pentester): Der FTP-Dienst dient nur zum Herunterladen der Schlüssel.
Empfehlung (Admin): Korrekte Konfiguration (keine Schreibrechte für anonyme Benutzer).
The authenticity of host '192.168.2.123 (192.168.2.123)' can't be established. [...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes [...] Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-112-generic x86_64) [...] * System restart required * Last login: Sat Jul 25 12:25:33 2020 from 192.168.178.143 tom@funbox2$
Analyse: Es wird versucht, sich per SSH als Benutzer `tom` anzumelden, unter Verwendung des privaten Schlüssels (`id_rsa`), der aus `tom.zip` extrahiert wurde. Der Befehl fragt **nicht** nach einer Passphrase für den Schlüssel.
Bewertung: Der Login ist erfolgreich! Der private Schlüssel von `tom` war nicht durch eine Passphrase geschützt. Der initiale Zugriff als Benutzer `tom` wurde erreicht.
Empfehlung (Pentester): Beginne mit der Post-Exploitation-Enumeration als `tom`. Prüfe `sudo -l`, SUID-Dateien, Kernel-Version etc.
Empfehlung (Admin): Schule Benutzer darin, ihre SSH-Schlüssel immer mit einer starken Passphrase zu schützen. Überwache SSH-Logins.
66 40 -rwsr-xr-x 1 root root 40152 Jun 14 2022 /snap/core/15511/bin/mount [...] 2830 53 -rwsr-xr-x 1 root root 54256 Nov 29 2022 /snap/core/15511/usr/bin/passwd 2940 134 -rwsr-xr-x 1 root root 136808 Jan 17 2023 /snap/core/15511/usr/bin/sudo [...] 133931 44 -rwsr-xr-x 1 root root 44664 Nov 29 2022 /bin/su [...] 7426 112 -rwsr-xr-x 1 root root 113528 Jul 10 2020 /usr/lib/snapd/snap-confine [...] 8628 148 -rwsr-xr-x 1 root root 149080 Apr 4 12:44 /usr/bin/sudo [...] 789 24 -rwsr-xr-x 1 root root 22520 Mar 27 2019 /usr/bin/pkexec [...] 496 52 -rwsr-sr-x 1 daemon daemon 51464 Feb 20 2018 /usr/bin/at [...]
Analyse: Die Suche nach SUID-Dateien wird als `tom` ausgeführt. Sie findet viele Standard-Binaries, darunter `/usr/bin/sudo` und `/usr/bin/pkexec`.
Bewertung: `/usr/bin/sudo` existiert, `sudo -l` sollte geprüft werden. `/usr/bin/pkexec` könnte für PwnKit anfällig sein, falls die Version passt.
Empfehlung (Pentester): Führe `sudo -l` aus. Prüfe die Kernel-Version (`uname -a`) auf Anfälligkeit für bekannte Exploits (wie PwnKit für `pkexec`).
Empfehlung (Admin): Halte das System gepatcht. Überprüfe SUID-Berechtigungen.
tom
total 40 drwxr-xr-x 5 tom tom 4096 Jul 25 2020 . drwxr-xr-x 3 root root 4096 Jul 25 2020 .. -rw------- 1 tom tom 6 Jul 25 2020 .bash_history -rw-r--r-- 1 tom tom 220 Apr 4 2018 .bash_logout -rw-r--r-- 1 tom tom 3771 Apr 4 2018 .bashrc drwxr-xr-x 2 tom tom 4096 Jul 25 2020 .cache drwxr-xr-x 3 tom tom 4096 Jul 25 2020 .gnupg -rw------- 1 tom tom 295 Jul 25 2020 .mysql_history -rw-r--r-- 1 tom tom 807 Apr 4 2018 .profile drwx------ 2 tom tom 4096 Jul 25 2020 .ssh -rw-r--r-- 1 tom tom 0 Jul 25 2020 .sudo_as_admin_successful -rw------- 1 tom tom 0 Jul 25 2020 .viminfo
root:x:0:0:root:/root:/bin/bash tom:x:1000:1000:tom:/home/tom:/bin/rbash
Analyse: Das Home-Verzeichnis von `tom` wird aufgelistet. Es enthält Standard-Konfigurationsdateien und das `.ssh`-Verzeichnis. Die `grep`-Ausgabe zeigt, dass `tom` die **Restricted Bash (`/bin/rbash`)** als Login-Shell hat.
Bewertung: Die Verwendung von `rbash` ist ein wichtiger Fund. Sie schränkt die Befehle ein, die `tom` direkt ausführen kann (z.B. kein `cd`, keine Befehle mit `/`, eingeschränkte Variablenmanipulation). Dies erklärt möglicherweise, warum die nachfolgende Privilege Escalation einen Umweg über LXD nimmt, anstatt einfachere Methoden zu nutzen.
Empfehlung (Pentester): Versuche, aus der `rbash` auszubrechen (z.B. über Editoren wie `vi`/`nano`, Pager wie `less`/`more`, Skriptsprachen, oder indem man den `PATH` manipuliert, falls möglich). Die LXD-Methode umgeht die `rbash`-Einschränkungen, indem sie Prozesse außerhalb dieser Shell startet.
Empfehlung (Admin): `rbash` bietet nur begrenzten Schutz und kann oft umgangen werden. Verwende robustere Methoden zur Rechteeinschränkung (z.B. `sudo` mit spezifischen erlaubten Befehlen, AppArmor, SELinux).
Analyse: Die Privilege Escalation erfolgt durch Ausnutzung der Mitgliedschaft des Benutzers `tom` in der `lxd`-Gruppe (diese Mitgliedschaft wird im Log nicht explizit gezeigt, ist aber für den Exploit notwendig und wird daher angenommen). Mitglieder der `lxd`-Gruppe können mit dem LXD-Container-Daemon interagieren. Der Exploit (basierend auf EDB 46978) nutzt dies aus, um das Root-Dateisystem des Hosts (`/`) in einen neu erstellten Container einzubinden und somit uneingeschränkten Zugriff auf alle Dateien als Root zu erhalten.
Bewertung: Dies ist eine bekannte und effektive Methode zur Privilege Escalation, wenn ein Benutzer Mitglied der `lxd`-Gruppe ist. Sie umgeht Shell-Einschränkungen wie `rbash`.
Empfehlung (Pentester): Überprüfe immer die Gruppenmitgliedschaften (`id`) eines kompromittierten Benutzers. Die `docker`- und `lxd`-Gruppen sind häufige Ziele für PE.
Empfehlung (Admin): Füge Benutzer nur dann zur `lxd`-Gruppe hinzu, wenn sie unbedingt Container verwalten müssen. Die Mitgliedschaft in dieser Gruppe ist quasi gleichbedeutend mit Root-Rechten auf dem Host.
[...]
Serving HTTP on 0.0.0.0 port 8000 (...)
Image imported with fingerprint: b350b46f660e...
[...]
-------------------------------------------------------------------------------- Hat nicht Funktioniert, ich habe es dann mit einem exploit versucht --------------------------------------------------------------------------------
Analyse: Der erste Versuch zur LXD-Ausnutzung bestand darin, manuell ein Alpine-Image mit `distrobuilder` zu erstellen, die Komponenten auf das Ziel zu übertragen und mit `lxc image import` zu importieren. Laut Kommentar im Log funktionierte dieser Ansatz nicht wie erwartet.
Bewertung: Dokumentiert einen fehlgeschlagenen Versuch, bevor der erfolgreiche Exploit eingesetzt wurde.
Empfehlung (Pentester): Wenn eine Methode fehlschlägt, alternative Ansätze oder bekannte Exploit-Skripte ausprobieren.
Empfehlung (Admin): Keine direkten Maßnahmen.
[...]
Image imported with fingerprint: cd73881adaac[...] [*] Listing images... [...] Creating privesc Device giveMeRoot added to privesc
uid=0(root) gid=0(root)
Analyse: Der Exploit basierend auf EDB 46978 wird verwendet: 1. Ein Skript (`build-alpine`?) und/oder der Exploit-Code selbst werden nach `/dev/shm` heruntergeladen (ein für alle beschreibbares Verzeichnis im RAM). 2. Das Exploit-Skript wird ausführbar gemacht und gestartet, wobei es ein Alpine-Image (`.tar.gz`) als Argument benötigt. 3. Das Skript automatisiert den Prozess des Image-Imports, der Container-Erstellung (`privesc`) und des Einhängens des Host-Root-Dateisystems in den Container. 4. Es wird eine Shell innerhalb des Containers gestartet, die sofort Root-Rechte (`uid=0`) hat und Zugriff auf das Host-Dateisystem (typischerweise unter `/mnt/root` im Container) besitzt.
Bewertung: Die Privilege Escalation mittels des LXD-Exploits war erfolgreich. Der Benutzer `tom` konnte aufgrund seiner (angenommenen) Mitgliedschaft in der `lxd`-Gruppe Root-Rechte auf dem Host-System erlangen.
Empfehlung (Pentester): Greife auf das Host-Dateisystem zu (z.B. `cd /mnt/root/root`), um die Root-Flag zu finden.
Empfehlung (Admin): Verwalte die Mitgliedschaft in der `lxd`-Gruppe streng. Halte LXD aktuell.
Maildir flag.txt
___ _ _ _ _ _ / __|___ _ _ __ _ _ _ __ _| |_ _ _| |__ _| |_(_)___ _ _ __| | | (__/ _ \ ' \/ _` | '_/ _` | _| || | / _` | _| / _ \ ' \(_-<_| \___\___/_||_\__, |_| \__,_|\__|\_,_|_\__,_|\__|_\___/_||_/__(_) |___/ [...] Nice work! This CTF was built with love in every byte by @berzerk0 on Twitter. [...]
Analyse: Aus der Root-Shell (innerhalb des Containers, aber mit Zugriff auf das Host-Dateisystem) wird das Verzeichnis `/root` des Hosts aufgesucht. Die Datei `flag.txt` wird gefunden und ihr Inhalt angezeigt.
Bewertung: Die Root-Flag (in Form der ASCII-Art und Nachricht) wurde erfolgreich gefunden.
Empfehlung (Pentester): Dokumentiere die Root-Flag. Suche die User-Flag (vermutlich `/home/tom/user.txt`, obwohl `tom` `rbash` hat, könnte eine Flag dort liegen).
Empfehlung (Admin): Keine spezifische Aktion bezüglich der Flag.