# DOM Invader {{#include ../../banners/hacktricks-training.md}} ## DOM Invader DOM Invader ni chombo cha kivinjari kilichowekwa kwenye **kivinjari cha Chromium kilichojumuishwa cha Burp Suite**. Inasaidia katika **kubaini DOM XSS na udhaifu mwingine wa upande wa mteja** (uchafuzi wa prototype, DOM clobbering, n.k.) kwa kujiendesha kiotomatiki **kuweka vifaa vya JavaScript na vyanzo**. Kiongezeo hiki kinakuja na Burp na kinahitaji tu kuwezeshwa. DOM Invader inaongeza kichupo kwenye paneli ya DevTools ya kivinjari ambayo inakuwezesha: 1. **Tambua vyanzo vinavyoweza kudhibitiwa** kwa wakati halisi, ikiwa ni pamoja na muktadha (attribute, HTML, URL, JS) na usafi uliofanywa. 2. **Rekodi, hariri na tuma tena `postMessage()` ujumbe wa wavuti**, au acha kiongezeo kibadilishe moja kwa moja. 3. **Gundua vyanzo vya uchafuzi wa prototype wa upande wa mteja na scan kwa minyororo ya gadget→sink**, ikitengeneza PoCs kwa wakati. 4. **Pata mwelekeo wa DOM clobbering** (mfano `id` / `name` migongano inayofuta mabadiliko ya kimataifa). 5. **Boresha tabia** kupitia UI tajiri ya Mipangilio (canary maalum, auto-injection, kuzuia upitishaji, orodha za vyanzo/vyanzo, n.k.). --- ### 1. Wezesha
1. Fungua **Proxy ➜ Intercept ➜ Open Browser** (kivinjari kilichojumuishwa cha Burp). 2. Bonyeza nembo ya **Burp Suite** (juu-kulia). Ikiwa imefichwa, bonyeza kipande cha puzzle kwanza. 3. Katika kichupo cha **DOM Invader**, geuza **Enable DOM Invader** kuwa ON na bonyeza **Reload**. 4. Fungua DevTools ( `F12` / Bonyeza-kulia ➜ Inspect ) na uweke. Paneli mpya ya **DOM Invader** inaonekana. > Burp inakumbuka hali kwa kila wasifu. Zima chini ya *Settings ➜ Tools ➜ Burp’s browser ➜ Store settings...* ikiwa inahitajika. ### 2. Ingiza Canary **Canary** ni mfuatano wa alama wa nasibu (mfano `xh9XKYlV`) ambao DOM Invader inafuatilia. Unaweza: * **Nakili** na kuingiza kwa mikono katika vigezo, fomu, fremu za Web-Socket, ujumbe wa wavuti, n.k. * Tumia **Inject URL params / Inject forms** vifungo kufungua kichupo kipya ambapo canary inaongezwa kwa kila ufunguo wa swali/key au uwanja wa fomu kiotomatiki. * Tafuta **canary tupu** ili kufichua vyanzo vyote bila kujali uwezekano wa kutumia (nzuri kwa upelelezi). #### Canary maalum (2025+) Burp 2024.12 ilianzisha **Mipangilio ya Canary** (Burp-logo ➜ DOM Invader ➜ Canary). Unaweza: * **Randomize** au kuweka **mfuatano maalum** (inasaidia kwa majaribio ya tab nyingi au wakati thamani ya chaguo-msingi inajitokeza kwa asili kwenye ukurasa). * **Nakili** thamani kwenye clipboard. * Mabadiliko yanahitaji **Reload**. --- ### 3. Ujumbe wa wavuti (`postMessage`) Kichupo cha **Messages** kinarekodi kila wito wa `window.postMessage()`, kikionyesha matumizi ya `origin`, `source`, na `data`. • **Badilisha & tuma tena**: bonyeza mara mbili ujumbe, hariri `data`, na bonyeza **Send** (kama Burp Repeater). • **Auto-fuzz**: wezesha **Postmessage interception ➜ Auto-mutate** kwenye mipangilio ili kuruhusu DOM Invader kutengeneza payloads za msingi wa canary na kuzireplay kwa handler. Muhtasari wa maana ya uwanja: * **origin** – ikiwa handler inathibitisha `event.origin`. * **data** – eneo la payload. Ikiwa halitumiki, sink si muhimu. * **source** – uthibitisho wa marejeleo ya iframe / dirisha; mara nyingi dhaifu kuliko ukaguzi wa asili mkali. --- ### 4. Uchafuzi wa Prototype Wezesha chini ya **Settings ➜ Attack types ➜ Prototype pollution**. Mchakato: 1. **Browse** – DOM Invader inabaini uchafuzi **vyanzo** (`__proto__`, `constructor`, `prototype`) vilivyopatikana katika URL/query/hash au ujumbe wa JSON wa wavuti. 2. **Test** – bonyeza *Test* kufungua kichupo cha PoC ambapo `Object.prototype.testproperty` inapaswa kuwepo: ```javascript let obj = {}; console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC' ``` 3. **Scan for gadgets** – DOM Invader inajaribu majina ya mali na kufuatilia ikiwa yoyote inamalizika kwenye vyanzo hatari (mfano `innerHTML`). 4. **Exploit** – wakati minyororo ya gadget-sink inapatikana, kitufe cha *Exploit* kinaonekana kinachounganisha chanzo + gadget + sink ili kuanzisha tahadhari. Mipangilio ya juu (ikoni ya cog): * **Ondoa CSP / X-Frame-Options** ili kuweka iframes zikiwa na kazi wakati wa skanning ya gadget. * **Scan techniques in separate frames** ili kuepuka kuingiliana kwa `__proto__` dhidi ya `constructor`. * **Zima mbinu** moja kwa moja kwa programu dhaifu. --- ### 5. DOM Clobbering Geuza **Attack types ➜ DOM clobbering**. DOM Invader inafuatilia vipengele vilivyoundwa kwa nguvu ambavyo `id`/`name` attributes vinagongana na mabadiliko ya kimataifa au vitu vya fomu (`` → inafuta `window.location`). Kuingia kunatolewa kila wakati muundo unaodhibitiwa na mtumiaji unapelekea kubadilishwa kwa mabadiliko. --- ## 6. Muonekano wa Mipangilio (2025) DOM Invader sasa imegawanywa katika makundi ya **Main / Attack Types / Misc / Canary**. 1. **Main** * **Enable DOM Invader** – swichi ya kimataifa. * **Postmessage interception** – wezesha/kuzima urekodi wa ujumbe; sub-toggles kwa auto-mutation. * **Custom Sources/Sinks** – *ikoni ya cog* ➜ wezesha/zima vyanzo maalum (mfano `eval`, `setAttribute`) ambavyo vinaweza kuvunja programu. 2. **Attack Types** * **Prototype pollution** (ikiwa na mipangilio ya mbinu). * **DOM clobbering**. 3. **Misc** * **Redirect prevention** – zuia upitishaji wa upande wa mteja ili orodha ya sink isipotee. * **Breakpoint before redirect** – simamisha JS kabla ya upitishaji kwa ukaguzi wa call-stack. * **Inject canary into all sources** – auto-inject canary kila mahali; orodha ya vyanzo/vigezo inayoweza kubadilishwa. 4. **Canary** * Tazama / randomize / weka canary maalum; nakili kwenye clipboard. Mabadiliko yanahitaji upya wa kivinjari. --- ### 7. Vidokezo & Mazoea Mazuri * **Tumia canary tofauti** – epuka mfuatano wa kawaida kama `test`, vinginevyo kutakuwa na matokeo ya uwongo. * **Zima vyanzo vizito** (`eval`, `innerHTML`) kwa muda ikiwa vinavunja kazi ya ukurasa wakati wa urambazaji. * **Changanya na Burp Repeater & Proxy** – rudia ombi/jibu la kivinjari ambalo lilisababisha hali yenye udhaifu na tengeneza URL za mwisho za exploit. * **Kumbuka upeo wa fremu** – vyanzo/vyanzo vinaonyeshwa kwa kila muktadha wa urambazaji; udhaifu ndani ya iframes unaweza kuhitaji umakini wa mikono. * **Export evidence** – bonyeza-kulia paneli ya DOM Invader ➜ *Save screenshot* ili kujumuisha katika ripoti. --- ## 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) - [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary) - [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc) {{#include ../../banners/hacktricks-training.md}}