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

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:

json
"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

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