Пользователь
14,8
рейтинг
11 января в 15:02

Разработка → Iframe injection и self xss на более чем 20 000 сайтах alexarank UA/RU из песочницы

Я независимый исследователь безопасности 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 доркам.

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


Чтобы распространить вредоносную ссылку, нужно сначала укоротить ссылку 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.


+ Обнаружил ещё одну xss уязвимость в этом виджете, её никто не собирается исправлять

и она до сих присутствует на 20 000 + сайтах.

Чтобы быть в курсе всех моих последних публикаций, подписывайтесь на Твиттер https://twitter.com/MaximYaremchuk. Буду очень рад подпискам.)
Успехов!
9w9 @w9w
карма
–1,0
рейтинг 14,8
Пользователь

Самое читаемое Разработка

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

  • +5
    Можно конечно же выполнить javascript на уязвимом сайте, но не в контексте домена.
    А где XSS-то?

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

    Неплохо бы еще указать в заголовке, что речь об Alexarank UA
    • –3
      1. XSS с помощью iframe injection. Грузим во фрейме файл securityz.net/iu.html и xss выполнилась, но не в контексте домена, просто алерт. Ещё одна xss здесь https://twitter.com/MaximYaremchuk/status/818799433332695040, забыл дописать в статье.
      2. Речь не только об Alexarank UA, клиенты userecho не только из Украины, большинство из России, и много англоязычных http://userecho.com/clients/?lang=en.
      • –3
        Это моя первая статья на хабре, так что не пинайте сильно)
        • +1
          Не понятно про «Грузим во фрейме файл securityz.net/iu.html и xss выполнилась», это не XSS a тот же iframe injection
          • –3
            Ну, некоторые компании могут посчитать, что это xss. Эта iframe injection, как Open Redirect, который раскручивают до xss example.com/redirect.php?url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnUmVmbGVjdGVkX3hzc19yb3pldGthJyk8L3NjcmlwdD4=#, js алерт есть, но он не относится к уязвимому домену, document.domain пустой.

            https://www.openbugbounty.org/ легко принял бы все сайты (многие vip) с xss.
            • 0
              Из практических соображений- это «опаснее» XSS — browser не блокирует
      • +3
        1. XSS — Cross-Site Scripting. У вас выполняется свой код в контексте своего домена. С таким же точно результатом вы можете распространять прямую ссылку на свой сайт, где будет alert(). Это не XSS.
        Self-XSS часто прямо исключены из bug bounty. Формально они конечно XSS, но точно также пользователь может открыть панель разработчика и выполнить там любой код.
        2. Когда пишут про alexarank в первую очередь подразумевают мировой рейтинг крупнейших сайтов. Особенно в заголовке. Уточнить что речь идет о крупнейший сайтах Рунета/Уанета не помешало бы. Кроме того, в рейтинге 500 сайтов, так что непонятно о каких 20 тысячах сайтов из alexarank идет речь.
        Вообще вся история к alexarank отношения не имеет, кроме того что ivi.ru 45й в России и Gismeteo 20й в Украине.
        • –3
          1. Согласен с тем, что xss эта не опасна, но она все же есть. Опасна iframe injection, когда подгружен фишинговый сайт и он выдает себя за легитимный сайт.
          2. Не нужно делать поспешные выводы, исходя из 24-х сайтов на http://userecho.com/clients/?lang=ru.
          • +6

            Я последний раз отвечу, в надежде что вы все-таки поймете. Вы пишете:


            Выполнение вредоносного кода на уязвимом сайте. … Хорошо, когда есть XSS на over 20 000 сайтах))
            Все это ложь: код на уязвимом сайте не выполняется, никакой XSS нет. Есть ваш собственный скрипт, который на вашем домене и работает.

            Self-XSS указывается уже заметно ниже, но выносить в заголовок слово «self» вы не стали, чтобы привлечь внимание (и от недостатка знаний). А Википедия, например, считает что self-XSS — это не XSS: Although it is technically not a true XSS vulnerability...

            Какие поспешные выводы я сделал исходя из 24 сайтов в том списке? В заголовке «на более чем 20 000 сайтах alexarank», при том что в alexarank столько сайтов просто нет. Не говоря уже о том, что рейтинг оказывается не голбальный, а UA/RU. Почему не Венесуэла или Кирибати?
            • –6
              код на уязвимом сайте не выполняется

              Я писал об этом и о том, что код работает на моем домене
              Можно конечно же выполнить javascript на уязвимом сайте, но не в контексте домена.


              Скрипт выполняется, когда мы посещаем http://support.gismeteo.ru/s/interframe.html?url=https://securityz.net/iu.html/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&, значит, можно говорить, что xss выполняется на support.gismeteo.ru.
              выносить в заголовок слово «self»
              я и не собирался, ведь не о нем здесь идет речь, а об iframe injection + XSS.
              В заголовке «на более чем 20 000 сайтах alexarank», при том что в alexarank столько сайтов просто нет.
              — бред. Больше не отвечаю. Хейтите сколько захотите.
  • +3
    Мы видели по логам, что вы игрались с interframe.html ...[]… 100 USD

    На самом деле редко когда так реагируют, эти оказались на удивление адекватными
  • –2
    SELF XSS fixed
  • +1
    Советую прочесть еще вот эту статью автора.
    https://webcache.googleusercontent.com/search?q=cache:https://habrahabr.ru/post/319316/

    • 0
      Почему через кеш? На хабре доступна.
      • 0
        В момент написания была не доступна.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.