# BrowExt - ruhusa & host_permissions
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! Njia nyingine za kusaidia HackTricks: * Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)! * Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee * **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
## Taarifa Msingi ### **`ruhusa`** Ruhusa zinatambuliwa kwenye faili ya **`manifest.json`** ya upanuzi kwa kutumia mali ya **`permissions`** na kuruhusu ufikiaji wa karibu kila kitu ambacho kivinjari kinaweza kufikia (Vidakuzi au Uhifadhi wa Kimwili): Majedwali ya awali yanatangaza kuwa upanuzi unahitaji ruhusa ya `storage`. Hii inamaanisha kuwa inaweza kutumia [API ya uhifadhi](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) kuhifadhi data yake kwa kudumu. Tofauti na vidakuzi au APIs za `localStorage` ambazo humpa mtumiaji kiwango fulani cha udhibiti, **uhifadhi wa upanuzi kawaida unaweza kufutwa tu kwa kusakinusha upanuzi**. Upanuzi utaomba ruhusa zilizoonyeshwa kwenye faili yake ya **`manifest.json`** na Baada ya kusakinisha upanuzi, unaweza **kuangalia ruhusa zake kila wakati kwenye kivinjari chako**, kama inavyoonyeshwa kwenye picha hii:
Unaweza kupata [**orodha kamili ya ruhusa ambayo Upanuzi wa Kivinjari cha Chromium unaweza kuomba hapa**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) na [**orodha kamili kwa upanuzi wa Firefox hapa**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** ### `host_permissions` Mipangilio ya hiari lakini yenye nguvu ya **`host_permissions`** inaonyesha na ni kwa wenyeji gani upanuzi utaweza kuingiliana kupitia apis kama vile [`vidakuzi`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`ombi la wavuti`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest), na [`vichupo`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs). `host_permissions` zifuatazo kimsingi huruhusu kila wavuti: ```json "host_permissions": [ "*://*/*" ] // Or: "host_permissions": [ "http://*/*", "https://*/*" ] // Or: "host_permissions": [ "" ] ``` Hizi ni seva ambazo kifaa cha kivinjari kinaweza kupata kwa uhuru. Hii ni kwa sababu wakati kifaa cha kivinjari kinaita **`fetch("https://gmail.com/")`** haizuiliwi na CORS. ## Kutumia `permissions` na `host_permissions` ### Vichupo Zaidi ya hayo, **`host_permissions`** pia hufungua "advanced" [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **kazi.** Zinaruhusu kifaa cha kivinjari kupiga simu [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) na siyo tu kupata **orodha ya vichupo vya kivinjari vya mtumiaji** lakini pia kujifunza ni **ukurasa wa wavuti (maana yake anwani na kichwa) umepakiwa**. {% hint style="danger" %} Siyo hivyo tu, wasikilizaji kama [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **pia hufanywa kuwa na manufaa zaidi**. Hizi zitapokea arifa wakati wowote ukurasa mpya unapakia kwenye kichupo. {% endhint %} ### Kutekeleza skripti za maudhui Skripti za maudhui mara nyingi hazijaandikwa kwa njia ya tuli kwenye mizizi ya kifaa. Kwa kuzingatia **`host_permissions`** za kutosha, **vifaa vinaweza pia kuzipakia kwa njia ya kudhibitiwa kwa kupiga simu** [**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). Viwango vyote viwaruhusu kutekeleza siyo tu faili zilizomo kwenye vifaa kama skripti za maudhui bali pia **nambari za aina yoyote**. Ya kwanza inaruhusu kupeleka nambari ya JavaScript kama herufi wakati wa pili inatarajia kazi ya JavaScript ambayo ni dhaifu zaidi kwa mashambulizi ya kuingiza. Hata hivyo, viwango vyote viharibu ikiwa vitatumika vibaya. {% hint style="danger" %} Mbali na uwezo uliotajwa hapo juu, skripti za maudhui zinaweza kwa mfano **kukamata siri** wakati hizi zinaingizwa kwenye kurasa za wavuti. Njia nyingine ya kuzitumia vibaya ni **kuingiza matangazo** kwenye kila tovuti. Kuongeza **ujumbe wa ulaghai** ili kutumia uaminifu wa tovuti za habari pia ni jambo linalowezekana. Hatimaye, zinaweza **kubadilisha tovuti za benki** ili kuelekeza uhamisho wa pesa. {% endhint %} ### Mamlaka zisizoonekana Baadhi ya mamlaka ya vifaa **hazihitaji kutangazwa wazi**. Mfano mmoja ni [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): kazi yake msingi inapatikana bila mamlaka yoyote. Kifaa chochote kinaweza kupokea arifa wakati unafungua na kufunga vichupo, lakini hakitajua tovuti gani hizo vichupo vinahusiana nazo. Inasikika kuwa salama sana? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) sio hivyo kabisa. Inaweza kutumika **kuunda kichupo kipya**, kimsingi sawa na [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) ambayo inaweza kuitwa na tovuti yoyote. Lakini wakati `window.open()` inategemea **kizuizi cha pop-up, `tabs.create()` hakitegemei**. {% hint style="danger" %} Kifaa kinaweza kuunda idadi yoyote ya vichupo wakati wowote. {% endhint %} Ukiangalia paramita zinazowezekana za `tabs.create()`, utagundua kuwa uwezo wake unazidi ule wa `window.open()`. Na wakati Firefox hauruhusu matumizi ya URI za `data:` na API hii, Chrome haina kinga kama hiyo. **Matumizi ya URI kama hizo kwenye kiwango cha juu zimepigwa marufuku kwa sababu zimetumiwa kwa** [**udanganyifu wa phishing**](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) inafanana sana na `tabs.create()` lakini ita **badilisha kichupo kilichopo**. Kwa hivyo, kifaa cha kivinjari kilicho na nia mbaya kinaweza kwa mfano kwa hiari kupakia ukurasa wa matangazo kwenye kichupo chako, na kinaweza pia kuchochea kichupo husika. ### Kamera, mahali na marafiki Labda unajua kuwa tovuti zinaweza kuomba mamlaka maalum, k.m. ili kupata kamera yako (zana za mikutano ya video) au mahali geografiki (ramani). Ina vipengele vyenye uwezekano mkubwa wa kutumiwa vibaya, hivyo watumiaji kila wakati wanapaswa kuthibitisha kuwa bado wanataka hii. {% hint style="danger" %} Sivyo kwa vifaa vya kivinjari. **Ikiwa kifaa cha kivinjari** [**kinataka kupata kamera yako au kipaza sauti**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, inahitaji kuomba idhini mara moja tu** {% endhint %} Kawaida, kifaa kitafanya hivyo mara tu baada ya kusakinishwa. Mara tu idhini hii inakubaliwa, **upatikanaji wa kamera unawezekana wakati wowote**, hata kama mtumiaji hafanyi mwingiliano na kifaa wakati huo. Ndiyo, mtumiaji atakubali idhini hii tu ikiwa kifaa kinahitaji kweli upatikanaji wa kamera. Lakini baada ya hapo wanapaswa kuamini kifaa kisirekodi kitu kwa siri. Kwa kupata [eneo lako kamili la kijiografia](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) au [maudhui ya ubao wako wa kunakili](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API), kutoa idhini kwa uwazi hakuhitajiki kabisa. **Kifaa kinaweza tu kuongeza `geolocation` au `clipboard` kwenye** [**ingizo la mamlaka**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **ya mizizi yake.** Mamlaka hizi za upatikanaji kisha zinatolewa kwa uwazi wakati kifaa kinaposakinishwa. Kwa hivyo kifaa kilicho na nia mbaya au kilichoharibiwa na mamlaka haya kinaweza kuunda wasifu wako wa harakati au kufuatilia ubao wako wa kunakili kwa nywila zilizonakiliwa bila wewe kugundua chochote. Kuongeza neno la **`history`** kwenye [ingizo la mamlaka](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) ya mizizi ya mizizi ya kifaa kunaruhusu **upatikanaji wa** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Inaruhusu kupata historia nzima ya kutembelea ya mtumiaji mara moja, bila kusubiri mtumiaji kutembelea tena tovuti hizi. Kibali cha **`bookmarks`** kina uwezekano sawa wa kutumia vibaya, hiki kinawezesha **kusoma alama zote kupitia** [**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks). ### Kibali cha kuhifadhi Hifadhi ya kifaa ni mkusanyiko wa funguo-na-thamani, sawa sana na [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) ambayo tovuti yoyote inaweza kutumia. Kwa hivyo habari nyeti isipaswi kuhifadhiwa hapa. Hata hivyo, makampuni ya matangazo yanaweza pia kutumia hifadhi hii. ### Mamlaka zaidi Unaweza kupata [**orodha kamili ya mamlaka ambayo Kifaa cha Kivinjari cha Chromium kinaweza kuomba hapa**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) na [**orodha kamili kwa vifaa vya Firefox hapa**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** ## Kuzuia Sera ya msanidi wa Google inakataza wazi vifaa vya kivinjari kutoka kuomba mamlaka zaidi kuliko zinavyohitajika kwa kazi zao, hivyo kupunguza maombi ya mamlaka kupita kiasi. Kisa ambapo kifaa cha kivinjari kilivuka kizuizi hiki kilihusisha usambazaji wake na kivinjari yenyewe badala ya kupitia duka la nyongeza. Vifaa vya kivinjari vinaweza kupunguza zaidi matumizi mabaya ya mamlaka ya vifaa. Kwa mfano, APIs za [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) na [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) za Chrome, zinazotumika kwa kurekodi skrini, zimedhamiriwa kupunguza matumizi mabaya. API ya tabCapture inaweza kuanzishwa tu kupitia mwingiliano wa moja kwa moja wa mtumiaji, kama vile kubonyeza kwenye ishara ya kifaa, wakati desktopCapture inahitaji uthibitisho wa mtumiaji ili dirisha lifanyiwe rekodi, kuzuia shughuli za kurekodi kwa siri. Hata hivyo, kuzidisha hatua za usalama mara nyingi husababisha kupungua kwa mtego na urafiki wa vifaa. Kibali cha [activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab\_permission) inaonyesha kubadilishana hii. Ilianzishwa ili kuondoa haja ya vifaa kuomba mamlaka ya mizizi kote kwenye mtandao, kuruhusu vifaa kupata tu kichupo cha sasa kwa idhini ya wazi ya mtumiaji. Mfano huu ni mzuri kwa vifaa vinavyohitaji hatua zilizoanzishwa na mtumiaji lakini haukidhi mahitaji ya vifaa vinavyohitaji hatua za moja kwa moja au za kuzuia, hivyo kuhatarisha urahisi na majibu ya haraka. ## **Vyanzo** * [https://palant.info/2022/08/17/impact-of-extension-privileges/](https://palant.info/2022/08/17/impact-of-extension-privileges/) * [https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing](https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing)
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)! Njia nyingine za kusaidia HackTricks: * Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)! * Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee * **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.