CSRF Уязвимость. Заставляем пользователя удалить свой аккаунт
Введение:
В этой статье мы рассмотрим такую уязвимость как CSRF, что она из себя представляет и для чего используется.
CSRF(межсайтовая подделка запроса) - вид атаки на пользователя, основывающийся на минусах HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сайт (например, на сайт банк), осуществляющий некое вредоносное действие. Для осуществления данной атаки жертва должна быть залогинена на сайте банка, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения.
Основное:
Предположим кнопка "Перевести деньги" на сайте банка https://e7bank, при нажатии посылает человека на https://e7bank/send?amount=100?reciever=LaRevoltage
Amount — кол-во дней для перевода.
Это самый обычный вариант отправки денег через сайт, он не выглядит уязвимым, или выглядит?
Мы уже знаем что чтобы каждый раз человеку не приходилось авторизоваться на сайте, приложение сохраняет cookies и автоматически пропускает пользователя. Cookies в свою очередь автоматически передается бразуером при запросе сайту.
Мы так-же знаем что с помощью HTML можно заставлять браузер посылать запросы на сайты.
Разместив на своем сайте http://evil-site.com код:
<img src="https://e7bank/send?amount=100?reciever=LaRevoltage">
Браузер попытается получить картинку и пошлет запрос на указанный url, автоматически вставив cookies, а веб-сайт в свою очередь автоматически авторизует пользователь и прочтет желаемое действие в url, отправив деньги на другой аккаунт.
Вывод:
С первого взгляда CSRF не должна представлять особой опасности для проекта и конечного пользователя, но как мы убедились это совсем не так и при грамотном использовании может рухнуть вся суть предложения