
Демонстрационное приложение, демонстрирующее эксплуатацию SQL-инъекции в Django 5.2.7
Это приложение демонстрирует CVE-2025-64459, затрагивающую несколько версий Django. Эта уязвимость была исправлена в новых выпусках Django.
SQL-инъекция — это ситуация, когда вводимые пользователем данные рассматриваются как часть SQL-запроса, что позволяет злоумышленнику изменить поведение запроса и получить доступ или изменить данные, к которым он не должен иметь доступа.
Это уязвимость SQL-инъекции в QuerySets и Q объектах Django, которая может привести к раскрытию данных. Эксплойт возникает в результате передачи параметров запроса в QuerySet Django, где пользователь может установить ключи _connector и _negated, чтобы выполнить произвольные фрагменты SQL.
В этом приложении эксплойт осуществляется на маршруте домашней страницы. Переход по ссылке cve.hyperf.app/?_connector=OR 1=1 OR вставляет OR 1=1 OR в SQL-запрос, что означает, что фильтр будет соответствовать каждой записи, и будут возвращены все результаты. В данном случае посты, которые архивированы или имеют статус DRAFT, становятся доступными.
[!NOTE]
db.sqlite3 и .env намеренно отслеживаются git для настройки базы данных для эксплуатации.
clone the repo and sync dependencies with uv.
uv sync
Start the dev server.
uv run manage.py runserver