Ślepy XSS na SSRF

Feb 01 2023
Podczas polowania na błędy w prywatnym programie bug bounty natknąłem się na funkcję w aplikacji, która pozwalała na generowanie dokumentów PDF. Ponieważ dane wprowadzone przez użytkownika znalazły odzwierciedlenie w wygenerowanych dokumentach PDF, postanowiłem spróbować wstrzyknąć ładunki HTML i XSS.

Podczas polowania na błędy w prywatnym programie bug bounty natknąłem się na funkcję w aplikacji, która pozwalała na generowanie dokumentów PDF. Ponieważ dane wprowadzone przez użytkownika znalazły odzwierciedlenie w wygenerowanych dokumentach PDF, postanowiłem spróbować wstrzyknąć ładunki HTML i XSS.

Użyłem znanego narzędzia o nazwie XSSHunter, które pozwala nam znaleźć ślepe luki w zabezpieczeniach cross-site scripting. Ku mojemu zdziwieniu mój ładunek został natychmiast wykonany i mogłem pobrać zrzut ekranu oraz następujące szczegóły na XSSHunter.

Dalsze dochodzenie wykazało, że ładunek został wykonany na ścieżce pliku

„plik: ///gotenberg/e86fbc55ef893d878821c1bc76c3b1e3/index.html”.

Gotenberg to interfejs API typu open source do konwersji dokumentów HTML, Markdown i Office do formatu PDF. Wykorzystuje zestaw konfigurowalnych silników renderujących do konwersji dokumentu wejściowego do pliku PDF. Parser Gotenberg jest komponentem Gotenberg, który pobiera dokument wejściowy i konwertuje go do formatu, który może być renderowany przez silniki.

Po dalszych testach odkryłem, że parser Gotenberg był podatny na ataki polegające na fałszowaniu żądań po stronie serwera. Udało mi się pomyślnie wykonać ładunek, który zawierał element iframe z src ustawionym na „file:///etc/passwd” . Pozwoliło mi to wyświetlić zawartość pliku „/etc/passwd” .

Ten typ luki umożliwia atakującemu dostęp do poufnych plików na serwerze poprzez manipulowanie ścieżką pliku w sposób umożliwiający przechodzenie przez system plików. Może to potencjalnie doprowadzić do ujawnienia poufnych informacji, a nawet całkowitego naruszenia bezpieczeństwa systemu.

Natychmiast zgłosiłem swoje odkrycia zespołowi ds. bezpieczeństwa, który sklasyfikował lukę jako wysoką. Jednak inny badacz bezpieczeństwa również zgłosił lukę w tym samym czasie. W rezultacie zespół postanowił podzielić nagrodę i otrzymałem 500 $.

Zasoby

https://media.defcon.org/DEF%20CON%2027/DEF%20CON%2027%20presentations/DEFCON-27-Ben-Sadeghipour-Owning-the-clout-through-SSRF-and-PDF-generators.pdf