Clickjacking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
У атаці clickjacking користувача обманюють на клік по елементу на веб-сторінці, який або невидимий, або замаскований під інший елемент. Ця маніпуляція може призвести до непередбачуваних наслідків для користувача, таких як завантаження шкідливого ПЗ, перенаправлення на шкідливі веб-сторінки, надання облікових даних або чутливої інформації, перекази грошей або онлайн-покупка товарів.
Іноді можливо заповнити значення полів форми, використовуючи GET параметри при завантаженні сторінки. Зловмисник може зловживати цією поведінкою, щоб заповнити форму довільними даними та надіслати payload clickjacking, щоб користувач натиснув кнопку "Відправити".
Якщо вам потрібно, щоб користувач заповнив форму, але ви не хочете прямо просити його вказати якусь конкретну інформацію (наприклад, електронну пошту або конкретний пароль, який ви знаєте), ви можете просто попросити його перетягнути щось, що запише ваші контрольовані дані, як у цьому прикладі.
Якщо ви виявили атаку XSS, яка вимагає, щоб користувач натиснув на якийсь елемент, щоб запустити XSS, і сторінка є вразливою до clickjacking, ви можете зловживати цим, щоб обманути користувача, змусивши його натиснути кнопку/посилання. Приклад: Ви знайшли самостійний XSS у деяких приватних даних облікового запису (дані, які тільки ви можете встановити та прочитати). Сторінка з формою для встановлення цих даних є вразливою до Clickjacking, і ви можете попередньо заповнити форму з параметрами GET. __Зловмисник може підготувати Clickjacking атаку на цю сторінку, попередньо заповнивши форму з XSS payload і обманути користувача, щоб надіслати форму. Отже, коли форма буде надіслана і значення будуть змінені, користувач виконає XSS.
Скрипти, виконувані на стороні клієнта, можуть виконувати дії для запобігання Clickjacking:
Забезпечення того, щоб вікно програми було основним або верхнім вікном.
Зробити всі фрейми видимими.
Запобігти натисканням на невидимі фрейми.
Виявлення та сповіщення користувачів про потенційні спроби Clickjacking.
Однак ці скрипти для зламу фреймів можуть бути обійдені:
Налаштування безпеки браузерів: Деякі браузери можуть блокувати ці скрипти на основі своїх налаштувань безпеки або відсутності підтримки JavaScript.
HTML5 iframe sandbox
атрибут: Зловмисник може нейтралізувати скрипти для зламу фреймів, встановивши атрибут sandbox
зі значеннями allow-forms
або allow-scripts
без allow-top-navigation
. Це запобігає перевірці iframe, чи є він верхнім вікном, наприклад,
The allow-forms
and allow-scripts
values enable actions within the iframe while disabling top-level navigation. To ensure the intended functionality of the targeted site, additional permissions like allow-same-origin
and allow-modals
might be necessary, depending on the attack type. Browser console messages can guide which permissions to allow.
The X-Frame-Options
HTTP response header informs browsers about the legitimacy of rendering a page in a <frame>
or <iframe>
, helping to prevent Clickjacking:
X-Frame-Options: deny
- Жоден домен не може вкласти вміст.
X-Frame-Options: sameorigin
- Тільки поточний сайт може вкласти вміст.
X-Frame-Options: allow-from https://trusted.com
- Тільки вказаний 'uri' може вкласти сторінку.
Зверніть увагу на обмеження: якщо браузер не підтримує цю директиву, вона може не працювати. Деякі браузери надають перевагу директиві CSP frame-ancestors.
frame-ancestors
директива в CSP є рекомендованим методом захисту від Clickjacking:
frame-ancestors 'none'
- Схоже на X-Frame-Options: deny
.
frame-ancestors 'self'
- Схоже на X-Frame-Options: sameorigin
.
frame-ancestors trusted.com
- Схоже на X-Frame-Options: allow-from
.
For instance, the following CSP only allows framing from the same domain:
Content-Security-Policy: frame-ancestors 'self';
Further details and complex examples can be found in the frame-ancestors CSP documentation and Mozilla's CSP frame-ancestors documentation.
child-src
і frame-src
Політика безпеки контенту (CSP) є заходом безпеки, який допомагає запобігти Clickjacking та іншим атакам ін'єкції коду, вказуючи, які джерела браузер повинен дозволити для завантаження вмісту.
frame-src
Визначає допустимі джерела для фреймів.
Більш специфічна, ніж директива default-src
.
Ця політика дозволяє фрейми з того ж походження (self) та https://trusted-website.com.
child-src
ДирективаВведена в CSP рівня 2 для встановлення дійсних джерел для веб-робітників та фреймів.
Використовується як резервний варіант для frame-src та worker-src.
Ця політика дозволяє фрейми та воркери з того ж походження (self) та https://trusted-website.com.
Примітки щодо використання:
Відмова: child-src поступово замінюється на frame-src та worker-src.
Поведінка за замовчуванням: Якщо frame-src відсутній, child-src використовується як резервний варіант для фреймів. Якщо обидва відсутні, використовується default-src.
Суворе визначення джерела: Включайте лише надійні джерела в директиви, щоб запобігти експлуатації.
Хоча вони не є абсолютно надійними, скрипти на основі JavaScript для зламу фреймів можуть бути використані для запобігання тому, щоб веб-сторінка була в фреймі. Приклад:
Валідація Токенів: Використовуйте anti-CSRF токени в веб-додатках, щоб забезпечити, що запити, що змінюють стан, здійснюються навмисно користувачем, а не через Clickjacked сторінку.
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, підтримувані найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)