BrowExt - permissions & host_permissions
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
permissions
Ruhusa zin defined katika manifest.json
ya 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 manifest.json
yake 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:
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 CORS.
permissions
na host_permissions
Zaidi ya hayo, host_permissions
pia inafungua “mifumo ya hali ya juu” tabs API ufanyaji kazi. 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) umewekwa.
Sio hivyo tu, wasikilizaji kama tabs.onUpdated wanakuwa na manufaa zaidi pia. Hizi zitaarifiwa kila wakati ukurasa mpya unapopakia kwenye tab.
Scripts za maudhui hazihitajiki kuandikwa 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 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 zitaleta machafuko ikiwa zitatumiwa vibaya.
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 kuhamasisha uhamisho wa pesa.
Baadhi ya ruhusa za nyongeza hazihitaji kutangazwa wazi. Mfano mmoja ni tabs API: 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.
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.
Nyongeza inaweza kuunda idadi yoyote ya tabs wakati wowote inavyotaka.
Ikiwa utaangalia kupitia vigezo vya tabs.create()
, pia utaona kwamba uwezo wake unazidi sana kile ambacho window.open()
inaruhusiwa kudhibiti. Na wakati Firefox haikubali data:
URIs kutumika na API hii, Chrome haina ulinzi kama huo. Matumizi ya URIs kama hizo kwenye kiwango cha juu yame zimepigwa 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.
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.
Sio 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 unaruhusiwa 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 entry ya ruhusa 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.
Kuongeza neno history
kwenye entry ya 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.
Hifadhi ya nyongeza ni mkusanyiko wa funguo-thamani, sawa sana na localStorage ambayo tovuti yoyote inaweza kutumia. Hivyo hakuna taarifa nyeti inapaswa kuhifadhiwa hapa.
Hata hivyo, kampuni za matangazo zinaweza pia kutumia vibaya hifadhi hii.
Unaweza kupata orodha kamili ya ruhusa ambazo Nyongeza ya Kivinjari ya Chromium inaweza kuomba hapa na orodha kamili ya nyongeza za Firefox hapa.
Sera ya mtengenezaji wa Google inakataza wazi nyongeza kuomba ruhusa zaidi ya zile zinazohitajika kwa ajili ya kazi zao, kwa ufanisi kupunguza maombi ya ruhusa kupita kiasi. Mfano ambapo nyongeza ya kivinjari ilipita mipaka hii ilikuwa ni usambazaji wake pamoja na kivinjari chenyewe badala ya kupitia duka la nyongeza.
Kivinjari kinaweza pia kupunguza matumizi mabaya ya ruhusa 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 kiotomatiki au vya awali, hivyo kuathiri urahisi na majibu ya haraka.
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)