Учебники

Подделка межсайтовых запросов (CSRF)

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

Давайте разберемся с этими факторами с помощью простой диаграммы: агенты угроз, векторы атак, слабость в безопасности, техническое воздействие и влияние на бизнес.

CSRF

пример

Вот классический пример CSRF —

Шаг 1. Допустим, уязвимое приложение отправляет запрос на изменение состояния в виде простого текста без какого-либо шифрования.

http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243

Шаг 2. Теперь хакер создает запрос, который переводит деньги со счета жертвы на счет злоумышленника, встраивая запрос в изображение, которое хранится на различных сайтах, находящихся под контролем злоумышленника.

<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#" 
   width = "0" height = "0" />

Руки вверх

Шаг 1 — Давайте выполним подделку CSRF, внедрив скрипт Java в изображение. Снимок проблемы указан ниже.

csrf1

Шаг 2 — Теперь нам нужно смоделировать передачу в изображение 1×1 и заставить жертву нажать на нее.

csrf2

Шаг 3 — После отправки сообщения оно отображается, как показано ниже.

csrf3

Шаг 4 — Теперь, если жертва щелкает следующий URL-адрес, выполняется передача, которую можно найти, перехватив действие пользователя с помощью пакета burp. Мы можем увидеть перевод, заметив его в сообщении Get, как показано ниже —

csrf3

Шаг 5 — Теперь при нажатии кнопки «Обновить» отображается отметка об окончании урока.

CSRF можно избежать, создав уникальный токен в скрытом поле, которое будет отправлено в теле HTTP-запроса, а не в URL-адресе, который более подвержен уязвимости.

Принуждение пользователя к повторной аутентификации или доказательство того, что они являются пользователями, для защиты CSRF. Например, CAPTCHA.