Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
markdown-exfil-tester — Prueba de caja negra para determinar si un chatbot LLM es vulnerable a la exfiltración de markdown/HTML (clase CVE-2025-32711). Levanta un sumidero, envía payloads, renderiza en Chromium sin interfaz gráfica, correlaciona a través de la red. | Kitploit
Herramientas/GitHubGitHub/trerb/markdown-exfil-tester
Escáneres de VulnerabilidadesAnálisis Dinámico (Sandboxing)Generación de PayloadsExplotación de Aplicaciones WebCTFPruebas de PenetraciónAprendizaje y EducaciónRed TeamingSeguridad de IA
GitHubtrerb/markdown-exfil-tester

markdown-exfil-tester

Prueba de caja negra para determinar si un chatbot LLM es vulnerable a la exfiltración de markdown/HTML (clase CVE-2025-32711). Levanta un sumidero, envía payloads, renderiza en Chromium sin interfaz gráfica, correlaciona a través de la red.

Ver Repositorio
22hace 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

valtik-markdown-exfil-tester

Probador de caja negra para inyección indirecta de instrucciones que conduce a la exfiltración de markdown / HTML en chatbots basados en LLM. Esta es la clase de vulnerabilidad que afectó a Microsoft 365 Copilot (CVE-2025-32711, también conocido como EchoLeak), ChatGPT (parche de OpenAI de febrero de 2026) y Salesforce (ForcedLeak). El patrón:

  1. El atacante inserta markdown o HTML en contenido que el LLM leerá (documentos, tickets de soporte, PRs, páginas web ingeridas, fuentes RAG).
  2. El LLM emite markdown como ![](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg) en su respuesta.
  3. El frontend del chatbot renderiza el markdown, el navegador obtiene la URL del atacante y los secretos se filtran a través del parámetro de URL en cada renderizado.

Las herramientas existentes (Garak, Augustus, Promptfoo) son excelentes para probar la inyección a nivel de texto, pero no cierran el oráculo del lado del renderizado — "¿realmente tu frontend obtuvo la URL del atacante?" Esa es la verdadera vulnerabilidad. Esta herramienta llena ese vacío.

npx valtik-markdown-exfil-tester https://your-chatbot.example.com

Autorización requerida

No ejecutes esto contra chatbots que no poseas o para los que no tengas permiso explícito por escrito para probar. Ejecutar esta herramienta contra un chatbot LLM de terceros sin autorización es muy probablemente una violación de los términos de uso del servicio y puede ser ilegal en tu jurisdicción (CFAA en EE. UU., Computer Misuse Act en el Reino Unido, leyes similares en la UE).

Casos de uso legítimos:

  • Pruebas de penetración de un chatbot que posee tu organización.
  • Probar un chatbot dentro del alcance de un compromiso autorizado (SoW escrito).
  • Probar un objetivo en un programa de bug bounty cuya política permita explícitamente este tipo de prueba (lee la política primero — muchos programas LLM restringen el fuzzing pesado de inyección de instrucciones).
  • Investigación contra tu propia pila de chatbot alojada localmente.

Valtik Studios LLC renuncia a toda responsabilidad por el uso no autorizado.

Cómo funciona

  1. Inicia un navegador sin cabeza (Playwright / chromium).
  2. Inicia un listener local HTTP sink vinculado a 127.0.0.1 en un puerto alto aleatorio. Cada solicitud entrante se registra con marca de tiempo, ruta, consulta, cabeceras, Referer, IP, User-Agent.
  3. Entrega un conjunto rotatorio de payloads al chatbot. Cada payload está diseñado para incitar al LLM a emitir una imagen markdown, enlace de referencia, `` sin procesar, <svg>, fondo CSS, <link rel=prefetch>, etc., que apunte al sink local.
  4. Renderiza la respuesta del chatbot en el navegador sin cabeza con un paso permisivo de markdown a HTML (imitando un frontend vulnerable).
  5. Correlaciona: ¿recibió el sink un fetch etiquetado con el id de este payload? ¿Intentó el navegador y falló (CSP / sanitizer)? ¿Emitió el LLM la URL en texto plano pero el frontend la ignoró? ¿Se negó el LLM?
  6. Clasifica:
    • confirmed — el sink recibió un hit. Crítico. La exfiltración funciona.
    • browser-tried — el navegador emitió el fetch pero falló (CSP, política de referente, sanitizer). Medio. Defensa se mantuvo pero frágil — no confíes solo en CSP.
    • llm-emitted — la respuesta del LLM contenía la URL del sink pero el frontend no la renderizó como un fetch. Bajo.
    • refused — la respuesta del LLM no contenía el payload. Defensa se mantuvo.
    • inconclusive — sin respuesta del LLM.

Instalación

Ejecuta sin instalar:

npx valtik-markdown-exfil-tester https://chat.example.com

O instala globalmente:

npm install -g valtik-markdown-exfil-tester
npx playwright install chromium
markdown-exfil-tester https://chat.example.com

Requiere Node 20+.

Uso

Usage: valtik-markdown-exfil-tester <chatbot-url> [options]

Arguments:
  chatbot-url        URL del endpoint o página del chatbot

Options:
  --mode <type>      direct | indirect-doc        (predeterminado: direct)
  --endpoint <url>   Endpoint de la API si es diferente de chatbot-url
  --sink-port <n>    Puerto local del sink        (predeterminado: puerto alto aleatorio)
  --payloads <path>  Sobrescribir la biblioteca de payloads JSON
  --browser <bin>    playwright | none            (predeterminado: auto-detect)
  --auth <cookie>    Cookie de autenticación para el chatbot, si es necesario
  --timeout <s>      Espera por payload           (predeterminado 30)
  --max-payloads <n> Detenerse después de N payloads (predeterminado: todos)
  --rate-limit-ms <n> Retardo entre payloads      (predeterminado 3000)
  --out-dir <dir>    Directorio de trabajo para indirect-doc (predeterminado: /tmp/...)
  --user-agent <ua>
  --json             Salida legible por máquina
  --fail-on <level>  Salir con código distinto de cero si la gravedad es >= nivel (critical|high|medium|low)
  -v, --version
  -h, --help

Modos

  • direct (v0.1) — envía el payload directamente al endpoint del chatbot. Prueba la inyección directa de instrucciones. Señal más débil que indirecta, pero rápida.
  • indirect-doc (v0.1) — escribe cada payload como un documento markdown independiente en --out-dir. Subes cada archivo a la base de conocimiento del chatbot / fuente RAG / sistema de tickets / wiki, luego consultas al chatbot. La herramienta espera --timeout segundos por payload para un hit en el sink etiquetado con el id de ese payload.
  • indirect-pr (v0.2, aún no implementado) — automatiza la entrega del cuerpo de PR de GitHub contra revisores de PR estilo Copilot.
  • attach (v0.2, aún no implementado) — sube el archivo a través del flujo de carga del chatbot.

Ejemplos

# Prueba rápida con los primeros 10 payloads
npx valtik-markdown-exfil-tester https://chat.example.com --max-payloads 10
# Salida JSON para CI
npx valtik-markdown-exfil-tester https://chat.example.com --json | jq .findings
# Falla el trabajo de CI en cualquier hallazgo de alta gravedad
npx valtik-markdown-exfil-tester https://chat.example.com --fail-on high
# Modo indirect-doc: genera documentos, súbelos manualmente, luego vuelve a ejecutar
npx valtik-markdown-exfil-tester https://chat.example.com \
  --mode indirect-doc --out-dir ./payload-docs --timeout 60

Biblioteca de payloads

Incluye más de 30 plantillas que cubren:

Descargar herramienta