BrowExt - ClickJacking

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Ta strona będzie nadużywać podatności ClickJacking w rozszerzeniu przeglądarki. Jeśli nie wiesz, czym jest ClickJacking, sprawdź:

pageClickjacking

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ą metody extension.getURL. Zasoby na białej liście są serwowane z odpowiednimi nagłówkami CORS, dzięki czemu 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

  • Interakcji z przeglądarką w pewnym stopniu

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ą przypadkowo 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ć uzyskana 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:

pageBrowExt - XSS Example

Odwołania

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated