Вводная
Цель работы
Ознакомиться с принципами использования кликджекинга и защиты от него.
Введение
Кликджекинг - механизм обмана пользователей интернета, при котором злоумышленник может получить доступ к конфиденциальной информации или даже получить доступ к компьютеру пользователя, заманив его на внешне безобидную страницу или внедрив вредоносный код на безопасную страницу. Принцип основан на том, что поверх видимой страницы располагается невидимый слой, в который и загружается нужная злоумышленнику страница, при этом элемент управления (кнопка, ссылка), необходимый для осуществления требуемого действия, совмещается с видимой ссылкой или кнопкой, нажатие на которую ожидается от пользователя. Возможны различные применения технологии — от подписки на ресурс в социальной сети до кражи конфиденциальной информации и совершения покупок в интернет-магазинах за чужой счёт.
Историческая справка: Термин «кликджекинг» впервые использовали специалисты по информационной безопасности Роберт Хансен и Еремия Гроссман. Они обнаружили уязвимость нулевого дня в продуктах 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.
К прочтению рекомендуются статьи:
- История
- Наглядный пример с facebook
- И отечественный производитель не отстаёт
- Английская страница википедии гораздо богаче интересными примерами, чем русская
Задание
- Реализуйте пример эксплуатации кликджекинга на некоем целевом сайте.
- Реализуйте защиту от данной уязвимости на сайте.
Вопросы
- К чему может привести clickjacking? Приведите как минимум четыре примера.
- Как можно защититься от clickjacking?
- Насколько легально использование clickjacking для сбора статистики?