Вводная

Цель работы

Ознакомиться с принципами использования кликджекинга и защиты от него.

Введение

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

Историческая справка: Термин «кликджекинг» впервые использовали специалисты по информационной безопасности Роберт Хансен и Еремия Гроссман. Они обнаружили уязвимость нулевого дня в продуктах Adobe и в браузерах компаний Microsoft и Mozilla, которая позволяла получить доступ к компьютеру жертвы атаки

Как это работает

Обычно, атакуемый сайт оборачивается в прозрачный iframe. Поверх него располагают какую-нибудь привлекательную ссылку, на которую захочет кликнуть «жертва» (при атаке на твитер в 2009 такой приманкой стала кнопка c текстом «Don't click»). Теперь вместо клика на неё будет происходить клик в iframe (так как он находится поверх кнопки).

Защита через javascript

Самый простой способ — сделать редирект с помощью js, если сайт открыт в iframe (пример):

if(top != self)
  top.location = self.location;

К сожалению, это код не универсален, существуют несколько способов его обхода разной степени изощрённости и применимости в браузерах (простейший - указание параметра sandbox в iframe).

Защита через заголовки

В дополнение к предыдущему методу, разработчики браузеров ввели новый заголовок ответа сервера X-Frame-Options. Он позволяет не отображать сайт, если он загружается c другого домена через iframe. Пример настроек для Apache

Header always append X-Frame-Options SAMEORIGIN

пример настройки для nginx:

add_header X-Frame-Options SAMEORIGIN;

Защита при помощи ввода дополнительных данных

Важные действия, предпринимаемые на сайте, должны подтверждаться дополнительно, к примеру, с помощью email или SMS.

К прочтению рекомендуются статьи:

Задание

Внимание! Примеры создаются и эксплуатируются только на ваших тестовых проектах. Запрещается их демонстрация на каких либо внешних сайтах.
  • Реализуйте пример эксплуатации кликджекинга на некоем целевом сайте.
  • Реализуйте защиту от данной уязвимости на сайте.

Вопросы

  1. К чему может привести clickjacking? Приведите как минимум четыре примера.
  2. Как можно защититься от clickjacking?
  3. Насколько легально использование clickjacking для сбора статистики?