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)
Jeśli strona internetowa tworzy PDF przy użyciu danych kontrolowanych przez użytkownika, możesz spróbować oszukać bota, który tworzy PDF, aby wykonał dowolny kod JS. Jeśli bot tworzący PDF znajdzie jakiś rodzaj znaczników HTML, będzie je interpretować, a ty możesz wykorzystać to zachowanie, aby spowodować Server XSS.
Zauważ, że znaczniki <script></script>
nie zawsze działają, więc będziesz potrzebować innej metody do wykonania JS (na przykład, wykorzystując <img
).
Również, pamiętaj, że w regularnej eksploatacji będziesz mógł zobaczyć/pobrać utworzony pdf, więc będziesz mógł zobaczyć wszystko, co piszesz za pomocą JS (używając document.write()
, na przykład). Ale, jeśli nie możesz zobaczyć utworzonego PDF, prawdopodobnie będziesz musiał wyodrębnić informacje, wykonując zapytania sieciowe do siebie (Blind).
wkhtmltopdf jest znany ze swojej zdolności do konwertowania HTML i CSS na dokumenty PDF, wykorzystując silnik renderujący WebKit. To narzędzie jest dostępne jako open-source narzędzie wiersza poleceń, co czyni je dostępnym dla szerokiego zakresu zastosowań.
TCPDF oferuje solidne rozwiązanie w ekosystemie PHP do generowania PDF. Jest w stanie obsługiwać obrazy, grafikę i szyfrowanie, co pokazuje jego wszechstronność w tworzeniu złożonych dokumentów.
Dla tych, którzy pracują w środowisku Node.js, PDFKit stanowi realną opcję. Umożliwia generowanie dokumentów PDF bezpośrednio z HTML i CSS, zapewniając most między treścią internetową a formatami do druku.
Programiści Java mogą preferować iText, bibliotekę, która nie tylko ułatwia tworzenie PDF, ale także wspiera zaawansowane funkcje, takie jak podpisy cyfrowe i wypełnianie formularzy. Jej kompleksowy zestaw funkcji sprawia, że jest odpowiednia do generowania bezpiecznych i interaktywnych dokumentów.
FPDF to kolejna biblioteka PHP, wyróżniająca się prostotą i łatwością użycia. Jest zaprojektowana dla programistów szukających prostego podejścia do generowania PDF, bez potrzeby rozbudowanych funkcji.
Każdy z poprzednich lub następujących ładunków może być użyty wewnątrz tego ładunku SVG. Jako przykłady podano jeden iframe uzyskujący dostęp do subdomeny Burpcollab i drugi uzyskujący dostęp do punktu końcowego metadanych.
Możesz znaleźć wiele innych ładunków SVG w https://github.com/allanlw/svg-cheatsheet
Najlepszym sposobem na wykorzystanie tej luki jest nadużycie jej, aby zmusić bota do załadowania skryptu, który kontrolujesz lokalnie. Wtedy będziesz mógł lokalnie zmieniać ładunek i sprawić, że bot załaduje go za każdym razem z tym samym kodem.
Zmień file:///etc/passwd
na http://169.254.169.254/latest/user-data
, aby spróbować uzyskać dostęp do zewnętrznej strony internetowej (SSRF).
Jeśli SSRF jest dozwolone, ale nie możesz dotrzeć do interesującej domeny lub IP, sprawdź tę stronę w poszukiwaniu potencjalnych obejść.
Ta podatność może być bardzo łatwo przekształcona w SSRF (ponieważ możesz sprawić, że skrypt załaduje zewnętrzne zasoby). Więc spróbuj to wykorzystać (przeczytać jakieś metadane?).
Istnieją silniki HTML 2 PDF, które pozwalają na określenie załączników do PDF, takie jak PD4ML. Możesz nadużyć tej funkcji, aby dołączyć dowolny lokalny plik do PDF. Aby otworzyć załącznik, otworzyłem plik w Firefoxie i dwukrotnie kliknąłem symbol spinacza aby zapisz załącznik jako nowy plik. Przechwycenie odpowiedzi PDF za pomocą burp powinno również pokazać załącznik w czystym tekście wewnątrz PDF.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)