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) 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.
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 aan '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.
Static JavaScript - Dit verteenwoordig die konvensionele vorm van XSSI.
Static JavaScript with Authentication - Hierdie tipe is uniek omdat dit outentisering vereis om toegang te verkry.
Dynamic JavaScript - Betrek JavaScript wat dinamies inhoud genereer.
Non-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.
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:
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:
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 verkry en lek:
Further details on attack vectors can be found in the work of Security Researcher Sebastian Lekies, who maintains a list of vectors.
Takeshi Terada se navorsing stel 'n ander vorm van XSSI bekend, waar Non-Script lêers, soos CSV, oor oorsprong geleak 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 leak, 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:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)