BrowExt - permissions & host_permissions

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

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 (Vidakuzi 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 daima ruhusa zake kwenye kivinjari chako, kama inavyoonyeshwa kwenye picha hii:

Unaweza kupata orodha kamili ya ruhusa ambazo 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 mwenyeji ambao 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.

Si hivyo tu, wasikilizaji kama tabs.onUpdated pia hufanywa kuwa na manufaa zaidi. Wataarifiwa wakati wowote ukurasa mpya unapakia kwenye kichupo.

Kutekeleza skripti za maudhui

Skripti za maudhui mara nyingi hazijaandikwa kwa njia ya tuli kwenye hati ya upanuzi. Kwa kuzingatia host_permissions za kutosha, upanuzi pia unaweza kuzipakia kwa njia ya kudumu kwa kuita tabs.executeScript() au scripting.executeScript().

Viwango vyote viwaruhusu kutekeleza siyo tu faili zilizomo kwenye upanuzi kama skripti za maudhui bali pia nambari ya kiholela. 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.

Mbali na uwezo uliotajwa hapo juu, skripti za maudhui zinaweza kwa mfano kukamata siri kama hizo zinaingizwa kwenye kurasa za wavuti. Njia nyingine ya kawaida 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 uhamisho wa pesa.

Mamlaka zisizoonekana

Baadhi ya mamlaka ya upanuzi hayalazimiki kutangazwa wazi. Mfano ni tabs API: kazi yake ya msingi inapatikana bila mamlaka yoyote. Upanuzi wowote unaweza kupokea arifa unapofungua na kufunga vichupo, lakini haitajua 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() haki.

Upanuzi unaweza kuunda idadi yoyote ya vichupo wakati wowote.

Ukitazama vigezo vinavyowezekana vya tabs.create(), utagundua kuwa uwezo wake unazidi ule wa window.open(). Na wakati Firefox haiiruhusu URI za data: kutumiwa na API hii, Chrome haina kinga kama hiyo. Matumizi ya URI kama hizo kwenye kiwango cha juu yame pigwa marufuku kwa sababu ya kutumiwa kwa udanganyifu.

tabs.update() inafanana sana na tabs.create() lakini ita badilisha kichupo kilichopo. Kwa hivyo upanuzi mbaya unaweza kwa mfano kwa hiari kupakia ukurasa wa matangazo kwenye moja ya vichupo vyako, na pia kuweza kuamsha kichupo kinachohusika.

Kamera, geolokesheni na marafiki

Labda unajua kuwa tovuti zinaweza kuomba mamlaka maalum, k.m. ili kupata upatikanaji wa kamera yako (zana za mikutano ya video) au mahali ulipo (ramani). Ina vipengele vyenye uwezekano mkubwa wa kutumiwa vibaya, kwa hivyo watumiaji kila wakati wanapaswa kuthibitisha kuwa bado wanataka hii.

Sivyo kwa upanuzi wa kivinjari. Ikiwa upanuzi wa kivinjari unataka kupata upatikanaji wa kamera au kipaza sauti, inahitaji kuomba idhini mara moja tu

Kawaida, upanuzi utafanya hivyo mara tu baada ya kusakinishwa. Mara tu arifa hii inakubaliwa, upatikanaji wa kamera unawezekana wakati wowote, hata kama mtumiaji hafanyi mwingiliano na upanuzi wakati huu. Ndiyo, mtumiaji atakubali arifa hii tu ikiwa upanuzi unahitaji kweli upatikanaji wa kamera. Lakini baada ya hapo wanapaswa kuamini upanuzi usirekodi kitu kwa siri.

Kwa kupata eneo lako kamili la kijiografia au maudhui ya ubao wako wa kunakili, kutoa idhini kwa uwazi hakuhitajiki kabisa. Upanuzi unaweza tu kuongeza geolocation au clipboard kwenye ingizo la mamlaka ya hati yake ya upanuzi. Mamlaka hizi za upatikanaji kisha hupewa kwa uwazi wakati upanuzi unaposakinishwa. Kwa hivyo upanuzi mbaya au ulioghushi na mamlaka haya unaweza kuunda wasifu wako wa mwendo au kufuatilia ubao wako wa kunakili kwa nywila zilizonakiliwa bila wewe kugundua chochote.

Kuongeza neno la history kwenye ingizo la mamlaka ya hati ya upanuzi kunaruhusu upatikanaji wa historia API. Inaruhusu kupata historia nzima ya kutembelea ya mtumiaji mara moja, bila kusubiri mtumiaji kutembelea tena tovuti hizi.

Kibali cha bookmarks kina uwezekano sawa wa kutumiwa vibaya, hiki kinawezesha kusoma alama zote kupitia bookmarks API.

Kibali cha Uhifadhi

Uhifadhi wa upanuzi 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 uhifadhi huu.

Mamlaka Zaidi

Unaweza kupata orodha kamili ya mamlaka ambayo Upanuzi wa Kivinjari cha Chromium unaweza kuomba hapa na orodha kamili kwa upanuzi wa Firefox hapa.

Kuzuia

Sera ya mwandishi wa Google inakataza wazi upanuzi kutoka kuomba mamlaka zaidi kuliko inavyohitajika kwa kazi zao, hivyo kupunguza ombi la mamlaka kupita kiasi. Kisa ambapo upanuzi wa kivinjari ulivuka kizuizi hiki kilihusisha usambazaji wake na kivinjari yenyewe badala ya kupitia duka la nyongeza.

Vivinjari vinaweza kupunguza zaidi matumizi mabaya ya mamlaka ya upanuzi. Kwa mfano, APIs za tabCapture na desktopCapture za Chrome, zinazotumika kwa kurekodi skrini, zimedhamiriwa kupunguza matumizi mabaya. API ya tabCapture inaweza kuamilishwa tu kupitia mwingiliano wa moja kwa moja wa mtumiaji, kama vile kubonyeza kwenye ikoni ya upanuzi, 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 mzunguko na urafiki wa mtumiaji wa upanuzi. Kibali cha activeTab inaonyesha mabadiliko haya. Ilianzishwa ili kuondoa haja ya upanuzi kuomba mamlaka ya mwenyeji kote kwenye mtandao, kuruhusu upanuzi kupata tu kichupo cha sasa kwa kuidhinishwa wazi na mtumiaji. Mfano huu ni mzuri kwa upanuzi unahitaji hatua zinazoanzishwa na mtumiaji lakini haukidhi mahitaji ya moja kwa moja au hatua za kuzuia, hivyo kuhatarisha urahisi na majibu ya haraka.

Vyanzo

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated