BrowExt - toestemmings & host_permissions
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
permissions
Toestemmings word gedefinieer in die uitbreiding se manifest.json lĂȘer met die permissions eienskap en laat toegang toe tot byna enigiets wat ân blaaier kan toegang hĂȘ (Koekies of Fisiese Berging):
Die vorige manifest verklaar dat die uitbreiding die storage toestemming benodig. Dit beteken dat dit die storage API kan gebruik om sy data volhoubaar te stoor. Anders as koekies of localStorage APIâs wat gebruikers ân sekere vlak van beheer gee, kan uitbreiding berging normaalweg net verwyder word deur die uitbreiding te deĂŻnstalleer.
ân Uitbreiding sal die toestemmings wat in sy manifest.json lĂȘer aangedui word, versoek en na die installering van die uitbreiding kan jy altyd sy toestemmings in jou blaaiers nagaan, soos in hierdie beeld getoon:
.png)
Jy kan die volledige lys van toestemmings wat ân Chromium Blaaier Uitbreiding kan versoek hier vind en ân volledige lys vir Firefox uitbreidings hier.
host_permissions
Die opsionele maar kragtige instelling host_permissions dui aan met watter gasheer die uitbreiding in staat gaan wees om te kommunikeer via APIâs soos cookies, webRequest, en tabs.
Die volgende host_permissions laat basies elke web toe:
"host_permissions": [
"*://*/*"
]
// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]
// Or:
"host_permissions": [
"<all_urls>"
]
Hierdie is die gasheer wat die blaaierspesie toegang kan verkry. Dit is omdat wanneer ân blaaierspesie fetch("https://gmail.com/") aanroep, dit nie deur CORS beperk word nie.
Misbruik van permissions en host_permissions
Oortjies
Boonop ontsluit host_permissions ook âgevorderdeâ tabs API funksionaliteit. Dit stel die spesie in staat om tabs.query() aan te roep en nie net ân lys van die gebruiker se blaaiertabs terug te kry nie, maar ook te leer watter webblad (wat adres en titel beteken) gelaai is.
Caution
Nie net dit nie, luisteraars soos tabs.onUpdated word ook baie nuttiger. Hierdie sal kennisgewing ontvang wanneer ân nuwe bladsy in ân tab laai.
Loop inhoudskripte
Inhoudskripte is nie noodwendig staties in die spesie-manifes geskryf nie. Gegewe voldoende host_permissions, kan spesies dit ook dinamies laai deur tabs.executeScript() of scripting.executeScript() aan te roep.
Albei APIâs stel die uitvoering van nie net lĂȘers wat in die spesies as inhoudskripte bevat is nie, maar ook arbitraire kode. Die eerste stel die oorgang van JavaScript-kode as ân string toe, terwyl die laaste ân JavaScript-funksie verwag wat minder geneig is tot inspuitingskwesbaarhede. Tog, albei APIâs sal chaos veroorsaak as dit verkeerd gebruik word.
Caution
Benewens die bogenoemde vermoĂ«ns, kan inhoudskripte byvoorbeeld akkrediteerbare inligting onderskep soos dit in webbladsye ingevoer word. âN Ander klassieke manier om dit te misbruik is om advertensies in te spuit op elke webwerf. Dit is ook moontlik om bedrogboodskappe toe te voeg om die geloofwaardigheid van nuuswebwerwe te misbruik. Laastens, kan hulle bankwebwerwe manipuleer om geldtransfers te herlei.
Impliciete voorregte
Sommige spesie voorregte hoef nie eksplisiet verklaar te word nie. Een voorbeeld is die tabs API: sy basiese funksionaliteit is toeganklik sonder enige voorregte. Enige spesie kan kennisgewing ontvang wanneer jy tabs oopmaak en sluit, dit sal net nie weet watter webwerf hierdie tabs ooreenstem nie.
Klink te onskadelik? Die tabs.create() API is ietwat minder so. Dit kan gebruik word om ân nuwe tab te skep, essensieel dieselfde as window.open() wat deur enige webwerf aangeroep kan word. Tog, terwyl window.open() onderhewig is aan die pop-up blokker, is tabs.create() nie.
Caution
âN spesie kan enige aantal tabs skep wanneer dit wil.
As jy deur moontlike tabs.create() parameters kyk, sal jy ook opgemerk dat sy vermoĂ«ns baie verder strek as wat window.open() toegelaat word om te beheer. En terwyl Firefox nie toelaat dat data: URIs met hierdie API gebruik word nie, het Chrome nie so ân beskerming nie. Die gebruik van sulke URIs op die boonste vlak is verbied weens misbruik vir phishing.
tabs.update() is baie soortgelyk aan tabs.create() maar sal ân bestaande tab wysig. So kan ân kwaadwillige spesie byvoorbeeld arbitrĂȘr ân advertensiebladsy in een van jou tabs laai, en dit kan ook die ooreenstemmende tab aktiveer.
Webkamera, geolokasie en vriende
Jy weet waarskynlik dat webwerwe spesiale toestemming kan vra, byvoorbeeld om toegang tot jou webkamera (video-konferensietools) of geografiese ligging (kaarte) te verkry. Dit is funksies met aansienlike potensiaal vir misbruik, so gebruikers moet elke keer bevestig dat hulle steeds dit wil hĂȘ.
Caution
Nie so met blaaierspesies nie. As ân blaaierspesie toegang tot jou webkamera of mikrofoon wil hĂȘ, hoef dit net een keer toestemming te vra
Tipies sal ân spesie dit onmiddellik na installasie doen. Sodra hierdie uitnodiging aanvaar word, is toegang tot die webkamera te enige tyd moontlik, selfs al interaksie die gebruiker nie met die spesie op hierdie punt nie. Ja, ân gebruiker sal hierdie uitnodiging net aanvaar as die spesie regtig toegang tot die webkamera benodig. Maar daarna moet hulle die spesie vertrou om nie enigiets geheim op te neem nie.
Met toegang tot jou presiese geografiese ligging of inhoud van jou klembord, is dit glad nie nodig om toestemming eksplisiet te verleen nie. âN spesie voeg eenvoudig geolocation of clipboard by die permissions entry van sy manifes. Hierdie toegang voorregte word dan implisiet toegestaan wanneer die spesie geĂŻnstalleer word. So ân kwaadwillige of gecompromitteerde spesie met hierdie voorregte kan jou bewegingsprofiel skep of jou klembord monitor vir gekopieerde wagwoorde sonder dat jy enigiets opmerk.
Die toevoeging van die history sleutelwoord aan die permissions entry van die spesie-manifes verleen toegang tot die history API. Dit stel in staat om die gebruiker se hele blaai geskiedenis in een keer te verkry, sonder om te wag vir die gebruiker om hierdie webwerwe weer te besoek.
Die bookmarks toestemming het soortgelyke misbruik potensiaal, hierdie een stel toegang tot alle boekmerke via die bookmarks API toe.
Berging toestemming
Die spesie berging is bloot ân sleutel-waarde versameling, baie soortgelyk aan localStorage wat enige webwerf kan gebruik. So geen sensitiewe inligting moet hier gestoor word nie.
Echter, advertensie maatskappye kan ook hierdie berging misbruik.
Meer toestemming
Jy kan die volledige lys van toestemming wat ân Chromium Blaaierspesie kan vra hier vind en ân volledige lys vir Firefox spesies hier.
Prevensie
Die beleid van Google se ontwikkelaar verbied eksplisiet spesies om meer voorregte te vra as wat nodig is vir hul funksionaliteit, wat effektief oortollige toestemming versoeke verminder. âN Voorbeeld waar ân blaaierspesie hierdie grens oorgesteek het, het behels dat dit saam met die blaaierself versprei is eerder as deur ân byvoeging winkel.
Blaaiers kan verder die misbruik van spesie voorregte beperk. Byvoorbeeld, Chrome se tabCapture en desktopCapture APIâs, wat vir skermopnames gebruik word, is ontwerp om misbruik te minimaliseer. Die tabCapture API kan slegs geaktiveer word deur direkte gebruikersinteraksie, soos om op die spesie ikoon te klik, terwyl desktopCapture gebruikersbevestiging vereis vir die venster wat opgeneem moet word, wat geheime opname aktiwiteite voorkom.
Echter, om sekuriteitsmaatreëls te verskerp, lei dikwels tot verminderde buigsaamheid en gebruikersvriendelikheid van spesies. Die activeTab toestemming illustreer hierdie afruil. Dit is bekendgestel om die behoefte aan spesies om gasheer voorregte oor die hele internet te vra, te elimineer, wat spesies toelaat om slegs die huidige tab te benader op eksplisiete aktivering deur die gebruiker. Hierdie model is effektief vir spesies wat gebruikers-gestimuleerde aksies benodig, maar faal vir diegene wat outomatiese of voorafgaande aksies benodig, wat gerief en onmiddellike reaksie benadeel.
Verwysings
- https://palant.info/2022/08/17/impact-of-extension-privileges/
- https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

