BrowExt - ClickJacking

Reading time: 4 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Podstawowe informacje

Ta strona będzie wykorzystywać lukę ClickJacking w rozszerzeniu przeglądarki.
Jeśli nie wiesz, czym jest ClickJacking, sprawdź:

{{#ref}} ../clickjacking.md {{#endref}}

Rozszerzenia zawierają plik manifest.json, a ten plik JSON ma pole web_accessible_resources. Oto co mówią dokumenty Chrome:

Te zasoby będą dostępne na stronie internetowej za pośrednictwem adresu URL chrome-extension://[PACKAGE ID]/[PATH], który można wygenerować za pomocą extension.getURL method. Zasoby z listy dozwolonej są serwowane z odpowiednimi nagłówkami CORS, więc są dostępne za pośrednictwem mechanizmów takich jak XHR.1

web_accessible_resources w rozszerzeniu przeglądarki nie są dostępne tylko przez sieć; działają również z wbudowanymi uprawnieniami rozszerzenia. Oznacza to, że mają zdolność do:

  • Zmiany stanu rozszerzenia
  • Ładowania dodatkowych zasobów
  • Interakcji z przeglądarką w pewnym zakresie

Jednak ta funkcja stwarza ryzyko bezpieczeństwa. Jeśli zasób w web_accessible_resources ma jakąkolwiek istotną funkcjonalność, atakujący mógłby potencjalnie osadzić ten zasób w zewnętrznej stronie internetowej. Nieuważni użytkownicy odwiedzający tę stronę mogą nieświadomie aktywować ten osadzony zasób. Taka aktywacja może prowadzić do niezamierzonych konsekwencji, w zależności od uprawnień i możliwości zasobów rozszerzenia.

Przykład PrivacyBadger

W rozszerzeniu PrivacyBadger zidentyfikowano lukę związaną z katalogiem skin/, który został zadeklarowany jako web_accessible_resources w następujący sposób (sprawdź oryginalny post na blogu):

json
"web_accessible_resources": [
"skin/*",
"icons/*"
]

Ta konfiguracja prowadziła do potencjalnego problemu z bezpieczeństwem. Konkretnie, plik skin/popup.html, który jest renderowany po interakcji z ikoną PrivacyBadger w przeglądarce, mógł być osadzony w iframe. To osadzenie mogło być wykorzystane do wprowadzenia użytkowników w błąd, aby nieumyślnie kliknęli "Wyłącz PrivacyBadger dla tej witryny". Taki krok naruszyłby prywatność użytkownika, wyłączając ochronę PrivacyBadger i potencjalnie narażając użytkownika na zwiększone śledzenie. Wizualna demonstracja tego exploit'u jest dostępna w przykładzie wideo ClickJacking pod adresem https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.

Aby rozwiązać tę lukę, wdrożono proste rozwiązanie: usunięcie /skin/* z listy web_accessible_resources. Ta zmiana skutecznie zminimalizowała ryzyko, zapewniając, że zawartość katalogu skin/ nie mogła być dostępna ani manipulowana przez zasoby dostępne w sieci.

Naprawa była prosta: usuń /skin/* z web_accessible_resources.

PoC

html
<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->

<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}

#stuff {
float: top;
position: absolute;
}

button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}
</style>

<div id="stuff">
<h1>Click the button</h1>
<button id="button">click me</button>
</div>

<iframe
src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>

Przykład Metamask

A blog post about a ClickJacking in metamask can be found here. W tym przypadku, Metamask naprawił lukę, sprawdzając, czy protokół używany do uzyskania dostępu to https: lub http: (nie chrome: na przykład):

Inna luka ClickJacking naprawiona w rozszerzeniu Metamask polegała na tym, że użytkownicy mogli Click to whitelist, gdy strona była podejrzana o phishing z powodu “web_accessible_resources”: [“inpage.js”, “phishing.html”]. Ponieważ ta strona była podatna na Clickjacking, atakujący mógł to wykorzystać, pokazując coś normalnego, aby ofiara kliknęła, aby dodać do białej listy, nie zauważając tego, a następnie wracając do strony phishingowej, która zostanie dodana do białej listy.

Przykład Steam Inventory Helper

Sprawdź następującą stronę, aby zobaczyć, jak XSS w rozszerzeniu przeglądarki zostało połączone z luką ClickJacking:

{{#ref}} browext-xss-example.md {{#endref}}

Odniesienia

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks