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-80099 — Complementos de Newfold (wp-module-data <= 2.9.7) No autenticado | Kitploit
Herramientas/GitHubGitHub/wayang1337/cve-2026-80099
Escáneres de VulnerabilidadesAtaques de ContraseñasExplotaciónScripting y AutomatizaciónExplotación de Aplicaciones WebRecopilación de InformaciónPost-ExplotaciónSeguridad WebPruebas de PenetraciónHerramienta de Acceso Remoto
GitHub
hace 7h 35mAún no revisado
wayang1337/cve-2026-80099

CVE-2026-80099

Complementos de Newfold (wp-module-data <= 2.9.7) No autenticado

Ver Repositorio

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-80099 PoC

Bypass de autenticación no autenticado y exploit de RCE dirigido a plugins de WordPress de Newfold que incluyen wp-module-data.

Descripción general

Esta herramienta explota un fallo de validación de token Bearer en el módulo wp-module-data de Newfold. Cuando un sitio de WordPress que usa un plugin de Newfold afectado no está conectado a Hiive, HiiveConnection::get_auth_token() devuelve false. Este valor pasa por strrev() y luego se hashea, colapsando la sal secreta a la constante pública:

root@kitploit:~
sha256("") = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Debido a que todos los demás componentes del payload hasheado (método HTTP, URL de la solicitud, cuerpo de la solicitud, timestamp) están totalmente controlados por el atacante, se puede calcular un token Bearer válido sin conexión. El filtro vulnerable se ejecuta en rest_authentication_errors, por lo que un token falsificado autentica al llamador como el para toda la API REST de WordPress, incluidas las rutas del núcleo. Ese acceso se aprovecha después para lograr ejecución remota de código completa.

primer administrador

Software afectado

Plugin / MóduloVersiones afectadasParcheado
wp-module-data<= 2.9.72.9.8
bluehost-wordpress-plugin<= 4.19.0n/a
hostgator<= 3.2.0n/a
web<= 2.3.5n/a
crazy-domains<= 2.5.2n/a

La detección también cubre los slugs de plugins de WordPress.org wp-plugin-web y crazy_blog.

Causa raíz

En vendor/newfold-labs/wp-module-data/includes/Data.php:

root@kitploit:~
public function authenticate( $errors ) {        // hooked on rest_authentication_errors
    ...
    $data = array(
        'method'    => $_SERVER['REQUEST_METHOD'],
        'url'       => Url::getCurrentUrl(),
        'body'      => file_get_contents( 'php://input' ),
        'timestamp' => dataGet( getallheaders(), 'X-Timestamp' ),
    );
    $hash     = hash( 'sha256', wp_json_encode( $data ) );
    $salt     = hash( 'sha256', strrev( HiiveConnection::get_auth_token() ) );
    $is_valid = hash( 'sha256', $hash . $salt ) === $token;

    if ( $is_valid ) {
        ... wp_set_current_user( <first administrator> ); return true;
    }
}

En un sitio no conectado, strrev(false) se convierte en strrev(''), lo que produce '', y la sal pasa a ser el hash bien conocido de la cadena vacía. Todas las demás entradas de la cadena de hash están controladas por el atacante, por lo que el token es totalmente predecible.

Características

  • Detección de plugins de Newfold afectados mediante fingerprinting de activos estáticos
  • Detección de presencia del módulo a través de la ruta REST newfold-data/v1/verify/<hex>
  • Falsificación sin conexión de un token Bearer válido (no se requiere secreto)
  • Verificación del bypass llamando a GET /wp/v2/users/me e inspeccionando los roles
  • Cadena de RCE completa con múltiples técnicas de respaldo:
    1. Escritura mediante el editor de temas en 404.php / index.php
    2. Subida de plugin mediante ZIP
    3. Escritura mediante el editor en un plugin inactivo, activación por REST y restauración
  • Gestor de archivos .fm.php persistente opcional colocado en el webroot
  • Modo de escaneo masivo con workers en hilos, soporte de reanudación y progreso limitado
  • Dos rutas de autenticación para post-explotación: inicio de sesión con enlace mágico SSO de Newfold (evita los bloqueos de ModSecurity en wp-login.php) y inicio de sesión clásico mediante formulario en wp-login.php

Requisitos

  • Python 3.7+
  • requests
  • urllib3 (opcional, solo para suprimir advertencias de TLS)

Instalar dependencias:

root@kitploit:~
pip install requests urllib3

Uso

Comprobación de un único objetivo

Detección de solo lectura y verificación del bypass:

root@kitploit:~
python3 exploit.py -u https://target.example

RCE en un único objetivo

Cadena completa hasta una shell persistente:

root@kitploit:~
python3 exploit.py -u https://target.example --mode rce

Restablecer la contraseña del primer administrador en lugar de crear uno nuevo:

root@kitploit:~
python3 exploit.py -u https://target.example --mode rce --takeover

Escaneo masivo

Solo comprobación sobre una lista de objetivos:

root@kitploit:~
python3 exploit.py --list targets.txt

Cadena completa en cada host vulnerable (requiere opt-in explícito):

root@kitploit:~
python3 exploit.py --list targets.txt --mode rce --apply-rce

Pre-filtrar usando sondas de activos estáticos antes de tocar la API REST:

root@kitploit:~
python3 exploit.py --list targets.txt --brand-filter

Detenerse tras los primeros N hosts vulnerables:

root@kitploit:~
python3 exploit.py --list targets.txt --stop-after 5

Reanudar una ejecución anterior:

root@kitploit:~
python3 exploit.py --list targets.txt --resume

Opciones

FlagDescripción
-u, --urlURL base de un único objetivo
--listArchivo que contiene una URL de objetivo por línea
--modecheck (solo detectar) o rce (cadena completa); por defecto check
--takeoverRestablecer la contraseña del primer admin en lugar de crear un nuevo admin
--outputRuta de salida JSONL para el modo masivo; por defecto cve_2026_80099_results.jsonl
--vuln-listLista de URLs sin formato de hosts vulnerables; por defecto vuln.txt
--threadsNúmero de workers para el modo masivo; por defecto 20
--timeoutTiempo de espera de solicitud en segundos; por defecto 15
--fast-timeoutTiempo de espera de sonda rápida en segundos; por defecto 6
--retriesIntentos de reintento por solicitud; por defecto 1
--proxyURL del proxy HTTP(S)
--all-outEscribir todas las filas del modo masivo, no solo las vulnerables
--apply-rceEjecutar la cadena de RCE en hosts vulnerables en modo masivo
--brand-filterPre-filtrar usando activos estáticos de plugins de Newfold
--stop-afterDetener el escaneo masivo tras N hosts vulnerables; 0 significa ejecutar todos
--quietDeshabilitar las líneas de progreso por objetivo
--resumeAñadir a la salida y omitir objetivos ya presentes

Detalles de la cadena de RCE

Una vez confirmado un contexto de administrador, la herramienta intenta tres técnicas en orden:

  1. Shell mediante el editor de temas — escribe un pequeño payload PHP en el 404.php o index.php del tema activo. El payload se activa solicitando cualquier URL inexistente (para 404.php) o la raíz del sitio (para index.php).

  2. Shell mediante subida de plugin — construye un ZIP que contiene un plugin mínimo, lo sube mediante wp-admin/update.php?action=upload-plugin y accede directamente al archivo PHP del plugin.

  3. Cadena mediante el editor de plugin inactivo — lista los plugins mediante la API REST, selecciona uno inactivo, escribe una cmd-shell en su archivo principal mediante plugin-editor.php, lo activa mediante PUT /wp/v2/plugins/<slug>, activa la shell en cualquier URL del frontend, coloca .fm.php en el webroot y luego desactiva el plugin y restaura el archivo original. Esta ruta está diseñada para sobrevivir a hosts que bloquean el editor de temas, bloquean el acceso directo a wp-content o revierten las ediciones mediante comprobaciones de salud por loopback.

Si tiene éxito, se coloca un gestor de archivos .fm.php persistente en el webroot. Admite:

  • ?cmd=<shell command>
  • ?cat=<path> para leer un archivo
  • ?put=<path>&data=<base64> para escribir un archivo
  • ?ls=<path> para listar un directorio

Archivos de salida

  • cve_2026_80099_results.jsonl — registros JSONL para cada objetivo escaneado. Las entradas vulnerables incluyen vuln: true, admin, admin_id y, cuando la RCE tiene éxito, shell (la URL del gestor de archivos o shell colocado).
  • vuln.txt — una URL sin formato por línea para cada objetivo vulnerable o con shell.

Notas

  • La herramienta ignora los proxies del sistema y del entorno mediante trust_env = False para evitar filtrar escaneos masivos a través de proxies locales.
  • El token Bearer se calcula contra la URL exacta que verá el servidor (esquema, host y URI de la solicitud), coincidiendo con el comportamiento de Url::getCurrentUrl(). La solicitud se prepara primero y el token se deriva de la URL preparada.
  • El codificador JSON compatible con PHP replica el comportamiento predeterminado de json_encode, incluidas las barras inclinadas escapadas, el escape de no ASCII \uXXXX y los pares suplentes UTF-16 para caracteres astrales, de modo que el payload hasheado coincide byte a byte.
  • Una sonda fallida que devuelve 401 normalmente significa que el objetivo está parcheado (módulo >= 2.9.8), que el sitio está conectado a Hiive (token real, sal desconocida) o que un intermediario elimina la cabecera Authorization. Un 403 normalmente indica que otro filtro de rest_authentication_errors interfirió.

Descargo de responsabilidad

Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas e investigación. Úsela exclusivamente contra sistemas que posea o para los que tenga permiso escrito explícito de probar. El acceso no autorizado a sistemas informáticos es ilegal en la mayoría de las jurisdicciones y puede dar lugar a severas sanciones civiles y penales. El autor no asume ninguna responsabilidad por el mal uso o los daños causados por este software.

Descargar herramienta