
Demo-Anwendung, die einen SQL-Injection-Exploit in Django 5.2.7 demonstriert
Diese Anwendung demonstriert CVE-2025-64459, das mehrere Django-Versionen betrifft. Diese Schwachstelle wurde in neueren Django-Versionen behoben.
SQL-Injection tritt auf, wenn vom Benutzer bereitgestellte Eingaben als Teil einer SQL-Abfrage behandelt werden. Dadurch kann ein Angreifer die Funktionsweise der Abfrage ändern und auf Daten zugreifen oder diese verändern, auf die er normalerweise keinen Zugriff hätte.
Dies ist eine SQL-Injection-Schwachstelle in Django-QuerySets und Q-Objekten, die zur Offenlegung von Daten führen kann. Der Exploit entsteht durch die Übergabe von Abfrageparametern an ein Django-QuerySet, wobei der Benutzer die Schlüssel _connector und _negated setzen kann, um beliebige SQL-Fragmente auszuführen.
In dieser App wird der Exploit über die Startseitenroute ausgeführt. Der Aufruf von cve.hyperf.app/?_connector=OR 1=1 OR fügt OR 1=1 OR in die SQL-Abfrage ein, sodass der Filter jeden Datensatz trifft und alle Ergebnisse zurückgegeben werden. In diesem Fall werden Beiträge offengelegt, die archiviert oder auf den Status DRAFT gesetzt sind.
[!NOTE]
db.sqlite3 und .env werden absichtlich von git verfolgt, um die Datenbank für den Exploit einzurichten.
Repo klonen und Abhängigkeiten mit uv synchronisieren.
uv sync
Entwicklungsserver starten.
uv run manage.py runserver