# DOM Invader {{#include ../../banners/hacktricks-training.md}} ## DOM Invader DOM Invader ni chombo cha kivinjari kilichosakinishwa katika kivinjari cha ndani cha Burp. Kinasaidia katika **kubaini udhaifu wa DOM XSS** kwa kutumia vyanzo na visinki mbalimbali, ikiwa ni pamoja na ujumbe wa wavuti na uchafuzi wa prototype. Chombo hiki kimewekwa awali kama nyongeza. DOM Invader inaunganisha kichupo ndani ya paneli ya DevTools ya kivinjari ikiruhusu yafuatayo: 1. **Utambuzi wa visinki vinavyoweza kudhibitiwa** kwenye ukurasa wa wavuti kwa ajili ya upimaji wa DOM XSS, ikitoa muktadha na maelezo ya kusafisha. 2. **Kurekodi, kuhariri, na kutuma tena ujumbe wa wavuti** uliopelekwa kupitia njia ya `postMessage()` kwa ajili ya upimaji wa DOM XSS. DOM Invader pia inaweza kugundua udhaifu kiotomatiki kwa kutumia ujumbe wa wavuti ulioandaliwa kwa njia maalum. 3. Kugundua **vyanzo vya uchafuzi wa prototype upande wa mteja** na kuskanisha vifaa vinavyoweza kudhibitiwa vilivyopelekwa kwa visinki hatari. 4. Utambuzi wa **udhaifu wa DOM clobbering**. ### Wezesha Katika kivinjari cha ndani cha Burp nenda kwenye **Burp extension** na uweke:
Sasa refresh ukurasa na katika **Dev Tools** utaona **DOM Invader tab:**
### Ingiza Canary Katika picha ya awali unaweza kuona **kikundi cha herufi za nasibu, hiyo ndiyo Canary**. Sasa unapaswa kuanza **kuingiza** katika sehemu tofauti za wavuti (params, fomu, url...) na kila wakati bonyeza kutafuta. DOM Invader itakagua kama **canary imeishia katika sink yoyote ya kuvutia** ambayo inaweza kutumika. Zaidi ya hayo, chaguo **Inject URL params** na Inject forms zitafungua kiotomatiki **kichupo kipya** **kikiingiza** **canary** katika kila **param** ya **URL** na **fomu** inayoipata. ### Ingiza Canary tupu Ikiwa unataka tu kutafuta visinki vya uwezekano ambavyo ukurasa unaweza kuwa navyo, hata kama havitumiwi, unaweza **kutafuta canary tupu**. ### Ujumbe wa Post DOM Invader inaruhusu upimaji wa DOM XSS kwa kutumia ujumbe wa wavuti wenye vipengele kama: 1. **Kurekodi ujumbe wa wavuti** uliopelekwa kupitia `postMessage()`, kama historia ya ombi/jibu la HTTP ya Burp Proxy. 2. **Mabadiliko** na **kupeleka tena** ujumbe wa wavuti ili kupima kwa mikono DOM XSS, sawa na kazi ya Burp Repeater. 3. **Mabadiliko ya kiotomatiki** 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 inajumuisha ikiwa JavaScript ya upande wa mteja inapata mali za `origin`, `data`, au `source` za ujumbe. - **`origin`** : Ikiwa **taarifa ya asili ya ujumbe haijakaguliwa**, unaweza kuwa na uwezo wa kutuma ujumbe wa kuvuka asili kwa mpangaji wa tukio **kutoka kwa kikoa chochote cha nje**. Lakini ikiwa imekaguliwa bado inaweza kuwa isiyo salama. - **`data`**: Hapa ndipo mzigo unatumwa. Ikiwa data hii haitumiki, sink haitakuwa na maana. - **`source`**: Inakadiria ikiwa mali ya chanzo, ambayo kawaida inarejelea iframe, inathibitishwa badala ya asili. Hata kama hii imekaguliwa, haihakikishi kwamba uthibitisho hauwezi kupuuziliwa mbali. #### Jibu ujumbe 1. Kutoka kwenye mtazamo wa **Messages**, bonyeza ujumbe wowote kufungua kidirisha cha maelezo ya ujumbe. 2. Hariri uwanja wa **Data** kama inavyohitajika. 3. Bonyeza **Send**. ### Uchafuzi wa Prototype DOM Invader pia inaweza kutafuta **udhaifu wa Uchafuzi wa Prototype**. Kwanza, unahitaji kuuwezesha:
Kisha, itatafuta **vyanzo** vinavyokuwezesha kuongeza mali zisizo za kawaida kwenye **`Object.prototype`**. Ikiwa kitu chochote kimepatikana kitakuwa na **Test** kitufe ku **jaribu chanzo kilichopatikana**. Bonyeza juu yake, kichupo kipya kitaonekana, tengeneza kitu kwenye console na angalia ikiwa `testproperty` inapatikana: ```javascript let b = {} b.testproperty ``` Mara tu unapopata chanzo unaweza **kuchunguza kwa gadget**: 1. Kichupo kipya kinafunguliwa na DOM Invader wakati kitufe cha **Scan for gadgets**, ambacho kinaweza kupatikana karibu na chanzo chochote kilichotambuliwa cha uchafuzi wa prototype katika mtazamo wa **DOM**, kinapobonyezwa. Uchunguzi wa gadgets zinazofaa huanza. 2. Wakati huo huo, katika kichupo hicho hicho, kichupo cha **DOM Invader** kinapaswa kufunguliwa katika paneli ya DevTools. Baada ya uchunguzi kukamilika, vyanzo vyovyote vinavyopatikana kupitia gadgets zilizotambuliwa vinaonyeshwa katika mtazamo wa **DOM**. Kwa mfano, mali ya gadget inayoitwa `html` inayopitishwa kwa sink ya `innerHTML` inaonyeshwa katika mfano hapa chini. ## DOM clobbering Katika picha iliyopita inawezekana kuona kwamba uchunguzi wa DOM clobbering unaweza kuwashwa. Mara tu inavyokamilika, **DOM Invader itaanza kutafuta udhaifu wa DOM clobbering**. ## Marejeleo - [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) {{#include ../../banners/hacktricks-training.md}}