Я независимый исследователь безопасности 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. Буду очень рад подпискам.)
Успехов!
Поделиться с друзьями
-->

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


  1. Graphite
    11.01.2017 16:16
    +5

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

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

    Неплохо бы еще указать в заголовке, что речь об Alexarank UA


    1. w9w
      11.01.2017 16:30
      -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.


      1. w9w
        11.01.2017 16:37
        -3

        Это моя первая статья на хабре, так что не пинайте сильно)


        1. EminH
          11.01.2017 16:48
          +1

          Не понятно про «Грузим во фрейме файл securityz.net/iu.html и xss выполнилась», это не XSS a тот же iframe injection


          1. w9w
            11.01.2017 16:57
            -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.


            1. EminH
              11.01.2017 17:05

              Из практических соображений- это «опаснее» XSS — browser не блокирует


      1. Graphite
        11.01.2017 17:19
        +3

        1. XSS — Cross-Site Scripting. У вас выполняется свой код в контексте своего домена. С таким же точно результатом вы можете распространять прямую ссылку на свой сайт, где будет alert(). Это не XSS.
        Self-XSS часто прямо исключены из bug bounty. Формально они конечно XSS, но точно также пользователь может открыть панель разработчика и выполнить там любой код.
        2. Когда пишут про alexarank в первую очередь подразумевают мировой рейтинг крупнейших сайтов. Особенно в заголовке. Уточнить что речь идет о крупнейший сайтах Рунета/Уанета не помешало бы. Кроме того, в рейтинге 500 сайтов, так что непонятно о каких 20 тысячах сайтов из alexarank идет речь.
        Вообще вся история к alexarank отношения не имеет, кроме того что ivi.ru 45й в России и Gismeteo 20й в Украине.


        1. w9w
          11.01.2017 17:45
          -3

          1. Согласен с тем, что xss эта не опасна, но она все же есть. Опасна iframe injection, когда подгружен фишинговый сайт и он выдает себя за легитимный сайт.
          2. Не нужно делать поспешные выводы, исходя из 24-х сайтов на http://userecho.com/clients/?lang=ru.


          1. Graphite
            11.01.2017 18:21
            +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. Почему не Венесуэла или Кирибати?


            1. w9w
              11.01.2017 18:51
              -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 столько сайтов просто нет.
              — бред. Больше не отвечаю. Хейтите сколько захотите.


  1. EminH
    11.01.2017 16:19
    +3

    Мы видели по логам, что вы игрались с interframe.html ...[]… 100 USD

    На самом деле редко когда так реагируют, эти оказались на удивление адекватными


    1. w9w
      11.01.2017 16:35
      -12

      В противном случае, если бы проигнорировали меня, то я продал бы эти баги fl.ru, drugvokrug и другим крупным сайтам, а userecho потеряли бы многих своих клиентов.


      1. Suvitruf
        11.01.2017 16:40
        +2

        На шантаж похоже.


      1. EminH
        11.01.2017 16:45
        +4

        а это уже шапка другого цвета / статья УК


        1. FairyCake
          11.01.2017 16:49
          +1

          Автор говорит о том, что передал бы баги не компании-разработчику, а «пользователям» по отдельности, разве это наказуемо?


          1. w9w
            11.01.2017 16:49
            -2

            Хоть один нормальный, понимающий человек в комментариях) Все остальные хейтеры)


          1. Suvitruf
            11.01.2017 16:53
            +2

            Начать с того, что не передал бы, а «продал».


            1. FairyCake
              11.01.2017 17:04

              Лично я понял это так: «Попытался бы сдать по баг-баунти более крупному ресурсу».
              Наверное я просто верю в хорошее в людях, а смысл был таким, каким увидели его Вы.


            1. w9w
              11.01.2017 17:06

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


          1. EminH
            11.01.2017 17:02
            +2

            ну то есть он бы раскрыл детали уязвимости публично или третьим лицам. Думаю что да, это наказуемо


            1. w9w
              11.01.2017 17:13
              -2

              ну то есть он бы раскрыл детали уязвимости публично или третьим лицам. Думаю что да, это наказуемо


              Разработчики были не против, чтобы я сообщал об этих уязвимостях компаниям-клиентам.

              Sergey Stukov (co-founder) yesterday.
              interframe это один из default файлов от библиотеки easy-xdm
              Попробуйте inurl:intermediate.html возможно поможете еще кому-то


            1. Oxoron
              11.01.2017 17:14

              Чисто юридически, можно ли считать уязвимостью проблему которую отказались решать разработчики (если бы они отказались её решать)?


              1. lexore
                11.01.2017 17:47

                Юридически, есть статья "Статья 272. Неправомерный доступ к компьютерной информации".


                Доступ к компьютерной информации считается неправомерным, если лицо:


                • не имеет права на доступ к данной информации;
                • имеет право на доступ к данной информации, однако осуществляет его помимо установленного порядка, с нарушением правил ее защиты.

                Т.е. если разработчики дадут вам письменное разрешение (с подписью и печатью) использовать эту дыру и с помощью неё получать любую информацию, то вам ничего не грозит :)


                1. spmbt
                  11.01.2017 17:52

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


                  1. lexore
                    11.01.2017 17:53

                    Мне кажется, в законах нет термина "уязвимость".


      1. kostichek
        11.01.2017 22:25

        Скажем, в гисметео продать пытались. Правда, безуспешно.


  1. w9w
    11.01.2017 18:04
    -2

    SELF XSS fixed


  1. selfcssed
    11.01.2017 22:24
    +1

    Советую прочесть еще вот эту статью автора.
    https://webcache.googleusercontent.com/search?q=cache:https://habrahabr.ru/post/319316/


    1. r85qPZ1d3y
      12.01.2017 17:19

      Почему через кеш? На хабре доступна.


      1. selfcssed
        12.01.2017 21:22

        В момент написания была не доступна.