14 KiB
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!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Taarifa Msingi
ruhusa
Ruhusa zinatambuliwa katika faili ya manifest.json
ya ugani kwa kutumia mali ya permissions
na kuruhusu ufikiaji wa karibu kila kitu ambacho kivinjari kinaweza kufikia (Vidakuki au Uhifadhi wa Kimwili):
Majedwali ya awali yanatangaza kuwa ugani unahitaji ruhusa ya storage
. Hii inamaanisha kuwa inaweza kutumia API ya uhifadhi kuhifadhi data yake kwa kudumu. Tofauti na vidakuzi au APIs za localStorage
ambazo humpa mtumiaji kiwango fulani cha udhibiti, uhifadhi wa ugani kawaida unaweza kufutwa tu kwa kusakinusha ugani.
Ugani utaomba ruhusa zilizoonyeshwa katika faili yake ya manifest.json
na Baada ya kusakinisha ugani, unaweza kuangalia ruhusa zake kila wakati kwenye kivinjari chako, kama inavyoonyeshwa kwenye picha hii:
Unaweza kupata orodha kamili ya ruhusa ambayo Ugani wa Kivinjari cha Chromium unaweza kuomba hapa na orodha kamili kwa ugani wa Firefox hapa.
host_permissions
Mipangilio ya hiari lakini yenye nguvu ya host_permissions
inaonyesha na ni kwa wenyeji gani ugani utaweza kuingiliana kupitia apis kama vile vidakuzi
, ombi la wavuti
, na vichupo
.
host_permissions
ifuatayo kimsingi inaruhusu kila wavuti:
"host_permissions": [
"*://*/*"
]
// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]
// Or:
"host_permissions": [
"<all_urls>"
]
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 kazi. Zinaruhusu kifaa cha kivinjari kuita 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) umepakia.
{% hint style="danger" %} Siyo tu hivyo, wasikilizaji kama tabs.onUpdated pia hufanywa kuwa na manufaa zaidi. Wataarifiwa wakati wowote ukurasa mpya unapakia kwenye kichupo. {% endhint %}
Kuendesha skripti za maudhui
Skripti za maudhui mara nyingi hazijaandikwa kwa njia ya tuli kwenye mizizi ya kifaa. Kwa kutosha host_permissions
, vifaa vinaweza pia kuzipakia kwa njia ya kudumu kwa kuita tabs.executeScript() au scripting.executeScript().
Viwango vyote viwili huruhusu kutekeleza siyo tu faili zilizomo kwenye vifaa kama skripti za maudhui bali pia nambari za aina yoyote. Ya kwanza huruhusu kupeleka nambari ya JavaScript kama herufi wakati wa pili inatarajia kazi ya JavaScript ambayo ni dhaifu kwa mashambulizi ya kuingiza. Hata hivyo, viwango vyote viwili vitasababisha vurugu ikiwa vitatumika vibaya.
{% hint style="danger" %} Mbali na uwezo uliotajwa hapo juu, skripti za maudhui zinaweza kwa mfano kukamata siri kama hizo zinaingizwa kwenye kurasa za wavuti. Njia nyingine ya kuzitumia ni kuingiza matangazo kwenye kila tovuti. Kuongeza ujumbe wa ulaghai ili kutumia uaminifu wa tovuti za habari pia ni jambo linalowezekana. Hatimaye, zinaweza kubadilisha benki tovuti kuelekeza uhamishaji wa pesa. {% endhint %}
Mamlaka zisizoonekana
Baadhi ya mamlaka ya vifaa hazihitaji kutangazwa wazi. Mfano mmoja ni tabs API: kazi yake msingi inapatikana bila mamlaka yoyote. Kifaa chochote kinaweza kupokea taarifa wakati unafungua na kufunga vichupo, lakini hakitajua tovuti gani hizo vichupo vinahusiana nazo.
Inasikika kuwa salama sana? tabs.create() API sio hivyo kabisa. Inaweza kutumika kuunda kichupo kipya, kimsingi sawa na window.open() ambayo inaweza kuitwa na tovuti yoyote. Lakini wakati window.open()
inakabiliwa na kizuizi cha pop-up, tabs.create()
hakikabiliwi nacho.
{% hint style="danger" %} Kifaa kinaweza kuunda idadi yoyote ya vichupo wakati wowote. {% endhint %}
Ukiangalia kupitia vigezo vinavyowezekana vya tabs.create()
, utagundua kuwa uwezo wake unazidi ule wa window.open()
unaruhusiwa kudhibiti. Na wakati Firefox haikubali matumizi ya URI za data:
na API hii, Chrome haina ulinzi kama huo. Matumizi ya URI kama hizo kwenye kiwango cha juu kumepigwa marufuku kwa sababu ya kutumiwa kwa udanganyifu (angalia hapa).
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 moja ya vichupo vyako, na kinaweza pia kuchochea kichupo kinachohusika pia.
Kamera, mahali na marafiki
Labda unajua kuwa tovuti zinaweza kuomba mamlaka maalum, k.m. ili kupata kamera yako (zana za mkutano wa video) au mahali geografiki (ramani). Ina vipengele vya uwezekano mkubwa wa kutumiwa vibaya, kwa 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, inahitaji kuomba idhini mara moja tu {% endhint %}
Kawaida, kifaa kitafanya hivyo mara tu baada ya kusakinishwa. Mara tu ombi hili linakubaliwa, upatikanaji wa kamera unawezekana wakati wowote, hata kama mtumiaji hafanyi mwingiliano na kifaa wakati huo. Ndiyo, mtumiaji atakubali ombi hili ikiwa kifaa kinahitaji kweli upatikanaji wa kamera. Lakini baada ya hapo wanapaswa kuamini kifaa kutorodhesha kitu kwa siri.
Kwa kupata eneo lako kamili la kijiografia au maudhui ya ubao wako wa kunakili, kutoa idhini kwa uwazi hakuhitajiki kabisa. Kifaa kinaweza tu kuongeza geolocation
au clipboard
kwenye ingizo la mamlaka ya mizizi yake. Mamlaka hizi za upatikanaji kisha hupewa kwa siri 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 zilizokopiwa bila wewe kugundua chochote.
Kuongeza neno la historia
kwenye ingizo la mamlaka ya mizizi ya mizizi inaruhusu upatikanaji wa historia API. Inaruhusu kupata historia nzima ya kutembelea ya mtumiaji mara moja, bila kusubiri mtumiaji kutembelea tena tovuti hizi.
Kibali cha vitabu vya alamisho
kina uwezekano sawa wa kutumiwa vibaya, hiki kinawezesha kusoma alamisho zote kupitia bookmarks API.
Kibali cha kuhifadhi
Hifadhi ya kifaa ni mkusanyiko wa funguo-na-thamani, sawa sana na 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 na orodha kamili kwa vifaa vya Firefox hapa.
Kuzuia
Sera ya msanidi wa Google inakataza wazi vifaa vya kivinjari kutoka kuomba mamlaka zaidi kuliko inavyohitajika kwa kazi zao, hivyo kupunguza ombi la 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 na 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 siri za kurekodi.
Hata hivyo, kuzidisha hatua za usalama mara nyingi husababisha kupungua kwa mtego na urafiki wa vifaa. Kibali cha activeTab inaonyesha kubadilishana hii. Ilianzishwa ili kuondoa haja ya vifaa kuomba mamlaka ya mizizi kote kwenye mtandao, kuruhusu vifaa kupata kichupo cha sasa tu baada ya kuanzishwa wazi na 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.
Virejezi
- https://palant.info/2022/08/17/impact-of-extension-privileges/
- https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing
Jifunze kuhusu kuvamia 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!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.