Simple SQL-Injection
Einleitung
Die Box "Appointment" ist eine Webanwendung, die eine SQL-Injection-Schwachstelle aufweist. Ziel ist es, durch Ausnutzung einer SQL-Injection auf eine Datenbank zuzugreifen, die verschiedene Informationen speichert, je nach Berechtigungslevel des Nutzers.
Schritt 1: Enumeration
Zuerst erfolgt eine grundlegende Enumeration des Systems mittels nmap
, um offene Ports zu identifizieren.
$ sudo nmap -sC -sV {target_IP}
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.38
Nur Port 80 ist offen, auf dem eine Apache-HTTP-Server-Version läuft.
Schritt 2: Verzeichnis-Bruteforce mit Gobuster
Um weitere Informationen zu erhalten, führen wir einen Verzeichnis-Bruteforce mit Gobuster durch. Das Ziel ist es, versteckte Verzeichnisse der Webanwendung zu finden.
Installation von Gobuster (falls noch nicht vorhanden):
$ sudo apt install gobuster
Durchführung der Verzeichnissuche:
$ gobuster dir -u http://{target_IP} -w /usr/share/wordlists/dirb/common.txt
/login (Status: 200)
/admin (Status: 403)
/images (Status: 200)
Schritt 3: SQL-Injection auf Login-Seite
Da wir keine nützlichen Verzeichnisse gefunden haben, versuchen wir eine SQL-Injection auf der Login-Seite.
Login-Seite analysieren: Die Login-Seite könnte anfällig für SQL-Injections sein, insbesondere bei ungeschützter Verarbeitung der Eingabefelder für Benutzername und Passwort.
SQL-Injection nutzen: Geben Sie in das Login-Feld den folgenden Payload ein, um die SQL-Abfrage zu manipulieren:
Benutzername:
admin' #
Passwort:
abc123
(oder beliebiger Text, da die Passwortprüfung übersprungen wird)
Hintergrund: Die Eingabe admin' #
schließt die SQL-Abfrage ab und kommentiert den Rest aus, sodass die Passwortüberprüfung umgangen wird.
PHP-Code-Vulnerabilität:
$sql="SELECT * FROM users WHERE username='$username' AND password='$password'";
Die Eingabe führt dazu, dass der password
-Teil ignoriert wird, und somit wird lediglich geprüft, ob der Benutzername admin
existiert.
Schritt 4: Foothold erlangen
Nachdem die SQL-Injection erfolgreich war, sind wir eingeloggt und haben Zugriff auf administrative Funktionen.
SQL-Injection Code:
Username: "admin' #"
Password: "abc123"
Erwarteter Output: Zugriff auf die Verwaltungsoberfläche ohne gültige Zugangsdaten.
Last updated