Уязвимости на eldorado.ru

  • Уязвимости на eldorado.ru
  • Дата публикации:29 Октября 2017
  • РазделBug bounty
  • Сайтeldorado.ru

Несколько дней назад мы связывались с Эльдорадо через их официальный канал в Twitter, сообщив о том, что нам удалось найти эксплойт на их сайте. Если быть точнее - это CSRF.

Какова же была реакция на данный эксплойт? Правильно - никакой. Очень печально - проводишь для компании бесплатный аудит безопасности, а толку ноль.

В таком случае, коль Эльдорадо не особо напрягается из-за такой мелочи, как CSRF, то давайте мы пройдемся по теории этого типа взлома. И так начнем.

Немного информации с википедии.

CSRF (англ. Сross Site Request Forgery — «Межсайтовая подделка запроса», также известен как XSRF) — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника). Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, которое не может быть проигнорировано или подделано атакующим скриптом.

Данный тип атак, вопреки распространённому заблуждению, появился достаточно давно: первые теоретические рассуждения появились в 1988 году, а первые уязвимости были обнаружены в 2000 году. A сам термин ввел Peter Watkins в 2001 году.

Основное применение CSRF — вынуждение выполнения каких-либо действий на уязвимом сайте от лица жертвы (изменение пароля, секретного вопроса для восстановления пароля, почты, добавление администратора и т. д.). Также с помощью CSRF возможна эксплуатация отраженных XSS, обнаруженных на другом сервере.

Напряглись? Все намного хуже. На HackerOne был отчет в взломе pornhub.com. Если вкратце - белый хакер получил полный доступ к memcached у поддомена stage.pornhub.com. Этот взлом позволил бы ему вставлять любые куски js кода в кэш сайта. Благо для pornhub.com этот эксплойт был найден в рамках системы Bug Bounty.

В случае эльдорадо все не так плачевно. По крайней мере беглый осмотр сайта выявил 3 области применения CSRF. Это разлогинивание пользователя, очистка корзины пользователя и засорение корзины. Звучит так себе? Это до тех пор пока у Вас в корзине не появится 100500 товаров.

Как это работает?

Да все до жути просто. Для этого необходимо понимать каким образом браузер обрабатывает запросы к сайтам. Пользователь, захотев посмотреть сайт example.com, вбивает этот адрес в адресную строку браузера. Тот отправляет запрос к example.com получается от него html. А вот дальше начинается веселье. Во время отрисовки страницы браузер отсылает запросы на попутные адреса. На CSS, JS, изображения и т.п. запросы отправляются не сервером, а клиентом. Именно поэтому если на сайте разместить <img src="https://www.eldorado.ru/cat/ajax_basket.php?action=TOBASKET&bid=503327220&xid=71332993&gid=" />, то при загрузке этой страницы браузер пользователя, отправив запрос на этот адрес ( браузер основываясь на природе тега пытается получить изображение ), не получит изображения. А вот то, что у пользователя в корзине появится телевизор - факт!

По такому принципу любят работать сайты, которые предоставляют "инсайдерские купоны на скидку" в 100500 магазинах. Поняли логику? Нет? Окай, еще раз.
Заходя на подобный сайт он под предлогом попытки подтащить изображение отправляет с Вашего браузера запрос на сайт, для которого Вы смотрите скидки. Что он отправляет? Правильно - запрос с реферальной ссылкой, в которой передан его id как агента, которая обработается и запишется в Ваши cookies. Что до Вас - "инсайдерский промокод" на 80% скидку конечно же не будет работать. "Старый" - подумаете Вы и оформите заказ, печально вздохнув. А тем временем оформившийся заказ принесет cashback владельцу сайта.

Вывод

CSRF можно использовать по разному. Все зависит от того, на сколько защищен тот или иной сайт от этой уязвимости. В случае stage.pornhub.com эта была критическая уязвимость. В случае Эльдорадо - из того, что бегло нашил, особого вреда проекту данная уязвимость причинить не сможет. Тем не менее это уязвимость, которую необходимо закрыть. Но если мы сможем найти на сайте XSS, то в совокупности с CSRF только одному богу будет известна судьба проекта...