139 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
<figure><img src="../../images/image (1129).png" alt=""><figcaption></figcaption></figure>
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 ➜ Burps 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 (`<input name="location">` → 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}}