From 9f5b2ccebc5191630c6b91ed1fa7b5b4e29ab6c4 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 5 Aug 2025 00:34:09 +0000 Subject: [PATCH] Translated ['src/pentesting-web/xss-cross-site-scripting/dom-invader.md' --- .../xss-cross-site-scripting/dom-invader.md | 131 ++++++++++++------ 1 file changed, 90 insertions(+), 41 deletions(-) diff --git a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md index 945a72091..d5e8b133c 100644 --- a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md +++ b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md @@ -4,78 +4,125 @@ ## 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 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 inaunganisha kichupo ndani ya paneli ya DevTools ya kivinjari ikiruhusu yafuatayo: +DOM Invader inaongeza kichupo kwenye paneli ya DevTools ya kivinjari ambayo inakuwezesha: -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**. +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.). -### Wezesha +--- -Katika kivinjari cha ndani cha Burp nenda kwenye **Burp extension** na uweke: +### 1. Wezesha
-Sasa refresh ukurasa na katika **Dev Tools** utaona **DOM Invader tab:** +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. -### Ingiza Canary +### 2. 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. +**Canary** ni mfuatano wa alama wa nasibu (mfano `xh9XKYlV`) ambao DOM Invader inafuatilia. Unaweza: -Zaidi ya hayo, chaguo **Inject URL params** na Inject forms zitafungua kiotomatiki **kichupo kipya** **kikiingiza** **canary** katika kila **param** ya **URL** na **fomu** inayoipata. +* **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). -### Ingiza Canary tupu +#### Canary maalum (2025+) -Ikiwa unataka tu kutafuta visinki vya uwezekano ambavyo ukurasa unaweza kuwa navyo, hata kama havitumiwi, unaweza **kutafuta canary tupu**. +Burp 2024.12 ilianzisha **Mipangilio ya Canary** (Burp-logo ➜ DOM Invader ➜ Canary). Unaweza: -### Ujumbe wa Post +* **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**. -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. +### 3. Ujumbe wa wavuti (`postMessage`) -#### Maelezo ya ujumbe +Kichupo cha **Messages** kinarekodi kila wito wa `window.postMessage()`, kikionyesha matumizi ya `origin`, `source`, na `data`. -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. +• **Badilisha & tuma tena**: bonyeza mara mbili ujumbe, hariri `data`, na bonyeza **Send** (kama Burp Repeater). -- **`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. +• **Auto-fuzz**: wezesha **Postmessage interception ➜ Auto-mutate** kwenye mipangilio ili kuruhusu DOM Invader kutengeneza payloads za msingi wa canary na kuzireplay kwa handler. -#### Jibu ujumbe +Muhtasari wa maana ya uwanja: -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**. +* **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. -### Uchafuzi wa Prototype +--- -DOM Invader pia inaweza kutafuta **udhaifu wa Uchafuzi wa Prototype**. Kwanza, unahitaji kuuwezesha: +### 4. Uchafuzi wa Prototype -
+Wezesha chini ya **Settings ➜ Attack types ➜ Prototype pollution**. -Kisha, itatafuta **vyanzo** vinavyokuwezesha kuongeza mali zisizo za kawaida kwenye **`Object.prototype`**. +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: -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 +let obj = {}; +console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC' ``` -Mara tu unapopata chanzo unaweza **kuchunguza kwa gadget**: +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. -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. +Mipangilio ya juu (ikoni ya cog): -## DOM clobbering +* **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. -Katika picha iliyopita inawezekana kuona kwamba uchunguzi wa DOM clobbering unaweza kuwashwa. Mara tu inavyokamilika, **DOM Invader itaanza kutafuta udhaifu wa DOM clobbering**. +--- + +### 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 @@ -85,5 +132,7 @@ Katika picha iliyopita inawezekana kuona kwamba uchunguzi wa DOM clobbering unaw - [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}}