Server Side XSS (Dynamic PDF)
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wenn eine Webseite ein PDF mit benutzergesteuerten Eingaben erstellt, kannst du versuchen, den Bot zu täuschen, der das PDF erstellt, um willkürlichen JS-Code auszuführen. Wenn der PDF-Erstellungsbot eine Art von HTML Tags findet, wird er sie interpretieren, und du kannst dieses Verhalten ausnutzen, um eine Server XSS zu verursachen.
Bitte beachte, dass die <script></script>
Tags nicht immer funktionieren, daher benötigst du eine andere Methode, um JS auszuführen (zum Beispiel, indem du <img
ausnutzt).
Beachte auch, dass du bei einer regulären Ausnutzung in der Lage sein wirst, das erstellte PDF zu sehen/herunterzuladen, sodass du alles sehen kannst, was du über JS schreibst (zum Beispiel mit document.write()
). Aber wenn du das erstellte PDF nicht sehen kannst, musst du wahrscheinlich die Informationen extrahieren, indem du Webanfragen an dich sendest (Blind).
wkhtmltopdf ist bekannt für seine Fähigkeit, HTML und CSS in PDF-Dokumente zu konvertieren, wobei die WebKit-Rendering-Engine verwendet wird. Dieses Tool ist als Open-Source-Befehlszeilenprogramm verfügbar und somit für eine Vielzahl von Anwendungen zugänglich.
TCPDF bietet eine robuste Lösung innerhalb des PHP-Ökosystems für die PDF-Generierung. Es kann Bilder, Grafiken und Verschlüsselung verarbeiten und zeigt seine Vielseitigkeit bei der Erstellung komplexer Dokumente.
Für diejenigen, die in einer Node.js-Umgebung arbeiten, bietet PDFKit eine praktikable Option. Es ermöglicht die Generierung von PDF-Dokumenten direkt aus HTML und CSS und bietet eine Brücke zwischen Webinhalten und druckbaren Formaten.
Java-Entwickler könnten iText bevorzugen, eine Bibliothek, die nicht nur die PDF-Erstellung erleichtert, sondern auch erweiterte Funktionen wie digitale Signaturen und Formularfüllung unterstützt. Ihr umfassendes Funktionsspektrum macht sie geeignet für die Erstellung sicherer und interaktiver Dokumente.
FPDF ist eine weitere PHP-Bibliothek, die sich durch ihre Einfachheit und Benutzerfreundlichkeit auszeichnet. Sie ist für Entwickler konzipiert, die einen unkomplizierten Ansatz zur PDF-Generierung suchen, ohne umfangreiche Funktionen.
Jeder der vorherigen oder folgenden Payloads kann innerhalb dieses SVG-Payloads verwendet werden. Ein iframe, der auf die Burpcollab-Subdomain zugreift, und ein weiterer, der auf den Metadaten-Endpunkt zugreift, sind als Beispiele angegeben.
Sie können viele andere SVG-Payloads in https://github.com/allanlw/svg-cheatsheet finden.
Die beste konforme Möglichkeit, diese Schwachstelle auszunutzen, besteht darin, die Schwachstelle zu missbrauchen, um den Bot ein Skript laden zu lassen, das du lokal kontrollierst. Dann kannst du die Payload lokal ändern und den Bot dazu bringen, sie jedes Mal mit demselben Code zu laden.
Ändere file:///etc/passwd
in http://169.254.169.254/latest/user-data
, um beispielsweise auf eine externe Webseite zuzugreifen (SSRF).
Wenn SSRF erlaubt ist, du aber keinen Zugriff auf eine interessante Domain oder IP hast, prüfe diese Seite auf mögliche Umgehungen.
Diese Schwachstelle kann sehr einfach in eine SSRF umgewandelt werden (da Sie das Skript externe Ressourcen laden lassen können). Versuchen Sie also, sie auszunutzen (einige Metadaten lesen?).
Es gibt einige HTML 2 PDF-Engines, die es ermöglichen, Anhänge für das PDF anzugeben, wie PD4ML. Sie können diese Funktion missbrauchen, um jede lokale Datei an das PDF anzuhängen. Um den Anhang zu öffnen, habe ich die Datei mit Firefox geöffnet und auf das Büroklammer-Symbol doppelt geklickt, um den Anhang als neue Datei zu speichern. Das Erfassen der PDF-Antwort mit Burp sollte auch den Anhang im Klartext innerhalb des PDFs anzeigen.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)