Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**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 JavaScriptu 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.
**The following information is a sumary of [https://www.scip.ch/en/?labs.20160414](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 umożliwia nieautoryzowany dostęp do wrażliwych danych. Przykład techniki wykorzystania pokazano poniżej:
### Dynamic-JavaScript-based-XSSI i Authenticated-JavaScript-XSSI
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](https://github.com/luh2/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, *prototype tampering* może czasami być wykorzystane. 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 `Array`'s `slice`, 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](https://twitter.com/slekies), który prowadzi listę [wektorów](http://sebastian-lekies.de/leak/).
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 Jeremiah Grossmana z 2006 roku na odczytanie 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:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Ucz się i ćwicz Hacking GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.