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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/chinesespeople/cve-2026-52614
Взлом паролейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubchinesespeople/cve-2026-52614

CVE-2026-52614

В бэкенде Ruoyi v4.8.3 существует уязвимость SQL-инъекции.

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

Популярное

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

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

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

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

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

CVE-2026-52614 - RuoYi v4.8.3 filterKeyword Обход SQL-инъекции

中文 | English

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

中文说明

Краткое описание уязвимости

Конечная точка /tool/gen/createTable модуля генерации кода RuoYi v4.8.3 принимает SQL для создания таблиц от аутентифицированных пользователей бэкенда. Вызов SqlUtil.filterKeyword() выполняет фильтрацию по черному списку ключевых слов. Однако реализация сначала удаляет все пробельные символы из ввода, а затем сопоставляет с ключевыми словами, содержащими завершающие пробелы (например, select , insert , drop ), в результате чего соответствующие правила не срабатывают.

С помощью оператора CREATE TABLE ... AS SELECT ... (CTAS) можно обойти проверку типа Druid MySqlCreateTableStatement, одновременно выполняя SELECT. Злоумышленник, имеющий действительную сессию бэкенда, может использовать это для слепой SQL-инъекции на основе булевых значений, извлечения конфиденциальных данных и создания таблиц.

Условия воздействия

  • Целью является RuoYi v4.8.3.
  • Злоумышленник вошел в бэкенд и обладает действительным JSESSIONID.
  • Текущая учетная запись имеет доступ к конечным точкам модуля генерации кода.
  • База данных и текущая учетная запись базы данных позволяют выполнять операции CTAS.

Принцип уязвимости

Скрипт проверки использует следующую логику для извлечения хеша пароля и соли пользователя admin из таблицы sys_user:

  1. Создает промежуточную таблицу с помощью CTAS, копируя поля login_name, password и salt.
  2. Для каждого проверяемого символа создает тестовую таблицу с условием SUBSTRING() в WHERE.
  3. Если условие истинно, CTAS возвращает данные, и тестовая таблица не импортируется автоматически в список таблиц генерации.
  4. Если условие ложно, CTAS возвращает ноль строк, и тестовая таблица импортируется автоматически, что можно проверить через /tool/gen/list.
  5. На основании наличия тестовой таблицы в списке посимвольно восстанавливаются хеш пароля и соль.

Требования к среде

  • Python 3.8+
  • Действительная и авторизованная сессия бэкенда RuoYi
  • Зависимости Python: requests, urllib3

Установка зависимостей:

root@kitploit:~
python -m pip install requests urllib3

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

Откройте exp.py и замените следующие две строки в конфигурационной секции вверху файла:

root@kitploit:~
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

Где:

  • TARGET: замените на URL тестируемого RuoYi, например http://127.0.0.1:8080.
  • COOKIE: замените на действительный JSESSIONID сессии бэкенда после входа.

После замены выполните:

root@kitploit:~
python exp.py

Скрипт создает в целевой базе данных промежуточную таблицу и множество тестовых таблиц для булевых проверок. Используйте его только в изолированной или явно авторизованной среде; после тестирования попросите администратора базы данных удалить созданные таблицы.

Скриншот проверки

exp.png — скриншот успешной проверки в локальной авторизованной среде:

Successful verification

Рекомендации по исправлению

  • Не полагайтесь на черные списки ключевых слов SQL и не выполняйте напрямую SQL, предоставленный пользователем.
  • Исправьте логику нормализации и сопоставления в filterKeyword(), но не рассматривайте это как единственную меру защиты.
  • Внедрите строгий контроль доступа, аудит операций и защиту CSRF для конечных точек генерации кода.
  • Запретите или удалите возможность произвольного создания SQL-таблиц; если это необходимо, используйте структурированные параметры для построения фиксированных операторов.
  • Используйте учетную запись базы данных с минимальными привилегиями, ограничивающую чтение конфиденциальных таблиц и выполнение CTAS/DDL.
  • Обновитесь до официально исправленной версии или примените официальный патч безопасности.

English

Summary

Конечная точка /tool/gen/createTable в модуле генерации кода RuoYi v4.8.3 принимает SQL для создания таблиц от аутентифицированных пользователей бэкенда. Вызов SqlUtil.filterKeyword() предназначен для блокировки опасных ключевых слов SQL. Однако реализация удаляет все пробельные символы из ввода перед проверкой по черному списку, который содержит записи с завершающими пробелами, например select , insert и drop . В результате эти записи не могут совпасть с нормализованным вводом.

Оператор CREATE TABLE ... AS SELECT ... (CTAS) может пройти проверку типа Druid MySqlCreateTableStatement, все еще выполняя SELECT. Злоумышленник с действительной сессией бэкенда может использовать это поведение для слепой SQL-инъекции на основе булевых значений, извлечения конфиденциальных данных и создания таблиц.

Preconditions

  • Цель работает на RuoYi v4.8.3.
  • Тестировщик имеет действительный аутентифицированный JSESSIONID бэкенда.
  • Аутентифицированная учетная запись имеет доступ к конечным точкам генерации кода.
  • База данных и настроенная учетная запись разрешают операции CTAS.

How the PoC Works

Скрипт восстанавливает хеш пароля и соль admin из таблицы sys_user, используя следующий оракул:

  1. Создает промежуточную таблицу, содержащую login_name, password и salt.
  2. Создает одну тестовую таблицу для каждого проверяемого символа с условием SUBSTRING().
  3. Когда условие истинно, CTAS возвращает строку, и тестовая таблица не импортируется автоматически в список таблиц генератора.
  4. Когда условие ложно, CTAS возвращает ноль строк, и таблица импортируется автоматически, что делает её видимой через /tool/gen/list.
  5. Использует эту разницу для посимвольного восстановления хеша пароля и соли.

Requirements

  • Python 3.8+
  • Действительная, авторизованная сессия бэкенда RuoYi
  • Пакеты Python: requests, urllib3

Установка зависимостей:

root@kitploit:~
python -m pip install requests urllib3

Usage

Откройте exp.py и замените следующие две строки в конфигурационной секции вверху файла:

root@kitploit:~
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

Где:

  • TARGET — базовый URL RuoYi для тестирования, например http://127.0.0.1:8080.
  • COOKIE — действительная аутентифицированная JSESSIONID сессии бэкенда.

После замены URL и сессии выполните:

root@kitploit:~
python exp.py

Скрипт создает в целевой базе данных промежуточную таблицу и множество тестовых таблиц для булевых проверок. Используйте его только в изолированной или явно авторизованной среде; после тестирования попросите администратора базы данных удалить созданные таблицы.

Screenshot

exp.png показывает успешную проверку в авторизованной локальной среде:

Successful verification

Mitigation

  • Не полагайтесь на черные списки ключевых слов SQL и не выполняйте напрямую SQL, предоставленный пользователем.
  • Исправьте логику нормализации и сопоставления в filterKeyword(), но не рассматривайте это как единственную меру защиты.
  • Внедрите строгий контроль доступа, аудит и защиту CSRF для конечных точек генерации кода.
  • Удалите возможность произвольного создания SQL-таблиц; если необходимо, конструируйте фиксированные операторы из структурированных, проверенных параметров.
  • Используйте учетную запись базы данных с минимальными привилегиями, которая не может читать конфиденциальные таблицы или выполнять ненужные операции CTAS/DDL.
  • Обновитесь до официально исправленной версии или примените патч безопасности от вендора.

Files

  • exp.py - скрипт проверки / verification script
  • exp.png - скриншот успешной проверки / successful verification screenshot
  • README.md - двуязычная документация по уязвимости / bilingual vulnerability documentation
Скачать инструмент