# Mvamizi wa DOM
Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa nahtARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
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 [**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 kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## 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 upande wa mteja** na uchunguzi wa vifaa vinavyoweza kudhibitiwa vinavyotumwa kwenye mabwawa hatari.
4. Utambuzi wa **udhaifu wa kufunika wa DOM**.
### Wezesha
Katika kivinjari kilichojengwa ndani ya Burp nenda kwa **Kifaa cha Burp** na kiwezesha:
Sasa refusha ukurasa na katika **Zana za Dev** utapata **kichupo cha Mvamizi wa DOM:**
### Ingiza Kifaru
Katika picha iliyopita unaweza kuona **kikundi cha herufi, 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 bwawa lolote la kuvutia** ambalo linaweza kutumiwa.
Zaidi ya hayo, chaguo **Ingiza parameta za URL** na Ingiza fomu zitafungua 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 vile:
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 juu yake, ambayo ni pamoja na ikiwa JavaScript ya upande wa mteja ina ufikiaji wa mali za `asili`, `data`, au `chanzo` za ujumbe.
* **`asili`** : Ikiwa **taarifa ya asili ya ujumbe haijachunguzwa**, unaweza kutuma ujumbe wa msalaba wa asili kwa kushughulikiaji wa tukio **kutoka kwenye kikoa cha nje cha aina yoyote**. 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 uhakikisho 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:
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 kitufe cha **Tafuta vifaa** kinapobonyezwa, ambacho kinaweza kupatikana karibu na chanzo chochote cha uchafuzi wa prototype kilichotambuliwa katika mtazamo wa **DOM**, kisha skani ya vifaa vinavyofaa huanza.
2. Wakati huo huo, katika kichupo kile kile, kichupo cha **DOM Invader** kinapaswa kufunguliwa katika paneli ya DevTools. Baada ya skani kukamilika, mabwawa yoyote yanayopatikana kupitia vifaa vilivyotambuliwa huonyeshwa katika mtazamo wa **DOM**. Kwa mfano, mali ya kifaa inayoitwa `html` ikipitishwa kwa bwawa la `innerHTML` inaonyeshwa katika mfano hapa chini.
## DOM clobbering
Katika picha iliyopita inawezekana kuona kuwa skani ya DOM clobbering inaweza kuwashwa. Mara ikifanyika, **DOM Invader itaanza kutafuta udhaifu wa DOM clobbering**.
## 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)
Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa nahtARTE (HackTricks AWS Red Team Expert)!
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 udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.