<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Uprawnienia są określane w pliku **`manifest.json`** rozszerzenia za pomocą właściwości **`permissions`** i umożliwiają dostęp do prawie wszystkiego, do czego przeglądarka ma dostęp (ciasteczka lub pamięć fizyczną):
Poprzedni manifest deklaruje, że rozszerzenie wymaga uprawnienia `storage`. Oznacza to, że może korzystać z [API pamięci](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage), aby przechowywać swoje dane trwale. W przeciwieństwie do ciasteczek lub interfejsów `localStorage`, które dają użytkownikom pewien poziom kontroli, **pamięć rozszerzenia można zazwyczaj wyczyścić tylko poprzez odinstalowanie rozszerzenia**.
Rozszerzenie będzie prosić o uprawnienia wskazane w pliku **`manifest.json`**, a po zainstalowaniu rozszerzenia zawsze możesz **sprawdzić jego uprawnienia w przeglądarce**, jak pokazano na tym obrazku:
Możesz znaleźć [**pełną listę uprawnień, które rozszerzenie przeglądarki Chromium może żądać tutaj**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) oraz [**pełną listę dla rozszerzeń Firefox tutaj**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.**
Opcjonalne, ale potężne ustawienie **`host_permissions`** wskazuje, z którymi hostami rozszerzenie będzie mogło współdziałać za pomocą interfejsów takich jak [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) i [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs).
Oto hosty, do których rozszerzenie przeglądarki ma swobodny dostęp. Dzieje się tak, ponieważ gdy rozszerzenie przeglądarki wywołuje **`fetch("https://gmail.com/")`**, nie jest ograniczone przez CORS.
Ponadto, **`host_permissions`** odblokowują również "zaawansowane" [**funkcjonalności API kart**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs). Pozwalają rozszerzeniu na wywołanie [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) i nie tylko otrzymać **listę kart przeglądarki użytkownika**, ale także dowiedzieć się, która **strona internetowa (adres i tytuł) jest załadowana**.
Nie tylko to, słuchacze takie jak [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **stają się również znacznie bardziej przydatne**. Zostaną powiadomieni, gdy nowa strona zostanie załadowana do karty.
Skrypty treści nie muszą być pisane statycznie w manifeście rozszerzenia. Dzięki wystarczającym **`host_permissions`**, rozszerzenia mogą również ładować je dynamicznie, wywołując [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **lub** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript).
Obie API umożliwiają wykonanie nie tylko plików zawartych w rozszerzeniach jako skrypty treści, ale także **dowolnego kodu**. Pierwsze z nich umożliwia przekazywanie kodu JavaScript jako ciągu znaków, podczas gdy drugie oczekuje funkcji JavaScript, która jest mniej podatna na podatności związane z wstrzykiwaniem. Jednak oba API mogą wyrządzić szkody, jeśli są niewłaściwie używane.
Oprócz powyższych możliwości, skrypty treści mogą na przykład **przechwytywać dane uwierzytelniające**, gdy są wprowadzane na strony internetowe. Inny klasyczny sposób ich nadużycia to **wstrzykiwanie reklam** na każdej stronie internetowej. Możliwe jest również dodawanie **fałszywych wiadomości** w celu nadużycia wiarygodności stron informacyjnych. Wreszcie, mogą **manipulować stronami bankowymi**, przekierowując transfery pieniężne.
Niektóre uprawnienia rozszerzeń **nie muszą być jawnie deklarowane**. Przykładem jest [API kart](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): jego podstawowa funkcjonalność jest dostępna bez żadnych uprawnień. Każde rozszerzenie może otrzymać powiadomienie, gdy otwierasz i zamykasz karty, po prostu nie będzie wiedziało, które strony internetowe odpowiadają tym kartom.
Brzmi zbyt niewinnie? [API tabs.create()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) jest nieco mniej niewinne. Może być używane do **tworzenia nowej karty**, co jest praktycznie tożsame z [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open), które może być wywoływane przez dowolną stronę internetową. Jednak podczas gdy `window.open()` podlega **blokadzie wyskakujących okienek, `tabs.create()` nie**.
Jeśli przejrzysz możliwe parametry `tabs.create()`, zauważysz również, że jego możliwości wykraczają daleko poza to, co `window.open()` może kontrolować. I podczas gdy Firefox nie zezwala na użycie URI `data:` z tym API, Chrome nie ma takiej ochrony. **Użycie takich URI na najwyższym poziomie zostało** [**zakazane ze względu na nadużycie w celu phishingu**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.**
[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) jest bardzo podobne do `tabs.create()`, ale **modyfikuje istniejącą kartę**. Złośliwe rozszerzenie może na przykład dowolnie ładować stronę reklamową do jednej z twoich kart i aktywować tę kartę.
Prawdopodobnie wiesz, że strony internetowe mogą prosić o specjalne uprawnienia, na przykład dostęp do kamery internetowej (narzędzia do wideokonferencji) lub lokalizacji geograficznej (mapy). Są to funkcje z dużym potencjałem nadużycia, dlatego użytkownicy muszą za każdym razem potwierdzać, czy nadal tego chcą.
Nie dotyczy to jednak rozszerzeń przeglądarki. **Jeśli rozszerzenie przeglądarki** [**chce uzyskać dostęp do twojej kamery internetowej lub mikrofonu**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, musi poprosić o zgodę tylko raz**
Zazwyczaj rozszerzenie robi to od razu po zainstalowaniu. Po zaakceptowaniu tego monitu, **dostęp do kamery internetowej jest możliwy w dowolnym momencie**, nawet jeśli użytkownik nie korzysta w tym momencie z rozszerzenia. Tak, użytkownik zaakceptuje ten monit tylko wtedy, gdy rozszerzenie rzeczywiście potrzebuje dostępu do kamery internetowej. Ale potem musi zaufać rozszerzeniu, że nie będzie nagrywać niczego potajemnie.
Z dostępem do [twojej dokładnej lokalizacji geograficznej](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) lub [zawartości schowka](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API), nie jest konieczne udzielanie wyraźnej zgody. **Rozszerzenie po prostu dodaje `geolocation` lub `clipboard` do** [**wpisu uprawnień**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **w swoim manifeście**. Te uprawnienia dostępu są udzielane domyślnie podczas instalacji rozszerzenia. Złośliwe lub skompromitowane rozszerzenie z tymi uprawnieniami może tworzyć twój profil ruchu lub monitorować schowek w poszukiwaniu skopiowanych haseł, bez żebyś cokolwiek zauważył.
Dodanie słowa kluczowego **`history`** do [wpisu uprawnień](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) w manifeście rozszerzenia umożliwia **dostęp do** [**API historii**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Pozwala to na pobranie całej historii przeglądania użytkownika od razu, bez oczekiwania, aż użytkownik odwiedzi te strony internetowe ponownie.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.