Durchführung von Webanwendungs-Penetrationstests mit Nmap

NmapBeginner
Jetzt üben

Einführung

In diesem Lab beschäftigen wir uns mit Penetrationstests für Webanwendungen, einem entscheidenden Aspekt der Informationssicherheit. Da Webanwendungen in verschiedensten Bereichen weit verbreitet sind, hat deren Sicherheit höchste Priorität. Ziel dieses Labs ist es, praktische Erfahrungen bei der Identifizierung und Ausnutzung von Schwachstellen in einer anfälligen Webanwendung zu sammeln, die auf einem Zielsystem gehostet wird. Dabei sollen ein Verständnis für gängige Schwachstellen in Webanwendungen sowie die Techniken zu deren Ausnutzung vermittelt werden.

Einrichten der Umgebung

In diesem Schritt richten wir die Lab-Umgebung ein und machen uns mit den Werkzeugen und dem Zielsystem vertraut.

Zuerst müssen wir die ID des Kali-Linux-Images ermitteln. Diese können Sie anzeigen, indem Sie das XFCE-Terminal auf dem Desktop per Doppelklick öffnen und den folgenden Befehl ausführen:

docker images

Nun müssen wir den Kali-Linux-Container starten, der als unsere Angriffsmaschine dient. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:

docker run -ti --network host image-id bash

Dieser Befehl startet einen neuen Kali-Linux-Container und ermöglicht Ihnen den Zugriff auf dessen Shell.

Öffnen Sie anschließend ein neues Terminal, um das Zielsystem zu starten – ein anfälliges System namens Metasploitable2. Führen Sie den folgenden Befehl aus, um die virtuelle Maschine zu starten:

sudo virsh start Metasploitable2

Warten Sie, bis das Zielsystem gestartet ist; dies kann 1 bis 3 Minuten dauern.

Sobald die virtuelle Maschine läuft, überprüfen Sie, ob Sie das Zielsystem vom Kali-Linux-Container aus anpingen können:

ping 192.168.122.102

Aufklärung und Informationsbeschaffung

In diesem Schritt führen wir eine Aufklärung durch und sammeln Informationen über das Zielsystem unter Verwendung verschiedener Techniken.

Zuerst scannen wir das Zielsystem mit dem Werkzeug nmap innerhalb des Kali-Linux-Containers, um offene Ports und laufende Dienste zu identifizieren:

nmap -sV -sC -oN nmap_scan.txt 192.168.122.102

Dieser Befehl führt einen TCP-Connect-Scan (-sC) durch, um offene Ports zu ermitteln, sowie einen Versions-Scan (-sV), um den Dienst und die Version auf jedem offenen Port zu identifizieren. Die Ausgabe wird in einer Datei namens nmap_scan.txt (-oN) gespeichert.

Der Scan nimmt einige Zeit in Anspruch. Sobald er abgeschlossen ist, überprüfen Sie die Datei nmap_scan.txt mit dem Befehl cat, um potenzielle Angriffsvektoren basierend auf den offenen Ports und Diensten zu identifizieren:

cat nmap_scan.txt

Als Nächstes führen wir eine Verzeichnis- und Datei-Enumeration auf dem Ziel-Webserver mit dem Werkzeug gobuster durch:

gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt

Dieser Befehl führt einen Brute-Force-Angriff auf Verzeichnisse und Dateien des Ziel-Webservers unter Verwendung der angegebenen Wortliste (-w) durch. Die Option -t legt die Anzahl der gleichzeitigen Threads fest, und die Option -o speichert die Ergebnisse in einer Datei namens gobuster_scan.txt.

Analysieren Sie die Datei gobuster_scan.txt, um interessante Verzeichnisse oder Dateien zu finden, die möglicherweise zusätzliche Informationen oder Angriffsvektoren bieten könnten.

Ausnutzung von Schwachstellen

In diesem Schritt versuchen wir, die im vorherigen Schritt identifizierten Schwachstellen auszunutzen.

Identifizieren Sie basierend auf den Informationen aus den Nmap- und Gobuster-Scans potenzielle Schwachstellen im Zielsystem. Metasploitable2 enthält die anfällige Mutillidae-Trainingsanwendung. In diesem Schritt testen wir eine echte Seite dieser Anwendung, anstatt einen Platzhalter-URL zu verwenden.

Eine häufige Schwachstelle in Webanwendungen ist SQL-Injection. Die Seite user-info.php in Mutillidae akzeptiert den Parameter username im Query-String, was uns ein konkretes Ziel für sqlmap innerhalb des Kali-Linux-Containers bietet.

sqlmap -u "http://192.168.122.102/mutillidae/index.php?page=user-info.php&username=admin&password=admin&user-info-php-submit-button=View+Account+Details" -p username --batch --risk=3 --level=5 --random-agent --dbs

Dieser Befehl testet einen echten Mutillidae-Endpunkt auf der Ziel-VM. Die Option -u gibt die vollständige anfällige URL an, -p username weist sqlmap an, sich auf diesen Parameter zu konzentrieren, --batch führt den Vorgang nicht-interaktiv aus, --risk=3 und --level=5 ermöglichen tiefere Tests, --random-agent rotiert den User-Agent-String, und --dbs weist sqlmap an, die Datenbanknamen aufzulisten, sobald die Ausnutzung erfolgreich war.

Je nachdem, welche Schwachstelle Sie ausnutzen möchten, müssen Sie möglicherweise andere Werkzeuge oder Techniken verwenden. Konsultieren Sie die Dokumentation und Ressourcen für die jeweilige Schwachstelle und das entsprechende Werkzeug.

Post-Exploitation und Privilegieneskalation

In diesem Schritt nutzen wir die während der Aufklärung entdeckte Dienst-Exponierung, um den Shell-Zugriff auf das Zielsystem zu bestätigen und grundlegende Post-Exploitation-Beweise zu sichern.

Der Nmap-Scan von Metasploitable2 zeigt typischerweise den offenen TCP-Port 1524. Auf dieser VM bietet dieser Dienst eine Root-Shell, sodass wir uns direkt vom Kali-Linux-Container aus damit verbinden können, anstatt davon auszugehen, dass eine separate Reverse-Shell existiert.

Führen Sie den folgenden Befehl im Kali-Linux-Container aus:

printf 'id\nuname -a\nexit\n' | nc 192.168.122.102 1524

Dies sendet drei Befehle an den exponierten Shell-Dienst auf der Ziel-VM. Der Befehl id bestätigt das Konto, das der Dienst Ihnen gewährt, uname -a protokolliert die Kernel-Informationen, und exit schließt die Shell sauber, nachdem die Ausgabe in Ihrem Terminal angezeigt wurde.

Wenn die Verbindung funktioniert, sollten Sie eine Ausgabe sehen, die uid=0(root) und die Kernel-Details von Metasploitable2 enthält. Diese Ausgabe reicht aus, um den erfolgreichen Shell-Zugriff während der Post-Exploitation-Phase zu demonstrieren.

In einer realen Bewertung würden Sie diesen exponierten Dienst als kritischen Befund dokumentieren, da er sofortigen privilegierten Zugriff ohne zusätzliche Exploit-Kette ermöglicht.

Zusammenfassung

In diesem Lab haben wir die Grundlagen von Webanwendungs-Penetrationstests kennengelernt und praktische Erfahrungen bei der Identifizierung und Ausnutzung von Schwachstellen in einer anfälligen Webanwendung auf einem Zielsystem gesammelt. Wir haben die Themen Aufklärung, Enumeration von Webanwendungen, SQL-Injection-Tests mit sqlmap sowie grundlegende Post-Exploitation-Validierung behandelt.

Das Lab bot eine kontrollierte Umgebung, um reale Szenarien zu üben und Fähigkeiten im Bereich der Webanwendungssicherheit zu entwickeln. Durch das Befolgen der Schritte haben wir gelernt, wie man die Lab-Umgebung einrichtet, Aufklärung und Informationsbeschaffung durchführt, einen echten Mutillidae-Endpunkt auf SQL-Injection testet und den Shell-Zugriff über einen exponierten Dienst auf dem Zielsystem bestätigt.

Dieses Lab hat uns mit praktischem Wissen und Erfahrung im Bereich der Webanwendungs-Penetrationstests ausgestattet, was unerlässlich ist, um Webanwendungen abzusichern und potenzielle Schwachstellen zu identifizieren, bevor sie von böswilligen Akteuren ausgenutzt werden können.