Server Side XSS (Dynamic PDF)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Si una página web está creando un PDF utilizando entrada controlada por el usuario, puedes intentar engañar al bot que está creando el PDF para que ejecute código JS arbitrario. Entonces, si el bot creador de PDF encuentra algún tipo de etiquetas HTML, va a interpretarlas, y puedes abusar de este comportamiento para causar un XSS en el servidor.
Por favor, ten en cuenta que las etiquetas <script></script>
no siempre funcionan, así que necesitarás un método diferente para ejecutar JS (por ejemplo, abusando de <img
).
Además, nota que en una explotación regular podrás ver/descargar el PDF creado, así que podrás ver todo lo que escribes a través de JS (usando document.write()
por ejemplo). Pero, si no puedes ver el PDF creado, probablemente necesitarás extraer la información haciendo solicitudes web a ti (Ciego).
wkhtmltopdf es conocido por su capacidad para convertir HTML y CSS en documentos PDF, utilizando el motor de renderizado WebKit. Esta herramienta está disponible como una utilidad de línea de comandos de código abierto, lo que la hace accesible para una amplia gama de aplicaciones.
TCPDF ofrece una solución robusta dentro del ecosistema PHP para la generación de PDF. Es capaz de manejar imágenes, gráficos y cifrado, mostrando su versatilidad para crear documentos complejos.
Para aquellos que trabajan en un entorno Node.js, PDFKit presenta una opción viable. Permite la generación de documentos PDF directamente desde HTML y CSS, proporcionando un puente entre el contenido web y los formatos imprimibles.
Los desarrolladores de Java pueden preferir iText, una biblioteca que no solo facilita la creación de PDF, sino que también admite características avanzadas como firmas digitales y llenado de formularios. Su conjunto de características integral lo hace adecuado para generar documentos seguros e interactivos.
FPDF es otra biblioteca PHP, distinguida por su simplicidad y facilidad de uso. Está diseñada para desarrolladores que buscan un enfoque directo para la generación de PDF, sin necesidad de características extensas.
Cualquiera de las cargas útiles anteriores o siguientes puede ser utilizada dentro de esta carga útil SVG. Se presentan como ejemplos un iframe que accede al subdominio de Burpcollab y otro que accede al endpoint de metadatos.
Puedes encontrar muchos otros payloads SVG en https://github.com/allanlw/svg-cheatsheet
La mejor manera de explotar esta vulnerabilidad es abusar de la vulnerabilidad para hacer que el bot cargue un script que controlas localmente. Luego, podrás cambiar la carga útil localmente y hacer que el bot la cargue con el mismo código cada vez.
Cambia file:///etc/passwd
por http://169.254.169.254/latest/user-data
por ejemplo para intentar acceder a una página web externa (SSRF).
Si SSRF está permitido, pero no puedes alcanzar un dominio o IP interesante, consulta esta página para posibles elusiones.
Esta vulnerabilidad se puede transformar muy fácilmente en un SSRF (ya que puedes hacer que el script cargue recursos externos). Así que solo intenta explotarla (¿leer algunos metadatos?).
Hay algunos motores de HTML a PDF que permiten especificar adjuntos para el PDF, como PD4ML. Puedes abusar de esta función para adjuntar cualquier archivo local al PDF. Para abrir el adjunto, abrí el archivo con Firefox y hice doble clic en el símbolo del clip para guardar el adjunto como un nuevo archivo. Capturar la respuesta PDF con burp también debería mostrar el adjunto en texto claro dentro del PDF.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)