[Из песочницы] Iframe injection и XSS на более чем 20 000 сайтах alexarank


Я независимый исследователь безопасности securityz.net, первое место в bug bounty ПриватБанка.

Решил пройтись по топу alexarank, начал искать уязвимости на gismeteo.ua (20 место). Произошел редирект на русскую версию (www.gismeteo.ru/soft/), обратил внимание на тех.поддержку.

Техподдержка находилась по адресу gismeteo.userecho.com и загружалась на gismeteo в iframe:

https://gismeteo.userecho.com/s/interframe.html?url=https://gismeteo.userecho.com/widget/forum/6-/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1

Потом появлялась форма для создания тикета.

Попытался загрузить свой сайт в iframe https://gismeteo.userecho.com/s/interframe.html? url=https://securityz.net, но он не грузился. Потом понял, что кроме url загружаемого сайта нужны ещё и переменные lang, referer, xdm_e и другие.

http://support.gismeteo.ru/s/interframe.html?url=https://securityz.net/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1

И мой сайт загрузился во фрейме.

Видео:


Оказалось, что владелец виджета userecho.com использует один и тот же API на всех сайтах клиентов для техподдержки, отсюда вывод, что все его клиенты уязвимы к iframe injection.

Находим список топ-клиентов — http://userecho.com/clients/? lang=ru — и понимаем, что много уязвимых клиентов — это наиболее посещаемые сайты:

— drugvokrug.ru (социальная сеть, более 5 000 000 пользователей),
 — fl.ru (самая популярная фриланс биржа в России)
 — easypay.ua (одна из наиболее посещаемых платежных систем в Украина)
 — tankionline.com
 — ivi.ru
 — amiro.ru
 — okko.tv
 — insales.ru
 — a-lab.ru
 — scrapinghub.com
 — iridiummobile.net и много других.

Почти все сайты размещают виджет userecho на своём поддомене, пример — ask.drugvokrug.ru, но некоторые размещают его как поддомен на userecho kontur.userecho.com. Также клиентов userecho можно искать по google/yandex доркам.

Векторы атаки:

  • 1. Фишинг — загружаем свой сайт, внутри которого один в один такой же сайт, как и оригинал, и его никак не отличить от оригинала, жертва вводит свои данные и они приходят мне! (логин, пароль, номера кредиток, cvv2 — easypay.ua и др).

    Пример: https://securityz.net/gismeteo.html? lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1 — я сделал копию сайта gismeteo и если человек введет логин и пароль на гисметео, они придут мне.

  • 2. Внедрение рекламы на сайт iframe и ее можно выдавать за рекламу уязвимого сайта.

    Пример: http://support.gismeteo.ru/s/interframe.html? url=https://securityz.net/? lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1

  • 3. Выполнение вредоносного кода на уязвимом сайте. Можно конечно же выполнить javascript на уязвимом сайте, но не в контексте домена. Хорошо, когда есть XSS на over 20 000 сайтах)). Можно отправить в openbugbounty) Пример securityz.net/iu.html. Чтобы js не выполнялся в контексте домена securityz.net, делаем обычный js alert:

Чтобы распространить вредоносную ссылку, нужно сначала укоротить ссылку goo.gl/GIYRUR, потом:
  1. Массово рассылать на форумы, по email адресам.
  2. Целенаправленно атаковать определенного юзера или админа с помощью этой уязвимости.

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

Поэтому решил сразу сообщить о находке разработчикам плагина.

09.01.2017 в 23:00: отправлен баг репорт в тех  поддержку userecho.com.

10.01.2017 в 00:10: уязвимость исправлена и уязвимый файл interframe.html удален (комментарий от разработчиков — файл interframe.html больше недоступен (удален) и все виджеты работают без него. Поэтому все работает с тем же API.).

10.01.2017 в 02:14: разработчики выплатили награду $100. Комментарий:

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

Также я обнаружил SELF XSS уязвимость в поддержке userecho и ее не собираются исправлять, уязвимости подвержены более 20 тысяч сайтов, вот статья и PoC. Я еле уговорил разработчиков устранить iframe injection:
Мы видели по логам, что вы игрались с interframe.html и в принципе понимали для чего и как его использовали. Только не был понятен вариант как использовать это с пользой.

Так как теперь мы понимаем варианты использования и Вы подвигли нас на исправления мы готовы перевести Вам 100USD.


Успехов!

Комментарии (0)

© Habrahabr.ru