# Clickjacking {{#include ../banners/hacktricks-training.md}} ## Co to jest Clickjacking W ataku clickjacking, **użytkownik** jest **oszukiwany** w celu **kliknięcia** w **element** na stronie internetowej, który jest albo **niewidoczny**, albo przebrany za inny element. Ta manipulacja może prowadzić do niezamierzonych konsekwencji dla użytkownika, takich jak pobieranie złośliwego oprogramowania, przekierowanie na złośliwe strony internetowe, podanie danych logowania lub informacji wrażliwych, przelewy pieniędzy lub zakupy produktów online. ### Sztuczka z prewypełnieniem formularzy Czasami możliwe jest **wypełnienie wartości pól formularza za pomocą parametrów GET podczas ładowania strony**. Atakujący może nadużyć tego zachowania, aby wypełnić formularz dowolnymi danymi i wysłać ładunek clickjacking, aby użytkownik nacisnął przycisk Wyślij. ### Wypełnij formularz za pomocą Drag\&Drop Jeśli potrzebujesz, aby użytkownik **wypełnił formularz**, ale nie chcesz bezpośrednio prosić go o wpisanie konkretnych informacji (jak e-mail lub konkretne hasło, które znasz), możesz po prostu poprosić go o **Drag\&Drop** coś, co zapisze twoje kontrolowane dane, jak w [**tym przykładzie**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). ### Podstawowy ładunek ```markup
Click me
``` ### Wieloetapowy ładunek ```markup
Click me first
Click me next
``` ### Drag\&Drop + Click ładunek ```markup
.
1. Click and press delete button
3.Click me

2.DRAG ME TO THE RED BOX

``` ### XSS + Clickjacking Jeśli zidentyfikowałeś **atak XSS, który wymaga, aby użytkownik kliknął** na jakiś element, aby **wywołać** XSS, a strona jest **vulnerable to clickjacking**, możesz to wykorzystać, aby oszukać użytkownika do kliknięcia przycisku/linku.\ Przykład:\ &#xNAN;_You znalazłeś **self XSS** w niektórych prywatnych szczegółach konta (szczegóły, które **tylko ty możesz ustawić i odczytać**). Strona z **formularzem** do ustawienia tych szczegółów jest **vulnerable** na **Clickjacking** i możesz **prepopulate** **formularz** parametrami GET._\ \_\_Atakujący mógłby przygotować atak **Clickjacking** na tę stronę, **prepopulate** **formularz** ładunkiem **XSS** i **oszukać** **użytkownika** do **przesłania** formularza. Tak więc, **gdy formularz zostanie przesłany** i wartości zostaną zmodyfikowane, **użytkownik wykona XSS**. ## Strategie łagodzenia Clickjacking ### Ochrona po stronie klienta Skrypty wykonywane po stronie klienta mogą podejmować działania, aby zapobiec Clickjacking: - Zapewnienie, że okno aplikacji jest głównym lub górnym oknem. - Uczynienie wszystkich ramek widocznymi. - Zapobieganie kliknięciom w niewidoczne ramki. - Wykrywanie i informowanie użytkowników o potencjalnych próbach Clickjacking. Jednak te skrypty mogą być obejście: - **Ustawienia zabezpieczeń przeglądarek:** Niektóre przeglądarki mogą blokować te skrypty w zależności od ich ustawień zabezpieczeń lub braku wsparcia dla JavaScript. - **Atrybut `sandbox` HTML5 iframe:** Atakujący może zneutralizować skrypty frame buster, ustawiając atrybut `sandbox` z wartościami `allow-forms` lub `allow-scripts` bez `allow-top-navigation`. To uniemożliwia iframe weryfikację, czy jest górnym oknem, np., ```html ``` Wartości `allow-forms` i `allow-scripts` umożliwiają działania w obrębie iframe, jednocześnie wyłączając nawigację na najwyższym poziomie. Aby zapewnić zamierzoną funkcjonalność docelowej witryny, mogą być konieczne dodatkowe uprawnienia, takie jak `allow-same-origin` i `allow-modals`, w zależności od typu ataku. Wiadomości w konsoli przeglądarki mogą wskazać, które uprawnienia należy zezwolić. ### Ochrona po stronie serwera #### X-Frame-Options Nagłówek odpowiedzi HTTP **`X-Frame-Options`** informuje przeglądarki o legalności renderowania strony w `` lub `