BrowExt - permissions & host_permissions

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

izinler

İzinler, genellikle bir tarayıcının erişebileceği hemen hemen her şeye erişim sağlayan manifest.json dosyasında tanımlanır ve (Çerezler veya Fiziksel Depolama):

Önceki manifest dosyası, uzantının storage iznini gerektirdiğini belirtir. Bu, depolama API'sini kullanarak verilerini kalıcı olarak depolayabilir. Kullanıcılara belirli bir kontrol seviyesi sunan çerezler veya localStorage API'lerinin aksine, uzantı depolaması genellikle yalnızca uzantının kaldırılmasıyla temizlenebilir.

Bir uzantı, manifest.json dosyasında belirtilen izinleri isteyecek ve Uzantıyı yükledikten sonra, tarayıcınızda her zaman izinlerini kontrol edebilirsiniz, bu resimde gösterildiği gibi:

Chromium Tarayıcı Uzantısının isteyebileceği izinlerin tam listesini burada bulabilirsiniz ve Firefox uzantıları için tam liste burada bulunabilir.

host_permissions

İsteğe bağlı ancak güçlü olan host_permissions ayarı, uzantının cookies, webRequest ve tabs gibi API'ler aracılığıyla etkileşimde bulunabileceği ana bilgisayarları belirtir.

Aşağıdaki host_permissions temel olarak her web sitesine izin verir:

"host_permissions": [
"*://*/*"
]

// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]

// Or:
"host_permissions": [
"<all_urls>"
]

permissions ve host_permissions Kötüye Kullanımı

Sekmeler

Ayrıca, host_permissions ayrıca "gelişmiş" sekme API işlevselliğini de açar. Bu, uzantının tabs.query() çağrısına izin verir ve sadece kullanıcının tarayıcı sekmelerinin bir listesini almakla kalmaz, aynı zamanda yüklenen web sayfasının (adres ve başlık anlamına gelen) hangisi olduğunu da öğrenir.

Bununla birlikte, tabs.onUpdated gibi dinleyiciler de daha da kullanışlı hale gelir. Bunlar, bir sekmede yeni bir sayfa yüklendiğinde bildirilecektir.

İçerik betiklerinin çalıştırılması

İçerik betikleri genellikle uzantı manifestosuna statik olarak yazılmaz. Yeterli host_permissions verildiğinde, uzantılar ayrıca tabs.executeScript() veya scripting.executeScript() çağrılarını kullanarak bunları dinamik olarak yükleyebilir.

Her iki API de, içerik betikleri olarak uzantı içinde bulunan dosyaları değil, aynı zamanda keyfi kodu da yürütmeye izin verir. İlk API, JavaScript kodunu bir dize olarak iletmeyi sağlarken, ikincisi enjeksiyon güvenlik açıklarına daha az duyarlı olan bir JavaScript işlevi bekler. Yine de, her iki API de yanlış kullanıldığında büyük zararlara neden olabilir.

Yukarıdaki yeteneklerin yanı sıra, içerik betikleri örneğin kimlik bilgilerini girildiği anda yakalayabilir. Bunları kötüye kullanmanın klasik yollarından biri de her web sitesine reklam enjekte etmektir. Haber sitelerinin güvenilirliğini kötüye kullanmak için dolandırıcılık mesajları eklemek de mümkündür. Son olarak, bankacılık web sitelerini para transferlerini yeniden yönlendirmek için manipüle edebilirler.

Dolaylı ayrıcalıklar

Bazı uzantı ayrıcalıkları açıkça bildirilmesi gerekmez. Bir örnek, sekme API dir: temel işlevselliğine herhangi bir ayrıcalık olmadan erişilebilir. Herhangi bir uzantı, açtığınız ve kapattığınız sekmeler hakkında bilgilendirilebilir, yalnızca bu sekmelerin hangi web sitesine karşılık geldiğini bilemez.

Çok zararsız görünüyor mu? tabs.create() API biraz daha az zararlıdır. Yeni bir sekme oluşturmak için kullanılabilir, temelde herhangi bir web sitesi tarafından çağrılabilen window.open() ile aynıdır. Ancak window.open() pop-up engeline tabidir, tabs.create() değildir.

Bir uzantı istediği zaman herhangi bir sayıda sekme oluşturabilir.

tabs.create() parametrelerini incelediğinizde, yeteneklerinin window.open()'in kontrol etmesine izin verilenin çok ötesine gittiğini fark edeceksiniz. Ve Firefox, bu API ile data: URI'ların kullanılmasına izin vermezken, Chrome'un böyle bir koruması yoktur. Bu tür URI'ların üst düzeyde kullanımı, balık avı için kötüye kullanıldığından yasaklanmıştır.

tabs.update() tabs.create()'e çok benzer ancak mevcut bir sekmeyi değiştirir. Bu nedenle, kötü niyetli bir uzantı örneğin reklam sayfasını rastgele bir sekmede yükleyebilir ve ilgili sekmeyi de etkinleştirebilir.

Kamera, coğrafi konum ve arkadaşlar

Muhtemelen web sitelerinin özel izinler isteyebileceğini biliyorsunuzdur, örneğin kameranıza (video konferans araçları) veya coğrafi konumunuza (haritalar) erişmek için. Bu, kötüye kullanım potansiyeli yüksek özelliklerdir, bu nedenle kullanıcılar her seferinde bunu hala istediklerine dair onay vermek zorundadır.

Ancak, tarayıcı uzantıları için durum farklıdır. Bir tarayıcı uzantısı web kamerasına veya mikrofona erişmek istiyorsa, izin sadece bir kez istenmelidir.

Genellikle, bir uzantı bunu yüklendikten hemen sonra yapar. Bu onay alındığında, web kamerasına her zaman erişilebilir, hatta kullanıcı bu noktada uzantıyla etkileşimde değilse bile. Evet, bir kullanıcı yalnızca uzantının gerçekten web kamerasına erişime ihtiyaç duyduğunda bu onayı kabul eder. Ancak bundan sonra uzantının gizlice bir şey kaydetmemesi için uzantıya güvenmek zorundadır.

Tam olarak coğrafi konumunuz veya panonuzun içeriği erişimine, açıkça izin verme gerekli değildir. Bir uzantı, manifestosunun izinler girişine geolocation veya clipboard ekleyerek bu erişim ayrıcalıklarını yükler. Bu erişim ayrıcalıkları, uzantı yüklendiğinde zımni olarak verilir. Bu nedenle, bu ayrıcalıklara sahip kötü niyetli veya tehlikeye atılmış bir uzantı, fark etmeden hareket profilinizi oluşturabilir veya panonuzdaki kopyalanan şifreleri izleyebilir.

[history` anahtarını uzantı manifestosunun izinler girişine eklemek, kullanıcının tüm gezinme geçmişini beklemeksizin bir arada almasına izin veren geçmiş API'sine erişim sağlar.

bookmarks izin benzer kötüye kullanım potansiyeline sahiptir, bu izin tüm yer işaretlerini yer işaretleri API'si aracılığıyla okumaya izin verir.

Depolama izni

Uzantı depolaması yalnızca bir anahtar-değer koleksiyonudur, herhangi bir web sitesinin kullanabileceği localStorage ile çok benzerdir. Bu nedenle, burada hassas bilgiler saklanmamalıdır.

Ancak, reklam şirketleri de bu depoyu kötüye kullanabilir.

Daha fazla izin

Bir Chromium Tarayıcı Uzantısının isteyebileceği izinlerin tam listesini burada bulabilirsiniz ve Firefox uzantıları için tam listeyi burada bulabilirsiniz.

Referanslar

A'dan Z'ye AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated