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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-21546 — Автоматизированный набор эксплойтов и шаблон обнаружения для CVE-2024-21546 — неаутентифицированного RCE в UniSharp Laravel Filemanager, с обходом WAF и интерактивной оболочкой. | Kitploit
Инструменты/GitHubGitHub/digitalsurgn/cve-2024-21546
РазведкаСканеры уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьРазработка Полезной Нагрузки
GitHubdigitalsurgn/cve-2024-21546

CVE-2024-21546

Автоматизированный набор эксплойтов и шаблон обнаружения для CVE-2024-21546 — неаутентифицированного RCE в UniSharp Laravel Filemanager, с обходом WAF и интерактивной оболочкой.

Репозиторий
10 ч 40 мин назадЕщё не проверено

Популярное

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

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

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

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

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

UniSharp Laravel Filemanager Неаутентифицированное RCE (CVE-2024-21546)

Этот репозиторий содержит инструменты для оценки безопасности, шаблоны обнаружения и автоматизированный эксплойт-комплект для выявления и эксплуатации неаутентифицированного удалённого выполнения кода (RCE) в приложениях, использующих пакет UniSharp/laravel-filemanager (версии < 2.9.1).


📑 Содержание

  • 1. Обзор уязвимости
  • 2. Анализ первопричины
  • 3. Шаблон обнаружения Nuclei (laravel-filemanager.yaml)
    • Почему стандартные шаблоны не работают на локализованных сайтах
    • Спецификация воссозданного шаблона
    • Запуск сканирования Nuclei
  • 4. Автоматизированный эксплойт-комплект (cve_2024_21546_rce.py)
    • Возможности эксплойта
    • Использование и параметры
    • Примеры
  • 5. Рекомендации по устранению

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

Уязвимость возникает из-за двух комбинированных условий:

  1. Неаутентифицированный доступ к маршрутам: Хост-приложение регистрирует маршруты /laravel-filemanager без применения промежуточного ПО 'auth' или 'web'.
  2. Обход проверки расширения с завершающей точкой: Валидатор загрузки не выполняет надлежащую очистку завершающих символов точки (.), что позволяет злоумышленникам обходить блок-списки исполняемых файлов и размещать PHP-скрипты в публичном хранилище.

2. Анализ первопричины

A. Ошибка валидатора завершающей точки (LfmUploadValidator.php)

В версиях до v2.9.1 файл LfmUploadValidator.php проверял расширения файлов по блок-списку с помощью:

root@kitploit:~
public function extensionIsNotExcutable($unallowed_extensions)
{
    $extension = strtolower($this->file->getClientOriginalExtension());
    if (in_array($extension, $unallowed_extensions)) {
        throw new \Exception('File extension is not allowed.');
    }
    return $this;
}

Когда злоумышленник загружает файл с именем poc.php.:

  • Метод getClientOriginalExtension() из Symfony извлекает символы, следующие за последней точкой.
  • Поскольку имя файла заканчивается точкой, getClientOriginalExtension() возвращает "" (пустую строку).
  • Проверка in_array("", ['php', 'html']) возвращает false, обходя блокировку расширения.

B. Разрешение без расширения и цепочка переименования

В Windows и на определённых драйверах хранилища файл сохраняется как хэш без расширения (<hash>). Эксплойт использует цепочку с RenameController из LFM (GET /laravel-filemanager/rename?file=<hash>&new_name=runner.php) для переименования загруженной полезной нагрузки в активный файл .php, что обеспечивает немедленное веб-исполнение по адресу /storage/app/public/file-manager-files/items/runner.php.


3. Шаблон обнаружения Nuclei (laravel-filemanager.yaml)

Почему стандартные шаблоны не работают на локализованных сайтах

Верхнеуровневый шаблон сообщества (http/exposed-panels/laravel-filemanager.yaml) (https://github.com/projectdiscovery/nuclei-templates/blob/main/http/exposed-panels/laravel-filemanager.yaml) полагался на жёстко заданный матчер английской строки:

root@kitploit:~
matchers:
  - type: word
    words:
      - "Laravel FileManager" # Fails on localized deployments or non english versions

Когда приложения локализованы (например, арабский, французский, китайский), английская строка отсутствует в HTML-теле, что приводит к ложным отрицательным результатам.

Спецификация воссозданного шаблона

Модернизированный шаблон обнаруживает панель, сопоставляя неизменяемые пути к ресурсам поставщика и действия формы загрузки:

root@kitploit:~
id: laravel-filemanager

info:
  name: Laravel File Manager - Panel Detect
  author: digitalsurgn
  severity: critical
  description: Laravel File Manager panel was detected.
  reference:
    - https://github.com/UniSharp/laravel-filemanager
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
    cwe-id: CWE-200
  metadata:
    max-request: 1
  tags: panel,laravel,filemanager,fileupload,intrusive

http:
  - method: GET
    path:
      - "{{BaseURL}}/laravel-filemanager?type=Files"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "vendor/laravel-filemanager"
          - "laravel-filemanager/upload"
        condition: or

      - type: status
        status:
          - 200

Запуск сканирования Nuclei

root@kitploit:~
nuclei -u https://target.com/ -t laravel-filemanager.yaml

4. Автоматизированный эксплойт-комплект (cve_2024_21546_rce.py)

Автономный инструмент на Python (cve_2024_21546_rce.py) автоматизирует сквозную неаутентифицированную эксплуатацию со встроенным обходом WAF и гигиеной самоочистки.

Возможности эксплойта

  • Автоматическое согласование протокола и порта: Автоматически определяет, использует ли цель HTTP или HTTPS, и поддерживает нестандартные пользовательские порты.
  • Предварительная проверка доступа: Подтверждает доступность /laravel-filemanager без аутентификации перед попыткой эксплуатации.
  • Динамическое отслеживание файлов: Делает снимки списков каталогов (jsonitems) до и после для идентификации загруженного хэша без опоры на жёстко заданные имена папок или файлов.
  • Обход WAF: Использует короткие теги PHP (<?=), динамический вызов функций (('pas'.'sthru')) и заголовки X-Cmd в кодировке Base64 для обхода правил проверки.
  • Интерактивный режим оболочки: Поддерживает непрерывные интерактивные сеансы оболочки (--interactive).
  • Автоматическая очистка без следов: Автоматически удаляет размещённый веб-шелл после каждого выполнения команды.

Использование и параметры

root@kitploit:~
python3 cve_2024_21546_rce.py [OPTIONS]

Примеры

1. Интерактивный режим (запрашивает цель, порт и команду)

root@kitploit:~
python3 cve_2024_21546_rce.py

2. Выполнение одиночной команды (CLI)

root@kitploit:~
python3 cve_2024_21546_rce.py -t xyz.com -c "whoami"

3. Пользовательский нестандартный порт с интерактивной оболочкой

root@kitploit:~
python3 cve_2024_21546_rce.py -t 10.10.10.50 -p 8080 --interactive

5. Рекомендации по устранению

  1. Обновите пакет: Обновите unisharp/laravel-filemanager до версии 2.9.1 или новее через Composer:
    root@kitploit:~
    composer update unisharp/laravel-filemanager
    
  2. Примените промежуточное ПО аутентификации: Убедитесь, что все маршруты файлового менеджера защищены аутентификацией в config/lfm.php:
    root@kitploit:~
    'middlewares' => ['web', 'auth'],
    
  3. Ограничьте публичное хранилище: Настройте правила веб-сервера для запрета выполнения скриптов .php в публичных каталогах загрузки (например, /storage/).
Скачать инструмент
МетрикаДетали
Название уязвимостиНеограниченная загрузка файлов с переходом к RCE в UniSharp Laravel Filemanager
Идентификатор CVECVE-2024-21546
Затронутый компонентunisharp/laravel-filemanager (< 2.9.1)
Общая слабостьCWE-94 (внедрение кода) / CWE-434 (неограниченная загрузка)
СерьёзностьКритическая (CVSS 9.8)
Вектор атакиУдалённый / неаутентифицированный HTTP
ФлагПараметрОписание
-t, --target<host>Целевой домен или IP-адрес (например, example.com или 192.168.1.50).
-p, --port<port>Целевой порт, если отличается от стандартных 80/443 (например, 8080, 8443).
--schemehttp / httpsЯвное указание схемы протокола (по умолчанию: автоопределение).
-c, --cmd<command>Одиночная команда для выполнения (например, whoami, id, ipconfig).
-i, --interactiveфлагЗапуск интерактивной оболочки выполнения команд.
-d, --dir<path>Целевая рабочая директория LFM (по умолчанию: /items).