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
malicious-pdf — Genera archivos PDF de prueba maliciosos para pruebas de penetración, búsqueda de bug bounties y red teaming. Prueba SSRF, XSS, XXE, robo de credenciales NTLM y exfiltración de datos en visores de PDF, convertidores y aplicaciones web. Se integra con Burp Collaborator e Interact.sh. | Kitploit
Herramientas/GitHubGitHub/jonaslejon/malicious-pdf
Herramientas de PhishingEscáneres de VulnerabilidadesGeneración de PayloadsExplotaciónExplotación de Aplicaciones WebExfiltración de DatosPruebas de PenetraciónAprendizaje y EducaciónRed Teaming

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 →

Acerca de

GitHubjonaslejon/malicious-pdf

malicious-pdf

Ver Repositorio
4.1k546hace 2 mesesRevisado por Kitploit

Genera archivos PDF de prueba maliciosos para pruebas de penetración, búsqueda de bug bounties y red teaming. Prueba SSRF, XSS, XXE, robo de credenciales NTLM y exfiltración de datos en visores de PDF, convertidores y aplicaciones web. Se integra con Burp Collaborator e Interact.sh.

Compartir

malicious-pdf.png

made-with-python OpenSSF Best Practices

Generador de PDF malicioso ☠️

Genera 67 archivos PDF maliciosos de prueba para probar devoluciones de llamada phone-home, SSRF, XSS, XXE, robo de credenciales NTLM y exfiltración de datos en visores de PDF, convertidores y aplicaciones web. Se puede usar con Burp Collaborator o Interact.sh

Se utiliza para pruebas de penetración, caza de bug bounty y/o red-teaming, etc. Creé esta herramienta porque necesitaba una herramienta para generar un montón de archivos PDF con varios enlaces. Solo con fines educativos y profesionales.

Uso```

pip install -r requirements.txt python3 malicious-pdf.py burp-collaborator-url

root@kitploit:~
La salida se escribirá en el directorio `output/` como: test1.pdf, test2.pdf, test3.pdf, etc.

### Opciones```
--output-dir DIR    Directory to save generated PDF files (default: output/)
--no-credit         Do not embed credit/attribution metadata in generated PDFs
--obfuscate LEVEL   Obfuscation level (0-3):
                      0 = None (default)
                      1 = PDF name hex encoding + string octal/hex encoding
                      2 = Level 1 + JS bracket notation + javascript: URI case/whitespace obfuscation
                      3 = Level 2 + FlateDecode stream compression

Ejemplo con ofuscación:``` python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 2

root@kitploit:~
Ofuscación máxima (el nivel 4 envuelve los payloads JS en un stub de decodificación base64, de modo que las llamadas API originales nunca aparecen como subcadenas literales):```
python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 4

Propósito

  • Probar páginas/servicios web que aceptan archivos PDF
  • Probar productos de seguridad
  • Probar lectores de PDF
  • Probar convertidores de PDF
  • Probar bibliotecas de procesamiento de PDF del lado del servidor (PDFBox, iText, etc.)
  • Probar herramientas de análisis estático de PDF: las cargas útiles JS por etapas (campo de formulario /V, decodificador base64) burlan a los escáneres ingenuos de regex /JS
  • Caza de bug bounty: útil para encontrar SSRF, XXE, devoluciones de llamada ciegas y fugas NTLM en endpoints de carga de archivos, convertidores de PDF a imagen y canalizaciones de procesamiento de documentos en programas que aceptan entrada PDF

Créditos

  • Características inseguras en los PDF
  • Burp Suite UploadScanner
  • Bad-Pdf
  • Una exploración curiosa de documentos PDF maliciosos
  • Charla «Portable Document Flaws 101» en Black Hat USA 2020
  • Adobe Reader: devolución de llamada PDF mediante hoja de estilos XSLT en XFA
  • Prueba de concepto para Foxit PDF Reader, DoHyun Lee
  • Archivo de prueba EICAR de Stas Yakobov
  • Múltiples vulnerabilidades en PDF: FormCalc y XXE
  • PDF: jugar con la web: inyección de cabeceras FormCalc
  • Adobe Reader PDF: inyección de solicitudes del lado del cliente
  • ImageMagick: inyección de shell a través de la contraseña del PDF
  • Exfiltración de datos portátil: investigación de PortSwigger
  • CVE-2024-4367: ejecución arbitraria de JS en PDF.js
  • Seguridad de formatos de archivo PDF: Philippe Lagadec
  • CVE-2016-2175: Apache PDFBox XXE
  • CVE-2017-9096: iText XXE
  • CVE-2020-29075: Acrobat Reader: rastreo DNS silencioso

En los medios

  • Brisk Infosec
  • Daily REDTeam
  • Archivo PDF malicioso | Red Team | Pruebas de penetración
  • John Hammond: ¿Puede un archivo PDF ser malware?
  • Black Hat Ethical Hacking
  • 0x1 Pentesting Collection
  • Security Toolkit / WADComs
  • unsafe.sh
  • Cristi Zot en LinkedIn
  • Siva R. en LinkedIn

Matriz de pruebas completa

Haz clic para expandir los 70 casos de prueba

Pendiente: nuevos casos de prueba

  • API de fingerprinting JS de Acrobat — Añadir casos de prueba para las API de reconocimiento/fingerprinting usadas en la cadena de explotación del 0-day de Adobe de abril de 2026 (referencia): Collab.isDocReadOnly (sondeo del sistema de archivos), app.plugIns (enumerar plugins instalados), app.viewerVersion (fingerprinting de versión)

Pendiente: métodos de ofuscación aún no implementados

  • Cifrado PDF con contraseña vacía — Cifrar todas las cadenas/flujos con la contraseña de usuario vacía. El documento se abre sin preguntar, pero las herramientas de análisis estático no pueden leer el contenido. La mayor carencia de la ofuscación actual. Ref: Didier Stevens, ¿Qué tan seguro es el cifrado PDF?
  • Flujos de objetos (ObjStm) — Ocultar objetos PDF dentro de contenedores de flujo comprimido. Los analizadores simples (incluido PDFiD sin la opción -O) pierden los objetos por completo. Ref: Especificación PDF ISO 32000 §7.5.7
  • Almacenamiento de código mediante getAnnots() — Dividir la carga útil de JavaScript entre campos de metadatos de anotaciones (asunto, autor). Recuperarla en tiempo de ejecución mediante app.doc.getAnnots()[n].subject y eval. Ref: Julia Wolf: ofuscación de PDF mediante getAnnots()
  • Extracción de datos del diccionario Info — Almacenar la carga útil codificada en los campos del trailer /Info (/Title, /Author). Recuperarla en tiempo de ejecución mediante info.Title en JS. Ref: trucos PDF de corkami
  • Extracción de valor de campos AcroForm — Almacenar fragmentos de la carga útil en valores /V de campos de formulario. Recuperarlos mediante en JS. Ref:

No se implementará

  • CVE-2023-26369 - Adobe Acrobat TTF font heap OOB write — Requiere explotación binaria (heap spray, cadenas ROP, shellcode). No hay PoC público. No puede producir una devolución de llamada simple.
  • CVE-2021-28550 - Adobe Acrobat Use-After-Free — Requiere cadena de explotación binaria + escape de sandbox (CVE-2021-31199/31201). No hay PoC público. No puede producir una devolución de llamada simple.

Historial de estrellas

Gráfico de historial de estrellas

Descargar herramienta
  • CVE-2022-28244: Acrobat Reader: bypass de CSP
  • CVE-2018-5158: Firefox PDF.js: inyección de calculadora PostScript
  • CVE-2018-20065: PDFium: acción URI sin gesto del usuario
  • ExpMon: análisis sofisticado de un 0-day de Adobe Reader (abril de 2026) — inspiración para test33_13/14/15 y el nivel de ofuscación 4
  • Archivo de pruebaFunciónCVE/ReferenciaVector de ataqueMétodoImpacto
    test1.pdfcreate_malpdf()CVE-2018-4993Acceso a archivo externoAcción /GoToE con ruta UNCDevolución de llamada de red a través del sistema de archivos
    test1_1.pdfcreate_malpdf()CVE-2018-4993Acceso a archivo externoAcción /GoToE con URL HTTPSDevolución de llamada de red a través de HTTPS
    test2.pdfcreate_malpdf2()Envío de formulario XFAExfiltración de datos de formularioFormulario XDP con evento de envíoEnvío automático de formulario
    test3.pdfcreate_malpdf3()Inyección de JavaScriptEjecución de código/OpenAction con app.openDoc()Carga de documento externo
    test4.pdfcreate_malpdf4()CVE-2019-7089Inyección XSLTXFA con hoja de estilos XSLT externaDevolución de llamada de ruta UNC
    test5.pdfcreate_malpdf5()Investigación PDF101Acción URITipo de acción /URIPrefetch de DNS/solicitud HTTP
    test6.pdfcreate_malpdf6()Investigación PDF101Acción de lanzamiento/Launch con URL externaEjecución de recurso externo
    test7.pdfcreate_malpdf7()Investigación PDF101PDF remotoAcción /GoToRCarga de PDF remoto
    test8.pdfcreate_malpdf8()Investigación PDF101Envío de formulario/SubmitForm con indicadores HTMLEnvío de datos de formulario
    test9.pdfcreate_malpdf9()Investigación PDF101Importación de datosAcción /ImportDataImportación de datos externa
    test10.pdfcreate_malpdf10()CVE-2017-10951Ejecución de JavaScriptDevolución de llamada this.getURL() de FoxitDevolución de llamada de red mediante Foxit Reader
    test11.pdfcreate_malpdf11()Prueba EICARDetección por antivirusCadena EICAR incrustadaPrueba de antivirus
    test12.pdfcreate_malpdf12()CVE-2014-8453Exfiltración de datos FormCalcFunción Post() de XFA FormCalcExfiltración de datos de mismo origen con cookies
    test13.pdfcreate_malpdf13()Inyección de solicitudesInyección de cabeceras CRLFEnvío XFA textEncoding CRLFManipulación de cabeceras HTTP
    test14.svgcreate_malpdf14()Inyección de shell en ImageMagickInyección de shell mediante SVG/MSLAtributo authenticate políglota SVG-MSLEjecución remota de código mediante ImageMagick
    test15.pdfcreate_malpdf15()Especificación PDFInyección de cabeceras FormCalcPost() de XFA FormCalc con cabeceras personalizadasInyección arbitraria de cabeceras HTTP
    test16.pdfcreate_malpdf16()Especificación PDFJavaScript mediante GotoE/GoToE con URI javascript:XSS en el navegador cuando el PDF se incrusta mediante <embed>/<object>
    test17.pdfcreate_malpdf17()CVE-2014-8452Inyección XXEEntidad externa en XMLData.parse()Resolución de entidades externas XML
    test18.pdfcreate_malpdf18()Investigación de PortSwiggerInyección URI en anotacionesLos paréntesis sin escapar inyectan una acción JS mediante la clave /A duplicadaXSS a través de la salida de PDF-Lib/jsPDF
    test19.pdfcreate_malpdf19()Investigación de PortSwiggerAuto-ejecución PVLa anotación de pantalla /AA /PV dispara JS al hacerse visible la páginaEjecución automática de código (Acrobat)
    test20.pdfcreate_malpdf20()Investigación de PortSwiggerDisparador de cierre PCLa anotación /AA /PC dispara JS al cerrar la páginaEjecución de código al cerrar (Acrobat)
    test21.pdfcreate_malpdf21()Investigación de PortSwiggerEnvío SubmitForm SubmitPDF/SubmitForm con indicadores 256 envía el PDF completoExfiltración del contenido completo del PDF
    test22.pdfcreate_malpdf22()Investigación de PortSwiggerEnvío mediante JS submitForm()this.submitForm() con cSubmitAs: "PDF"Envío del contenido del PDF (Acrobat)
    test23.pdfcreate_malpdf23()Investigación de PortSwiggerInyección de botón de widgetWidget /Btn invisible que cubre la página, JS al hacer clicEjecución de código (Chrome/PDFium)
    test24.pdfcreate_malpdf24()Investigación de PortSwiggerSSRF en campo de textoCampo de widget /Tx con submitForm() POSTSSRF ciega mediante datos de formulario
    test25.pdfcreate_malpdf25()Investigación de PortSwiggerExtracción de contenidogetPageNthWord() lee todo el texto y lo exfiltraExfiltración de texto renderizado
    test26.pdfcreate_malpdf26()Investigación de PortSwiggerDisparador al pasar el ratónLa anotación /AA /E dispara JS al entrar el ratónEjecución de código al pasar el ratón (PDFium)
    test27——EliminadoDuplicado de test3 (JS de OpenAction en Acrobat) + test23 (Widget Btn en Chrome)—
    test28.pdfcreate_malpdf28()Investigación de PortSwiggerSecuestro de URLLos paréntesis sin escapar inyectan una nueva acción /URIRedirección al hacer clic mediante PDF-Lib/jsPDF
    test29.pdfcreate_malpdf29()CVE-2024-4367Inyección de FontMatrixLa cadena FontMatrix de la fuente Type1 escapa de c.transform()Ejecución arbitraria de JS en PDF.js (Firefox < 126)
    test30.pdfcreate_malpdf30()Investigación PDF101Flujo XObject externoEl XObject de imagen obtiene datos de una URL remota mediante /FS /URLDevolución de llamada silenciosa mediante el renderizado de página (sin acciones/JS)
    test31.pdfcreate_malpdf31()Investigación PDF101Acción de hilo/S /Thread con FileSpec remotoDevolución de llamada de red mediante referencia de hilo
    test32.pdfcreate_malpdf32()Investigación PDF101Lanzamiento con impresión/Launch con /Win << /O /print >> fuerza la obtención remotaDevolución de llamada de red mediante operación de impresión
    test33_1.pdfcreate_malpdf33_1()Investigación PDF101JS: this.submitForm()Devolución de llamada de envío de formulario JS de AcrobatAcrobat Reader
    test33_2.pdfcreate_malpdf33_2()Investigación PDF101JS: this.getURL()Devolución de llamada de obtención de URL JS de AcrobatAcrobat Reader
    test33_3.pdfcreate_malpdf33_3()Investigación PDF101JS: app.launchURL()Devolución de llamada de lanzamiento de URL JS de AcrobatAcrobat Reader
    test33_4.pdfcreate_malpdf33_4()Investigación PDF101JS: app.media.getURLData()Devolución de llamada de obtención de datos multimedia JS de AcrobatAcrobat Reader
    test33_5.pdfcreate_malpdf33_5()Investigación PDF101JS: SOAP.connect()Conexión SOAP JS de AcrobatAcrobat Reader
    test33_6.pdfcreate_malpdf33_6()Investigación PDF101JS: SOAP.request()Solicitud SOAP JS de AcrobatAcrobat Reader
    test33_7.pdfcreate_malpdf33_7()Investigación PDF101JS: this.importDataObject()Importación de datos JS de AcrobatAcrobat Reader
    test33_8.pdfcreate_malpdf33_8()Investigación PDF101JS: app.openDoc()Apertura de documento JS de AcrobatAcrobat Reader
    test33_9.pdfcreate_malpdf33_9()Investigación PDF101JS: fetch()Devolución de llamada de API web (PDF.js/navegador)Firefox/PDF.js
    test33_10.pdfcreate_malpdf33_10()Investigación PDF101JS: XMLHttpRequestDevolución de llamada de API web (PDF.js/navegador)Firefox/PDF.js
    test33_11.pdfcreate_malpdf33_11()Investigación PDF101JS: new Image()Devolución de llamada de imagen de API web (PDF.js/navegador)Firefox/PDF.js
    test33_12.pdfcreate_malpdf33_12()Investigación PDF101JS: WebSocketDevolución de llamada WebSocket de API web (PDF.js/navegador)Firefox/PDF.js
    test33_13.pdfcreate_malpdf33_13()Blog del 0-day de Adobe (abril de 2026)JS: RSS.addFeed()Devolución de llamada de fuente RSS JS de AcrobatAcrobat Reader
    test33_14.pdfcreate_malpdf33_14()Blog del 0-day de Adobe (abril de 2026)JS: util.readFileIntoStream() + SOAP.request()Lectura de archivo local + cadena de exfiltración (la ruta de error try/catch también hace devoluciones de llamada)Acrobat Reader
    test33_15.pdfcreate_malpdf33_15()Blog del 0-day de Adobe (abril de 2026)Cargador JS por etapas en campo de formularioCarga útil Base64 en el widget /Tx /V, decodificada mediante getField() + util.stringFromStreamAcrobat Reader
    test34_1.pdfcreate_malpdf34_1()Investigación PDF101UNC: flujo XObjectXObject de imagen con ruta UNCRobo NTLM mediante renderizado de página
    test34_2.pdfcreate_malpdf34_2()Investigación PDF101UNC: GoToRAcción /GoToR con FileSpec UNCRobo NTLM mediante PDF remoto
    test34_3.pdfcreate_malpdf34_3()Investigación PDF101UNC: ThreadAcción /Thread con FileSpec UNCRobo NTLM mediante referencia de hilo
    test34_4.pdfcreate_malpdf34_4()Investigación PDF101UNC: URIAcción /URI con ruta UNCRobo NTLM mediante acción URI
    test34_5.pdfcreate_malpdf34_5()Investigación PDF101UNC: JS submitFormthis.submitForm() con ruta UNCRobo NTLM mediante envío de formulario JS
    test34_6.pdfcreate_malpdf34_6()Investigación PDF101UNC: JS getURLthis.getURL() con ruta UNCRobo NTLM mediante obtención de URL JS
    test34_7.pdfcreate_malpdf34_7()Investigación PDF101UNC: JS launchURLapp.launchURL() con ruta UNCRobo NTLM mediante lanzamiento JS
    test34_8.pdfcreate_malpdf34_8()Investigación PDF101UNC: JS SOAPSOAP.connect() con ruta UNCRobo NTLM mediante SOAP JS
    test34_9.pdfcreate_malpdf34_9()Investigación PDF101UNC: JS openDocapp.openDoc() con ruta UNCRobo NTLM mediante apertura de documento JS
    test35.pdfcreate_malpdf35()Investigación PDF101Diccionario de nombresDisparador de auto-ejecución a nivel de catálogo /Names /JavaScriptDisparador alternativo de ejecución JS
    test36.pdfcreate_malpdf36()CVE-2016-2175 / CVE-2017-9096XXE en metadatos XMP<!ENTITY> XXE en el flujo XMP /MetadataDevolución de llamada del lado del servidor (PDFBox, iText)
    test37.pdfcreate_malpdf37()CVE-2016-2175 / CVE-2017-9096XXE en datos de formulario XFA<!ENTITY> XXE en el flujo /AcroForm /XFADevolución de llamada del lado del servidor (PDFBox, iText)
    test38.pdfcreate_malpdf38()CVE-2020-29075Rastreo DNS silenciosoCatálogo /AA con disparadores /WC, /WS, /DSDevolución de llamada DNS sin aviso (Acrobat)
    test39.pdfcreate_malpdf39()CVE-2022-28244Bypass de CSPAnotación RichMedia con HTML/JS incrustadoSolicitud entre orígenes (Acrobat)
    test40.pdfcreate_malpdf40()CVE-2018-5158Inyección de calculadora PostScriptInyección JS /FunctionType 4 en XObject de imagenEjecución de JS en el worker de PDF.js (Firefox)
    test41.pdfcreate_malpdf41()CVE-2018-20065URI sin gesto del usuario/OpenAction con auto-navegación /S /URINavegación silenciosa (PDFium/Chrome)
    test42.pdfcreate_malpdf42()CVE-2025-66516Entidad de parámetro XXE OOB en XFALa entidad de parámetro %xxe; en /AcroForm /XFA fuerza la obtención de DTDXXE ciega del lado del servidor (Tika, Confluence, Jira)
    test43.pdfcreate_malpdf43()CVE-2025-70401XSS en campo /T de anotaciónEtiqueta `` en el campo /T (autor) de anotación de textoDevolución de llamada XSS (Apryse WebViewer, visores web)
    test44.pdfcreate_malpdf44()CVE-2024-12426Expansión de URL en LibreOffice/URI con vnd.sun.star.expand: expande ${HOME}Exfiltración de variables de entorno (LibreOffice < 24.8.4)
    test45.pdfcreate_malpdf45()CVE-2025-59803Disparador JS de OCG al firmar/AA /WP+/DP dispara JS mediante OCG en el flujo de firmaDevolución de llamada durante la firma (Foxit < 2025.2.1)
    test46.pdfcreate_malpdf46()CVE-2026-25755Inyección de objeto jsPDFCadena JS rota + auto-acción /AA /O inyectadaAuto-devolución de llamada en cualquier visor (jsPDF < 4.2.0)
    test47.pdfcreate_malpdf47()Especificación PDF 2.0Incrustación HTML de archivos asociadosHTML mediante catálogo /AF + /EF EmbeddedFileDevolución de llamada mediante HTML incrustado (visores PDF 2.0)
    test48.pdfcreate_malpdf48()Especificación XFADevolución de llamada SOAP XFA<submit method="soap"> con evento initializeSolicitud HTTP SOAP (motor XFA de Acrobat)
    getField("name").value
    trucos PDF de corkami
  • Ejecución dividida en árbol de nombres — Dividir JavaScript entre múltiples entradas /Names ejecutadas secuencialmente. Ref: trucos PDF de corkami
  • Actualizaciones incrementales después de %%EOF — Añadir nuevos objetos/acciones después del marcador %%EOF original mediante actualización incremental. Ref: enmascaramiento de contenido PDF101, Didier Stevens
  • Codificación con unescape() de JS — Envolver la carga útil JS en eval(unescape("%61%6C%65%72%74...")). Ref: trucos PDF de corkami
  • Encabezados de archivo falsos — Anteponer bytes mágicos JPEG/HTML/otros antes del encabezado %PDF- (la especificación permite el encabezado dentro de los primeros 1024 bytes). Confunde la detección de tipo de archivo. Ref: corkami, Decalage
  • Comprobaciones anti-emulación — Detectar Adobe Reader real mediante event.target.zoomType == "FitPage" o comprobaciones de tipo de variables globales antes de ejecutar la carga útil. Ref: trucos PDF de corkami