Server Side XSS (Dynamic PDF)
Server Side XSS (Dynamic PDF)
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 interpreta, 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 un'esploitazione regolare sarai in grado di vedere/scaricare il PDF creato, quindi potrai 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).
Generazione PDF popolare
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, dimostrando la sua versatilità nella creazione di 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 la rende adatta 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.
Payloads
Discovery
SVG
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
Rivelazione del percorso
Carica uno script esterno
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.
Leggi file locale / SSRF
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.
Ritardo del bot
Scansione delle porte
Questa vulnerabilità può essere trasformata molto facilmente in un SSRF (poiché puoi far caricare allo script risorse esterne). Quindi prova a sfruttarla (leggi alcuni metadati?).
Allegati: PD4ML
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.
Riferimenti
Last updated