hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

113 lines
8.1 KiB
Markdown

# Mvamizi wa DOM
<details>
<summary><strong>Jifunze kuhusu kuvamia 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 ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Mvamizi wa DOM
Mvamizi wa DOM ni chombo cha kivinjari kilichowekwa kwenye kivinjari kilichojengwa ndani ya Burp. Inasaidia katika **kugundua udhaifu wa DOM XSS** kutumia vyanzo na mabwawa tofauti, ikiwa ni pamoja na ujumbe wa wavuti na uchafuzi wa prototype. Chombo hicho kimefungwa kabla kama kifaa cha nyongeza.
Mvamizi wa DOM huingiza kichupo ndani ya kichupo cha DevTools cha kivinjari kuruhusu yafuatayo:
1. **Utambuzi wa mabwawa yanayoweza kudhibitiwa** kwenye ukurasa wa wavuti kwa ajili ya majaribio ya DOM XSS, kutoa muktadha na maelezo ya kusafisha.
2. **Kuingiza, kuhariri, na kutuma tena ujumbe wa wavuti** uliotumwa kupitia njia ya `postMessage()` kwa majaribio ya DOM XSS. Mvamizi wa DOM pia inaweza kugundua moja kwa moja udhaifu kwa kutumia ujumbe maalum wa wavuti.
3. Kugundua **vyanzo vya uchafuzi wa prototype upande wa mteja** na uchunguzi wa vifaa vinavyoweza kudhibitiwa vinavyotumwa kwenye mabwawa hatari.
4. Utambuzi wa **udhaifu wa kufunika DOM**.
### Wezesha
Katika kivinjari kilichojengwa ndani ya Burp nenda kwa **Kifaa cha nyongeza cha Burp** na kiwezesha:
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
Sasa refusha ukurasa na katika **Zana za Dev** utapata **kichupo cha Mvamizi wa DOM:**
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Ingiza Kifaru
Katika picha iliyotangulia unaweza kuona **kikundi cha herufi za kubahatisha, hiyo ni Kifaru**. Sasa unapaswa kuanza **kuingiza** katika sehemu tofauti za wavuti (parameta, fomu, url...) na kila wakati bonyeza tafuta. Mvamizi wa DOM atachunguza ikiwa **kifaru kilimalizika kwenye mabwawa yoyote ya kuvutia** ambayo yanaweza kutumiwa.
Zaidi ya hayo, chaguo **Ingiza parameta za URL** na Ingiza fomu itafungua moja kwa moja **kichupo kipya** **kukiingiza** **kifaru** katika kila **parameta ya URL** na **fomu** inayopata.
### Ingiza Kifaru tupu
Ikiwa unataka tu kutambua mabwawa yanayoweza kuwa nayo ukurasa, hata kama hawawezi kutumiwa, unaweza **kutafuta kifaru tupu**.
### Ujumbe wa Posta
Mvamizi wa DOM inaruhusu majaribio ya DOM XSS kwa kutumia ujumbe wa wavuti na vipengele kama:
1. **Kuingiza ujumbe wa wavuti** uliotumwa kupitia `postMessage()`, kama kumbukumbu ya historia ya maombi/majibu ya HTTP ya Burp Proxy.
2. **Kuhariri** na **kutuma tena** ujumbe wa wavuti kwa majaribio ya kawaida ya DOM XSS, sawa na kazi ya Burp Repeater.
3. **Kubadilisha moja kwa moja** na kutuma ujumbe wa wavuti kwa ajili ya kuchunguza DOM XSS.
#### Maelezo ya Ujumbe
Maelezo ya kina yanaweza kuonekana kuhusu kila ujumbe kwa kubonyeza, ambayo ni pamoja na ikiwa JavaScript upande wa mteja unafikia mali za `asili`, `data`, au `chanzo` za ujumbe.
* **`asili`** : Ikiwa **habari ya asili ya ujumbe haijachunguzwa**, unaweza kutuma ujumbe wa msalaba wa asili kwa kushughulikiaji wa tukio **kutoka kwenye kikoa cha nje cha kiholela**. Lakini ikiwa imechunguzwa bado inaweza kuwa si salama.
* **`data`**: Hapa ndipo mzigo unatumwa. Ikiwa data hii haikutumiwi, bwawa ni bure.
* **`chanzo`**: Inathibitisha ikiwa mali ya chanzo, kawaida ikirejelea iframe, imehakikiwa badala ya asili. Hata kama hii imechunguzwa, haitoi uhakika kwamba uthibitisho hauwezi kukiukwa.
#### Jibu ujumbe
1. Kutoka kwenye **Maoni** angalia ujumbe wowote ili ufungue dirisha la maelezo ya ujumbe.
2. Hariri **Data** kama inavyotakiwa.
3. Bonyeza **Tuma**.
### Uchafuzi wa Prototype
Mvamizi wa DOM pia unaweza kutafuta **udhaifu wa Uchafuzi wa Prototype**. Kwanza, unahitaji kuwezesha:
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
Kisha, ita **tafuta vyanzo** vinavyokuwezesha kuongeza mali za **`Object.prototype`**.
Ikiwa kitu kinapatikana, kitufe cha **Jaribu** kitatokea ili **kujaribu chanzo kilichopatikana**. Bonyeza, kichupo kipya kitatokea, tengeneza kitu kwenye konsoli na angalia ikiwa `testproperty` ipo:
```javascript
let b = {}
b.testproperty
```
Baada ya kupata chanzo unaweza **kutafuta kifaa**:
1. Kichupo kipya kinafunguliwa na DOM Invader wakati kifungo cha **Tafuta vifaa** kinapobonyezwa, ambacho kinaweza kupatikana karibu na chanzo chochote cha uchafuzi wa prototipi kilichotambuliwa katika mtazamo wa **DOM**, kimebonyezwa. Uchambuzi wa vifaa vinavyofaa kisha huanza.
2. Wakati huo huo, katika kichupo kile kile, kichupo cha **DOM Invader** kinapaswa kufunguliwa kwenye paneli ya DevTools. Baada ya uchambuzi kukamilika, mabwawa yoyote yanayopatikana kupitia vifaa vilivyotambuliwa huonyeshwa katika mtazamo wa **DOM**. Kwa mfano, mali ya kifaa inayoitwa `html` ikipitishwa kwenye bwawa la `innerHTML` inaonyeshwa katika mfano hapa chini.
## DOM clobbering
Katika picha iliyopita inawezekana kuona kwamba uchambuzi wa kufunika DOM unaweza kuwashwa. Mara baada ya kufanyika, **DOM Invader itaanza kutafuta vulnerabilities za kufunika DOM**.
## Marejeo
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za 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 PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>