Mit dem Befehl arp-scan -l
suchen wir im lokalen Netzwerk nach
aktiven Hosts. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.128 mit
der MAC-Adresse 08:00:27:ac:1f:1d verbunden ist und von PCS Systemtechnik
GmbH stammt.
Diese Information ist nützlich, um das Zielsystem im Netzwerk zu identifizieren und weitere Untersuchungen durchzuführen. Die MAC-Adresse kann auch Hinweise auf den Hersteller der Netzwerkkarte geben.
Der Befehl nmap -sC -sS -sV -A -T5 192.168.2.128 -p- -Pn
führt einen
umfassenden Nmap-Scan auf dem Zielsystem durch. Die Option -sC
führt
Standard-Skripte aus, -sS
führt einen SYN-Scan durch, -sV
ermittelt
die Version der Dienste, -A
aktiviert aggressive Scans, -T5
setzt die
höchste Scan-Geschwindigkeit, -p-
scannt alle Ports und -Pn
überspringt
den Host-Discovery-Prozess.
Die Ausgabe zeigt, dass die Ports 21 (FTP), 80 (HTTP), 139 (NetBIOS) und 445 (SMB) offen sind. Dies deutet auf potenzielle Angriffspunkte hin, die in den nächsten Schritten genauer untersucht werden sollten.
Dieser umfassende Nmap-Scan liefert detaillierte Informationen über das Zielsystem. Wir erfahren, dass auf Port 21 ein vsFTPd 3.0.3 Server läuft, der anonyme Logins erlaubt. Auf Port 80 läuft ein Apache httpd 2.4.38 Server, der jedoch mit einem "403 Forbidden" antwortet. Die Ports 139 und 445 sind für Samba SMB geöffnet.
Zusätzlich erhalten wir Informationen über die MAC-Adresse, den Gerätetyp (Linux), die Netzwerkdistanz und Details zur SMB-Konfiguration. Die fehlende Message Signing-Funktion bei SMB ist ein potenzielles Sicherheitsrisiko.
Die Möglichkeit eines anonymen FTP-Logins ist ein besonders interessanter Fund, da dies oft zu weiteren Schwachstellen führen kann. Wir werden dies im nächsten Schritt genauer untersuchen.
In dieser Phase konzentrieren wir uns auf die Enumeration der Webdienste, um versteckte Dateien, Verzeichnisse und potenzielle Schwachstellen zu finden. Wir verwenden Tools wie Nikto und Gobuster, um die Webserver-Konfiguration und die verfügbaren Ressourcen zu analysieren.
Das Ziel ist es, Angriffspunkte zu identifizieren, die über die Standardkonfiguration hinausgehen. Dies kann die Aufdeckung von veralteten Softwareversionen, unsicheren Konfigurationen oder vergessenen Dateien umfassen.
Der Nikto-Scan zeigt, dass der Webserver einige Sicherheitslücken aufweist. Die fehlenden X-Frame-Options und X-Content-Type-Options Header können zu Clickjacking- und MIME-Sniffing-Angriffen führen. Die veraltete Apache-Version kann ebenfalls Schwachstellen enthalten.
Die Entdeckung der /icons/README
Datei ist ebenfalls ein potenzielles
Problem, da diese Datei Informationen über die Serverkonfiguration preisgeben
kann. Wir sollten diese Informationen nutzen, um unsere Angriffsstrategie
weiter zu verfeinern.
enum4linux -a 192.168.2.128
listet Informationen über Samba-Freigaben und Benutzer auf dem Zielsystem auf.
Es zeigt die NetBIOS-Namen, die verfügbaren Freigaben (print$, IPC$) und die
aufgezählten Benutzer-IDs (SIDs).
Die Ausgabe deutet darauf hin, dass der Benutzer "alphonse" existiert. Die Informationen über Samba-Freigaben und Benutzer können verwendet werden, um Brute-Force-Angriffe oder andere Exploits zu starten.
Die FTP-Anmeldung als anonymer Benutzer ist erfolgreich. Wir können die
Verzeichnisse dev
und pub
sehen. Im Verzeichnis dev
befindet sich die Datei DNAnalyzer.apk
, die wir herunterladen werden. Der
Versuch, eine Datei hochzuladen (put user.txt
), wird wahrscheinlich mit
einer Fehlermeldung (Permission denied) abgelehnt.
Das erfolgreiche Herunterladen der APK-Datei ist ein wichtiger Schritt. Wir werden diese Datei nun analysieren, um weitere Informationen über das System und potenzielle Schwachstellen zu finden.
In dieser Phase versuchen wir, initialen Zugriff auf das System zu erlangen. Wir nutzen die Informationen aus der Reconnaissance- und Web Enumeration-Phase, um Schwachstellen auszunutzen und uns Zugang zu verschaffen.
Wir werden uns auf die identifizierten Webdienste konzentrieren und versuchen, Anmeldedaten zu finden oder Sicherheitslücken in der Webanwendung auszunutzen.
Wir fügen die IP-Adresse des Zielsystems (192.168.2.128) mit dem Hostnamen
"alphonse" in die /etc/hosts
Datei ein, um die Kommunikation mit dem
Webserver zu erleichtern.
Ein direkter Aufruf der login.php
Seite mit curl
liefert eine
Fehlermeldung, da die Parameter username
und password
fehlen.
Wir registrieren einen neuen Benutzer mit dem Benutzernamen "test", dem
Passwort "test" und einer DNA-Zeichenkette "test" über die
register.php
Seite. Die Antwort bestätigt, dass der Benutzer
erfolgreich registriert wurde.
Nach der Registrierung versuchen wir, uns mit den gleichen Anmeldedaten anzumelden. Die Antwort enthält ein JWT (JSON Web Token), das für die Authentifizierung verwendet werden kann.
Das JWT enthält Informationen wie den Aussteller ("Alphonse"), die Zielgruppe ("THE_AUDIENCE"), die Ausstellungszeit (iat), den "Nicht-vor"-Zeitpunkt (nbf), die Ablaufzeit (exp) und die Benutzerdaten (ID und Benutzername).
Wir verwenden ffuf
, um weitere Verzeichnisse auf dem Webserver zu
entdecken. Die Ausgabe zeigt, dass die Verzeichnisse api
,
portal
und vendor
existieren.
Wir verwenden gobuster
, um den api
Pfad zu enumerieren. Wir
finden login.php
(Status 403) und register.php
(Status 200).
Durch eine Enumeration mit gobuster
finden wir den portal
Pfad, darunter auch
die Datei index.php
(Status 200).
Die index.php
Seite enthält ein Login-Formular mit den Feldern
user
und pass
. Dies ist ein potenzieller Angriffspunkt für
Brute-Force- oder Dictionary-Angriffe.
In diesem Abschnitt demonstrieren wir die Ausnutzung einer Cross-Site Scripting (XSS) Schwachstelle in der Webanwendung.
Wir registrieren einen neuen Benutzer mit dem Benutzernamen "test2", dem
Passwort "test2" und einer DNA-Zeichenkette, die einen
-Tag
enthält. Dieses Tag versucht, ein Bild von unserer eigenen Maschine (192.168.2.199)
abzurufen.
**Wichtiger Hinweis:** Ich habe die Zeichen `<` und `>` durch ihre entsprechenden HTML-Entitäten ersetzt (`<` und `>`), um zu verhindern, dass der Browser den IMG-Tag interpretiert und ausführt. Dies ist notwendig, um den Code korrekt im Bericht darzustellen.
Wir starten einen Netcat-Listener auf unserer Maschine, um zu überprüfen, ob
der
-Tag erfolgreich ausgeführt wird und eine Anfrage an unsere
Maschine sendet.
Nach einigen Minuten sehen wir eine Anfrage von der Zielmaschine (192.168.2.128) an unsere Maschine (192.168.2.199). Dies bestätigt, dass die XSS-Schwachstelle ausgenutzt werden konnte und der bösartige Code im Browser des Benutzers ausgeführt wurde.
Diese XSS-Schwachstelle kann verwendet werden, um Cookies zu stehlen, Benutzer umzuleiten oder andere bösartige Aktionen im Namen des Benutzers durchzuführen.
Nachdem wir initialen Zugriff auf das System erlangt haben, versuchen wir,
uns höhere Privilegien zu verschaffen. Wir suchen nach Möglichkeiten,
uns vom Benutzer www-data
zum Benutzer root
zu eskalieren.
Wir nutzen die XSS-Schwachstelle, um die Cookies des Benutzers zu stehlen. Wir registrieren einen neuen Benutzer mit einer DNA-Zeichenkette, die ein svg-Tag enthält. Dieses Tag führt JavaScript-Code aus, der die Cookies des Benutzers an unsere Maschine sendet.
**Wichtiger Hinweis:** Ich habe die Zeichen `<` und `>` durch ihre entsprechenden HTML-Entitäten ersetzt (`<` und `>`), um zu verhindern, dass der Browser den SVG-Tag interpretiert und ausführt. Dies ist notwendig, um den Code korrekt im Bericht darzustellen.
Wir starten einen Netcat-Listener auf unserer Maschine, um die gestohlenen Cookies zu empfangen.
Nach einigen Minuten sehen wir eine Anfrage von der Zielmaschine an unsere Maschine. Die Anfrage *sollte* die Cookies des Benutzers enthalten, aber aufgrund der Art, wie Cookies in HTTP-Anfragen übertragen werden, ist es möglich, dass die Informationen nicht direkt sichtbar sind. Sie könnten in den HTTP-Headern versteckt sein.
Wir installieren certbot
, um ein SSL-Zertifikat zu erstellen. Dies
ist möglicherweise für nachfolgende Schritte erforderlich, z.B. um eine
sichere Verbindung aufzubauen oder eine HTTPS-basierte Payload zu hosten.
Wir versuchen, ein SSL-Zertifikat zu erstellen, aber der Vorgang schlägt fehl, da eine gültige E-Mail-Adresse benötigt wird oder die Option `--register-unsafely-without-email` verwendet werden muss. Dies ist ein optionaler Schritt und das Scheitern hier blockiert uns nicht unbedingt.
Wir betrachten ein Tutorial um mygg.js zu nutzen, um eine Man-in-the-Middle (MitM) Angriffe zu starten. Dafür benötigen wir ein SSL Zertifikat, das in dem oberen befehl installiert werden kann. Die Konfiguration wird mit einer `config` variable festgelegt, damit der Webverkehr abgefangen wird.
Wir passen die mygg.js
Konfigurationsdatei an, um die Ziel-IP-Adresse
auf "192.168.2.128" zu setzen.
Wir führen mygg.js
aus, um einen Proxy-Server zu starten, der HTTP- und
HTTPS-Verbindungen abfängt. Der Payload Stager wird generiert, um
Browser zu "hooken".
wir registrieren einen neuen Benutzer, und schleusen Javascript Code rein.
Wir nutzen die XSS-Schwachstelle aus, um den Benutzer umzuleiten.
Wir haben den Browser erfolgreich gehockt.
Wir nutzen die XSS-Schwachstelle aus, um beliebigen Code auszuführen.
wir injizieren den befehl ls, um den Inhalt des Verzeichnisses aufzulisten.
wir injizieren den befehl id, um die Benutzerinformationen auszugeben.
wir erstellen eine Reverse Shell auf unserem System.
wir führen den id befehl aus und schauen, welche Sudo Rechte vorhanden sind.
leider haben wir keine Sudo rechte bekommen.
wir schauen die user flag an.
wir schauen uns die Benutzer an.
Dateirechte der /etc/passwd
Datei überprüfen.
Suche nach SUID Binaries, die von Root ausführbar sind. Dies könnte ein möglicher Weg zur Privilege Escalation sein. Das Binary /home/alphonse/Documents/rootme
ist interessant.
Überprüfe, ob das ausführbare Binary rootme
im Verzeichnis existiert.
Dateiliste im Home Verzeichnis von alphonse
Wir gehen in das Documents verzeichnis rein und sehen die rootme datei.
wir nutzen xxd, um den Inhalt der rootme datei anzuschauen und das passwort zu finden.
Wir sind jetzt als root
angemeldet. Fantastisch der root zugriff war erfolgreit nun haben wie unser Ziel erreicht.
Hier sind die Flags.
In dieser Phase sammeln wir Informationen über das Zielsystem. Dies ist entscheidend, um potenzielle Schwachstellen zu identifizieren. Wir verwenden verschiedene Tools, um Netzwerkdienste, offene Ports und andere relevante Details zu ermitteln.
Ziel ist es, ein umfassendes Bild der Systemarchitektur und der verfügbaren Angriffspunkte zu erhalten. Die gesammelten Informationen dienen als Grundlage für die weiteren Schritte im Pentesting-Prozess.