BrowExt - ruhusa & ruhusa_za_kiwanja
Reading time: 9 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Taarifa za Msingi
permissions
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 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.
Nyongeza itahitaji ruhusa zilizoonyeshwa katika faili yake ya manifest.json
na Baada ya kufunga nyongeza, unaweza kila wakati kuangalia ruhusa zake katika kivinjari chako, kama inavyoonyeshwa katika picha hii:
Unaweza kupata orodha kamili ya ruhusa ambazo Nyongeza ya Kivinjari cha Chromium inaweza kuomba hapa na orodha kamili ya nyongeza za Firefox hapa.
host_permissions
Mipangilio ya hiari lakini yenye nguvu host_permissions
inaonyesha ni mwenyeji gani ambao nyongeza itakuwa na uwezo wa kuingiliana nao kupitia APIs kama cookies
, webRequest
, na tabs
.
Ruhusa zifuatazo za host_permissions
kimsingi zinaruhusu kila wavuti:
"host_permissions": [
"*://*/*"
]
// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]
// Or:
"host_permissions": [
"<all_urls>"
]
Hizi ni mwenyeji ambao nyongeza ya kivinjari inaweza kufikia bure. Hii ni kwa sababu wakati nyongeza ya kivinjari inaita fetch("https://gmail.com/")
haijakabiliwa na vizuizi vya CORS.
Kutumia permissions
na host_permissions
Tabs
Zaidi ya hayo, host_permissions
pia inafungua kazi za “advanced” tabs API **. Zinawawezesha nyongeza kuita 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 wanakuwa na manufaa zaidi pia. Hizi zitaarifiwa kila wakati ukurasa mpya unapopakuliwa kwenye tab.
Kuendesha scripts za maudhui
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() au scripting.executeScript().
APIs zote mbili zinaruhusu kutekeleza si tu faili zilizomo kwenye nyongeza kama scripts za maudhui bali pia kode 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 haki za nyongeza hazihitaji kutangazwa wazi. Mfano mmoja ni tabs API: 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 ni kidogo zaidi. Inaweza kutumika ku unda tab mpya, kimsingi sawa na 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 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.
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.
Kamera ya wavuti, geolocation na marafiki
Huenda unajua kwamba tovuti zinaweza kuomba ruhusa maalum, kwa mfano ili kufikia kamera yako ya wavuti (zana za video conferencing) au eneo lako la kijiografia (ramani). Ni vipengele vyenye uwezo mkubwa wa matumizi mabaya, hivyo watumiaji kila wakati wanapaswa kuthibitisha kwamba bado wanataka hili.
caution
Si hivyo kwa nyongeza za kivinjari. Ikiwa nyongeza ya kivinjari inataka kufikia kamera yako ya wavuti au kipaza sauti, 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 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 au maudhui ya clipboard yako, kutoa ruhusa wazi si lazima kabisa. Nyongeza inachangia tu geolocation
au clipboard
kwenye kidirisha cha ruhusa 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 kidirisha cha ruhusa ya hati ya nyongeza kunatoa ufikiaji wa history API. 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.
Ruhusa ya Hifadhi
Hifadhi ya nyongeza ni mkusanyiko wa funguo-thamani, sawa na localStorage ambayo tovuti yoyote inaweza kutumia. Hivyo hakuna taarifa nyeti inapaswa kuhifadhiwa hapa.
Hata hivyo, kampuni za matangazo zinaweza pia kutumia hifadhi hii vibaya.
Ruhusa zaidi
Unaweza kupata orodha kamili ya ruhusa ambazo Nyongeza ya Kivinjari ya Chromium inaweza kuomba hapa na orodha kamili ya nyongeza za Firefox hapa.
Kuzuia
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 haki za nyongeza. Kwa mfano, tabCapture na 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 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
- https://palant.info/2022/08/17/impact-of-extension-privileges/
- https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.