 |
|

25.04.2012, 00:33
|
|
Познающий
Регистрация: 08.03.2012
Сообщений: 40
С нами:
7463126
Репутация:
74
|
|
CSRF атаки или подделка межсайтовых запросов
Intro
CSRF (полное название Сross Site Request Forgery) - вид атак на посетителей веб-сайтов, использующий недостатки HTTP протокола.
Схема этой уязвимости довольно-таки проста: Жертва заходит на сайт, созданный хакером, и от ее лица тайно отправляется запрос на веб-сайт, использующий недостатки HTTP протокола.
Атаки можно совершить практически везде (конечно, если веб-сайт уязвим): Сайт платёжной системы (перевод средств на счет хакера), хостинг (смена пароля от панели), социальная сеть (смена пароля от панели / смена контрольного вопроса), но есть одно но - для осуществления данной атаки, жертва должна быть авторизована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, который не может быть проигнорирован или подделан атакующим скриптом.
Статья предназначена для начинающих пользователей..
Атакуем сайт
Для примера давайте возьмем несуществующий хостинг - hosting.qqq, наша задача сменить пароль аккаунта Administrator, нам известен только список параметров и логин жертвы.
Итак, приступим! Вот список значений и параметров уязвимого сайта:
Код:
reason=password_change
password=newpassword // Новый пароль
password2=newpassword // Подтверждаем новый пароль
Задача злоумышленника - создать страницу и тайно отправить запрос от лица жертвы на уязвимый сайт.
Нашу страницу назовем newpassword.html, теперь нужно сконструировать код, который тайно пошлет запрос от лица жертвы на уязвимый сайт. Я предоставлю Вам несколько вариантов.
Вариант №1
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][/COLOR]
Вариант №2
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]getElementsByTagName[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'form'[/COLOR][COLOR="#007700"])[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]submit[/COLOR][COLOR="#007700"]();
[/COLOR][COLOR="#0000BB"]
[/COLOR][/COLOR]
Но в этих двух случаях, нашу жертву перекинет на хостинг hosting.qqq, а это не есть "тайно". Но выход есть, создаем вторую страницу new.html, и записываем туда следующий код:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][/COLOR]
Как Вы увидели, на странице new.html будет находится скрытый iFrame, который будет ссылаться на страницу newpassword.html, а уже newpassword.html и будет посылать запрос на уязвимый сайт. Да-да, вот такая цепочка. Конечно же, можно сделать все намного проще, например как здесь (скрытый iframe + отправка запроса на уязвимый сайт):
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
function[/COLOR][COLOR="#0000BB"]csrf[/COLOR][COLOR="#007700"]() {
var[/COLOR][COLOR="#0000BB"]html[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]html[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]window[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]frames[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"frame"[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]body[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]innerHTML[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]html[/COLOR][COLOR="#007700"];
}
[/COLOR][COLOR="#0000BB"]
[/COLOR]
[/COLOR]
Но в третьем варианте мы пошлем GET запрос на уязвимый сайт, а для смены пароля в нашем случае необходимо отправить данные методом POST, так что будем использовать первые два любых варианта.
Теперь осталось написать в Тех. поддержку хостинга (есть вероятность, что наше сообщение прочтет администратор хостинга) и заманить его на сайт злоумышленника ( http://сайт_злоумышленника.ру/new.html), но как заманить - думайте уже сами
Защита от CSRF
Наиболее простой способ защиты: сервер жертвы должен просить подтверждения действий пользователя и проверять поле HTTP_REFERER, если оно указано в запросе. Или-же использовать дополнительный секретный ключ, предназначенный для выполнения POST-запросов.
Спасибо за внимание!
|
|
|

25.04.2012, 18:41
|
|
Новичок
Регистрация: 08.04.2010
Сообщений: 1
С нами:
8469890
Репутация:
0
|
|
Статья хорошая,но раскрыта не полностью,можно CSRF через картинку выполнить,спасибо m_script.
|
|
|

25.04.2012, 20:01
|
|
Флудер
Регистрация: 08.11.2004
Сообщений: 3,395
С нами:
11317286
Репутация:
3876
|
|
слабовато...
|
|
|

25.04.2012, 21:02
|
|
Познающий
Регистрация: 08.03.2012
Сообщений: 40
С нами:
7463126
Репутация:
74
|
|
Сообщение от Rebz
слабовато...
Сообщение от None
Статья предназначена для начинающих пользователей..
А что Вам хотелось-бы видеть? Я не против, с радостью дополню статью.
|
|
|

25.04.2012, 23:31
|
Регистрация: 18.02.2006
Сообщений: 1,090
С нами:
10644806
Репутация:
1564
|
|
Предупреждаю, не нарушайте правила раздела. Те кто нарушил, потрите свои посты. В случае игнорирования предупреждения - бан сроком до недели.
На этот пост отвечать не надо.
|
|
|

25.04.2012, 23:47
|
|
Постоянный
Регистрация: 16.10.2011
Сообщений: 326
С нами:
7670486
Репутация:
76
|
|
Было бы неплохо дополнить парой ссылок по теме, для желающих более углубленно ознакомиться с данным типом уязвимости. Возьму на себя смелость предложить вот эту статью, в качестве расширения изложенного материала для тех, кто захочет узнать что-то более детально.
Почитать на досуге. Тыц.
|
|
|

27.04.2012, 09:28
|
|
Постоянный
Регистрация: 01.12.2011
Сообщений: 560
С нами:
7604246
Репутация:
267
|
|
TC, в аське появись. Есть вопросы.
|
|
|

27.04.2012, 11:38
|
|
Флудер
Регистрация: 08.11.2004
Сообщений: 3,395
С нами:
11317286
Репутация:
3876
|
|
Сообщение от mr.Penguin
А что Вам хотелось-бы видеть? Я не против, с радостью дополню статью.
Перед тем, как писать статью, надо ответить на следующие вопросы:
1) для чего вообще я это делаю;
2) для кого она предназначена;
3) чем она будет отличаться от тысячи подобных статей.
Вот п.3 и должен превносить что-то новое, отличное от других. Какое-то маленькое исследование, например, что-то новое.
|
|
|

28.04.2012, 21:12
|
|
Постоянный
Регистрация: 24.02.2006
Сообщений: 447
С нами:
10636106
Репутация:
705
|
|
ТС опубликовал без предварительного согласования, обещая ее потом дополнить. Я бы не пропустил ее, т.к. в ней нет ничего нового.
|
|
|

28.04.2012, 21:55
|
|
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
С нами:
11035659
Репутация:
71
|
|
Епта найдите статью где то на ачате я когда то видел - точно ! там в развернутов виде все было - или то был чей-то конкрус не помню - но вроде была статья - или видео
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|