XSSI (Cross-Site Script Inclusion)
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)
Cross-Site Script Inclusion (XSSI) to luka, która wynika z natury tagu script
w HTML. W przeciwieństwie do większości zasobów, które podlegają Same-Origin Policy (SOP), skrypty mogą być dołączane z różnych domen. To zachowanie ma na celu ułatwienie korzystania z bibliotek i innych zasobów hostowanych na różnych serwerach, ale wprowadza również potencjalne ryzyko bezpieczeństwa.
Bypass of SOP: Skrypty są zwolnione z Same-Origin Policy, co pozwala na ich dołączanie między domenami.
Data Exposure: Atakujący może wykorzystać to zachowanie do odczytu danych załadowanych za pomocą tagu script
.
Impact on Dynamic JavaScript/JSONP: XSSI jest szczególnie istotne dla dynamicznego JavaScript lub JSON with Padding (JSONP). Technologie te często wykorzystują informacje "ambient-authority" (takie jak ciasteczka) do uwierzytelniania. Gdy żądanie skryptu jest wysyłane do innego hosta, te dane uwierzytelniające (np. ciasteczka) są automatycznie dołączane do żądania.
Authentication Token Leakage: Jeśli atakujący może oszukać przeglądarkę użytkownika, aby zażądała skryptu z serwera, który kontroluje, może uzyskać dostęp do wrażliwych informacji zawartych w tych żądaniach.
Static JavaScript - To reprezentuje konwencjonalną formę XSSI.
Static JavaScript with Authentication - Ten typ jest odmienny, ponieważ wymaga uwierzytelnienia do uzyskania dostępu.
Dynamic JavaScript - Dotyczy JavaScript, który dynamicznie generuje treść.
Non-JavaScript - Odnosi się do luk, które nie dotyczą bezpośrednio JavaScript.
The following information is a sumary of https://www.scip.ch/en/?labs.20160414. Check it for further details.
W tym podejściu prywatne informacje są osadzone w ogólnodostępnym pliku JavaScript. Atakujący mogą identyfikować te pliki za pomocą metod takich jak odczyt plików, wyszukiwanie słów kluczowych lub wyrażeń regularnych. Po zlokalizowaniu skryptu zawierającego prywatne informacje można go dołączyć do złośliwej treści, co pozwala na nieautoryzowany dostęp do wrażliwych danych. Przykład techniki wykorzystania przedstawiono poniżej:
Te typy ataków XSSI polegają na dynamicznym dodawaniu poufnych informacji do skryptu w odpowiedzi na żądanie użytkownika. Wykrywanie można przeprowadzić, wysyłając żądania z i bez ciasteczek oraz porównując odpowiedzi. Jeśli informacje się różnią, może to wskazywać na obecność poufnych danych. Proces ten można zautomatyzować za pomocą narzędzi takich jak DetectDynamicJS rozszerzenie Burp.
Jeśli poufne dane są przechowywane w zmiennej globalnej, można je wykorzystać za pomocą podobnych metod jak w Regular XSSI. Jednak jeśli poufne dane są zawarte w odpowiedzi JSONP, atakujący mogą przejąć funkcję zwrotną, aby uzyskać te informacje. Można to zrobić, manipulując obiektami globalnymi lub ustawiając funkcję do wykonania przez odpowiedź JSONP, jak pokazano poniżej:
Dla zmiennych, które nie znajdują się w globalnej przestrzeni nazw, manipulacja prototypem może czasami być wykorzystana. Technika ta wykorzystuje projekt JavaScriptu, w którym interpretacja kodu polega na przeszukiwaniu łańcucha prototypów w celu zlokalizowania wywoływanej właściwości. Poprzez nadpisanie niektórych funkcji, takich jak slice
w Array
, atakujący mogą uzyskać dostęp do zmiennych nieglobalnych i je ujawniać:
Dalsze szczegóły dotyczące wektorów ataku można znaleźć w pracy badacza bezpieczeństwa Sebastiana Lekiesa, który prowadzi listę wektorów.
Badania Takeshiego Terady wprowadzają inną formę XSSI, w której pliki Non-Script, takie jak CSV, są wyciekane między źródłami poprzez włączenie ich jako źródła w tagu script
. Historyczne przypadki XSSI, takie jak atak Jeremiaha Grossmana z 2006 roku na odczyt pełnej książki adresowej Google oraz wyciek danych JSON Joe Walkera z 2007 roku, podkreślają powagę tych zagrożeń. Dodatkowo, Gareth Heyes opisuje wariant ataku z wykorzystaniem kodowania UTF-7 w JSON, aby uciec od formatu JSON i wykonać skrypty, skuteczny w niektórych przeglądarkach:
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)