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

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

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

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

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

Категории

Все категории
Loading categories
cve-2026-111497-wordpress-poc — PoC RCE для CVE-2026-111497 в одном закреплённом официальном Docker-образе WordPress | Kitploit
Инструменты/GitHubGitHub/caveeroo/cve-2026-111497-wordpress-poc
Безопасность контейнеровГенерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийКриптография
GitHubcaveeroo/cve-2026-111497-wordpress-poc

cve-2026-111497-wordpress-poc

PoC RCE для CVE-2026-111497 в одном закреплённом официальном Docker-образе WordPress

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
32120 ч 23 мин назадЕщё не проверено

CVE-2026-111497: RCE PoC для закреплённого образа WordPress

Этот PoC, содержащий только исходный код, воспроизводит неаутентифицированное выполнение команд в одном закреплённом Docker Official Image для WordPress.

Один запрос pingback.ping заставляет WordPress дважды обратиться к URL атакующего в рамках одного PHP-запроса. Первый ответ повреждает обработчик PHP через Brotli. Заголовок повторной попытки запускает Bash и возвращает флаг лаборатории.

Профиль привязан к конкретной цели. Он ничего не утверждает о текущих образах WordPress, других дайджестах или ошибке памяти в WordPress Core.

ВНИМАНИЕ: Запускайте этот PoC только в прилагаемой лаборатории на системе, которой вы владеете. Он содержит рабочий RCE-пейлоад.

Результат

  • Один неаутентифицированный входящий запрос вызывает два исходящих запроса.
  • Bash читает свежий /flag.txt, и флаг возвращается в ответе XML-RPC.
  • Режим ASLR 2 в Linux и аллокатор по умолчанию остаются включёнными.
  • Цепочка не использует утечку, кросс-запросный груминг, отладчик, библиотеку предзагрузки, плагин или прямое заполнение обработчика.
  • Наблюдаемый режим фиксирует цепочку процессов sh → bash → sleep.
  • Управление однобитным селектором достигает повторной попытки, не раскрывая флаг.

Точная цель и механизм

ЭлементЗначение
Цельdocker.io/library/wordpress@sha256:806680ba62232c4c300fb9dcc9f89d08e9e8c2bfc59837a1f58716f8648306d5
ID образаc64dd89c00079939f18d70489e7c3e30cb071e8581824ab2de688f9f4d70d076
ПлатформаLinux amd64, Debian 13.7
ПриложениеWordPress 7.1.3, Apache 2.4.69 prefork
Среда выполненияPHP 8.3.36 NTS
Декодерlibbrotli1:amd64 1.1.0-2+b7

Этот манифест Linux/amd64 выбирался тегом wordpress:latest на момент публикации. Текущий тег latest больше его не выбирает.

Лаборатория запускает этот неизменённый Docker Official Image с помощью rootless Podman. Она не внедряет библиотеку Brotli.

CVE-2026-111497 обеспечивает повреждение декодера. WordPress предоставляет неаутентифицированный путь загрузки через pingback.ping.

Некорректный поток копирует шесть байт из указателя живого обработчика system в обработчик strtolower. Оба указателя используют одну и ту же загруженную ASLR базу libphp.so. Поэтому профилю не нужна утечка абсолютного адреса.

Профиль по-прежнему зависит от точных версий Brotli, PHP, glibc, cURL, Requests, Apache, аллокатора и истории запросов. Первый ответ использует 161-байтовый заголовок и тело размером 23 069 816 байт. Источник отправляет 23 069 752 байта, ждёт одну секунду и отправляет финальные 64 байта.

Декодер возвращает ошибку после повреждения. Requests повторяет попытку без декодирования содержимого после CURLE_BAD_CONTENT_ENCODING. Первое имя заголовка достигает изменённого обработчика и запускает фиксированную команду Bash.

Путь приложения требует следующих условий:

  • /xmlrpc.php доступен, и pingback.ping включён.
  • Существует запись, принимающая pingback-и.
  • WordPress может загрузить URL, контролируемый атакующим.
  • Транспорт cURL декодирует ответы Brotli.

Лаборатория создаёт эти условия без плагина и без инструментирования на стороне жертвы.

Исходный код и требования

generate_payloads.py — авторитетный источник пейлоадов. Репозиторий не содержит предсобранных бинарных пейлоадов.

Генератор использует только стандартную библиотеку Python. Он работает офлайн и не отправляет трафик и не выполняет команды. Он определяет константы профиля и этапы сериализации согласно RFC 7932.

verify.sh заново генерирует все фрагменты. Он проверяет их размеры, хеши, промежуточные битовые смещения и связь однобитного селектора.

Тестируемый хост использовал Ubuntu 24.04.4 под WSL2 на amd64. Использовались rootless Podman 4.9.3, Bash 5.2.21 и Python 3.12.3.

Минимальные требования: Linux amd64, rootless Podman, Bash, Python 3.8 или новее, режим ASLR 2 и стандартные утилиты GNU. Освободите порт 18170 и подсеть 93.184.218.0/24 или выберите альтернативы. Хост с включённым режимом SELinux enforcing может отклонять bind-монтирования.

Перед запуском лаборатории загрузите неизменяемые образы:

podman pull docker.io/library/wordpress@sha256:806680ba62232c4c300fb9dcc9f89d08e9e8c2bfc59837a1f58716f8648306d5
podman pull docker.io/library/wordpress@sha256:65d5f185a6f539803a177ea9cdd5ad632ae24427bea114447e67a6fcd5d8bfe8
podman pull docker.io/library/mariadb@sha256:33a6653ab666774f48818120045f9367a81cd4c54c027412fe294a7d1274e2dc

Запуск проверки

Сделайте скрипты исполняемыми, затем проверьте исходный пакет:

chmod +x generate_payloads.py verify.sh run.sh
./verify.sh

Запускайте каждый режим с новым тегом:

РежимКомандаТребуемый результат
Positive./run.sh standardВозвращает флаг и выводит PoC positive:
Observable./run.sh observableТакже фиксирует видимые процессы bash и sleep
Selector./run.sh selectorПовторяет попытки, но не допускает флаг в ответ

Селектор изменяет один бит по смещению 1066 байт. Это причинный контроль в пределах одного образа, а не контроль с фиксированным декодером.

Необязательные аргументы — это режим, тег, порт хоста и третий октет сети:

./run.sh standard trial2 18171 219

Раннер записывает доказательства в runs/<tag>/. Основные файлы:

  • VERDICT.txt: результат и счётчики запросов
  • client-request.raw и client-response.raw: входящие данные на уровне протокола
  • origin-evidence/origin-events.json: оба исходящих запроса и заголовки повторных попыток
  • oracle-match.txt: совпадение флага в ответе
  • payloads/identity.json: метаданные сгенерированного профиля
  • MANIFEST.sha256: хеши всех файлов доказательств

Безопасность и ограничения

Раннер использует внутреннюю сеть Podman и публикует WordPress только на 127.0.0.1. Клиент не принимает адрес цели. Origin не принимает ввод команд. Фиксированная команда читает только синтетический флаг.

Раннер удаляет значение флага из окружения Apache до запуска Apache. Он также создаёт новые учётные данные и удаляет только ресурсы текущего запуска.

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

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

Меры защиты

  • Замените затронутый пакет или образ Brotli на сборку с исправлением от производителя.
  • Перезапустите или разверните заново каждый процесс, загрузивший старый декодер.
  • До завершения обновления удалите недоверенные пути декодирования Brotli и отключите неиспользуемые pingback-запросы XML-RPC.

Upstream исправил поддерживаемые ветки Brotli в версиях 1.0.10, 1.1.1 и 1.2.1. Дистрибьюторы могут перенести исправление (backport). Используйте рекомендации производителя и журнал изменений пакета, а не только отображаемую версию.

Ссылки

  • GitHub advisory GHSA-9v8h-qqgm-4m35
  • Google Brotli 1.2.1 security release
  • Upstream decoder fix
  • WordPress pingback_ping() reference
  • WordPress wp_safe_remote_get() reference
  • dimasma0305/CVE-2026-111497-POC (prior public PoC)
Скачать инструмент