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)
Se una pagina web sta creando un PDF utilizzando input controllato dall'utente, puoi provare a ingannare il bot che sta creando il PDF per eseguire codice JS arbitrario. Quindi, se il bot creatore di PDF trova qualche tipo di tag HTML, lo interpreterà, e puoi sfruttare questo comportamento per causare un Server XSS.
Per favore, nota che i tag <script></script>
non funzionano sempre, quindi avrai bisogno di un metodo diverso per eseguire JS (ad esempio, sfruttando <img
).
Inoltre, nota che in una regolare sfruttamento sarai in grado di vedere/scaricare il PDF creato, quindi sarai in grado di vedere tutto ciò che scrivi tramite JS (utilizzando document.write()
ad esempio). Ma, se non puoi vedere il PDF creato, probabilmente avrai bisogno di estrarre le informazioni facendo richieste web a te (Blind).
wkhtmltopdf è noto per la sua capacità di convertire HTML e CSS in documenti PDF, utilizzando il motore di rendering WebKit. Questo strumento è disponibile come utility da riga di comando open-source, rendendolo accessibile per una vasta gamma di applicazioni.
TCPDF offre una soluzione robusta all'interno dell'ecosistema PHP per la generazione di PDF. È in grado di gestire immagini, grafica e crittografia, mostrando la sua versatilità per creare documenti complessi.
Per coloro che lavorano in un ambiente Node.js, PDFKit presenta un'opzione valida. Consente la generazione di documenti PDF direttamente da HTML e CSS, fornendo un ponte tra contenuti web e formati stampabili.
Gli sviluppatori Java potrebbero preferire iText, una libreria che non solo facilita la creazione di PDF ma supporta anche funzionalità avanzate come firme digitali e compilazione di moduli. Il suo set di funzionalità completo lo rende adatto per generare documenti sicuri e interattivi.
FPDF è un'altra libreria PHP, distinta per la sua semplicità e facilità d'uso. È progettata per gli sviluppatori che cercano un approccio diretto alla generazione di PDF, senza la necessità di funzionalità estese.
Qualsiasi dei payload precedenti o seguenti può essere utilizzato all'interno di questo payload SVG. Un iframe che accede al sottodominio Burpcollab e un altro che accede all'endpoint dei metadati sono forniti come esempi.
Puoi trovare molti altri payload SVG in https://github.com/allanlw/svg-cheatsheet
Il modo migliore per sfruttare questa vulnerabilità è abusare della vulnerabilità per far caricare al bot uno script che controlli localmente. In questo modo, sarai in grado di modificare il payload localmente e far caricare al bot lo stesso codice ogni volta.
Cambia file:///etc/passwd
con http://169.254.169.254/latest/user-data
per esempio per cercare di accedere a una pagina web esterna (SSRF).
Se SSRF è consentito, ma non puoi raggiungere un dominio o un IP interessante, controlla questa pagina per potenziali bypass.
Questa vulnerabilità può essere facilmente trasformata in un SSRF (poiché puoi far caricare allo script risorse esterne). Quindi prova a sfruttarla (leggi alcuni metadati?).
Ci sono alcuni motori HTML 2 PDF che consentono di specificare allegati per il PDF, come PD4ML. Puoi abusare di questa funzionalità per allegare qualsiasi file locale al PDF. Per aprire l'allegato, ho aperto il file con Firefox e ho fatto doppio clic sul simbolo della graffetta per salvare l'allegato come un nuovo file. Catturare la risposta PDF con burp dovrebbe anche mostrare l'allegato in chiaro all'interno del PDF.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)