В сентябре 2017 года, изучая пачку сервисов Google, я наткнулся на https://talkgadget.google.com/ , на котором удалось обнаружить интересную уязвимость — если вбить в форму поиска какое-нибудь слово, например — user, admin, etc, то в ответ вываливается список пользователей

Screenshot_2018-01-05_13-52-11

При выполнении POST-запроса, меня заинтересовал один из передаваемых параметров pageSizeзначение которого было равно 15, то есть на страницу вываливало 15 человек из поиска. Изменив значение на 100, в респонсе я получил 100 человек, далее 1000, и т.д, выкрутив значение на 1000000, в респонсе удалось получить порядка 8 Мб данных! «хммм» — подумал я… неужели всё так просто и банально?!

А сам респонс выглядит примерно так:

response

В котором содержится достаточное количество полей с более чем интересной и вкусной информацией —  name, photo (link), email, nickname, organization, location, gender, phone, etс. Конечно же, эта информация является публичной и в пользовательском соглашении Гугла это отражается в полной мере, но я решил проверить сколько пользовательских данных мне удастся нарыбачить =)

Накидав небольшой скриптец, я запустил его на десять минут в один поток, и дёрнул порядка 863 Мб данных, хм интересно, как быстро сервер отдаёт, ему совсем не жалко пользовательских данных для одного IP и сессии xD

Слив 863 Мб данных, сразу же захотелось узнать сколько валидных эмейлов можно выдернуть с этого дампа

leaked1

Грепнув регулярочкой, увидел порядка ~117k валидных эмейлов, для меня сразу открылся вектор, и в голове возникла куча вопросов — а что если в несколько потоков? а что если не 10 минут, а сутки? сколько можно слить? почему не превентят слив данных? почему в гугле всё так по мудакски? и т.д. и т.п.

Решено было накатать отчёт в Google  VRP ибо я классифицировал это как узвимость «Information leak».

Пишу отчёт

Здесь я уберу скриншоты добаленные ранее, чтобы не дублировать их. Собственно текст отчёта:

Hi Google!

I’be discovered a vulnerability that allows to get huge amount of users’ data. And it can be automated.

Steps for reproducing the vulnerability:

Checking Google Hangouts website: https://talkgadget.google.com/ I discovered, that during the user search 15 user profiles were downloaded by “autocomplete” box.

The request looks like this:

POST /v2/people/autocomplete HTTP/1.1

Host: people-pa.clients6.google.com

———- Other necessary headers ———-

query=user&client=HANGOUTS&pageSize=15
If we change the pageSize parameter with a bigger one, we will get much more data. I tried to change it from 1 to 1000000 with a successful outcome.

Then we could substitute “user” value from query parameter, and we will get different results, containing personal data like Google (Hangouts) — name, photo (link), email, nickname, organization, location.

I wrote a script for PoC demonstration (autocomplete.sh can be found on GDrive), where pageSize=1000000, and the query parameter is getting from the dictionary file: wordlist.txt (~1000 lines, can be found on GDrive as well).

As an outcome of running autocomplete.sh — leaked at least 863 Mb of users’ data (in ~10 minutes), and among the data ~117K are e-mails with user’s data.

And what if I leave the script running for an hour.. or a day..? I believe I’ll get a plethora of users’ data.. (10 min = ~1Gb, 2 hour = ~100 Gb, etc..)

As a next step, the attacker, using another vulnerability (or a feature, if you want..), could extract from the leaked.json users’ e-mails and build a dictionary with just grabbed e-mails (gmail_list.txt). Then, using lookup.sh, and the dictionary data as a value of the id parameter, we could get some more useful data in addition (e.g: gender, phone number, address, legacyFields, etc.). See: lookup.json (~150 MB — it is only a small part of the data leaked as a proof).

And who could be interested in such kind of info?

Spammers — for target e-mailings, because of the real users data (name, photo (link), email, nickname, organization, location, gender, phone, etc). Moreover, the leakage could hit Google’s reputation and so on and so forth.

Отчёт отправлен и принят на рассмотрение.

Дальнейший диалог с Google

  • Стандартный ответ от Security-команды на любую багу:

Hey,

Just letting you know that your report was triaged and we’re currently looking into it. You should receive a response in a couple of days, but it might take up to a week if we’re particularly busy.

Thanks,
Google Security Team

  • Неделю спустя:

Hey — we looked at your report. While it’s not what we usually accept for the Google VRP, we nevertheless decided to route it internally to a team that deals with similar issues. They will take a look and you’ll be hearing back from them. As such cases are usually more complex to investigate, they might take a bit longer than usual to respond. Thanks for understanding.

Rgds

Michal
Google Security Team
  • Как и следовало ожидать — Гугл предложил мне отвалить со своей багой сославшись на то, что стянутая информация является публичной, об этом написано в пользовательском соглашении и т.д.

Hey,

Thanks for your bug report and research to keep our users secure! We’ve investigated your submission and made the decision not to track it as a security bug.

Your method to extract users only includes users that have opted-in to be discoverable across our products via their name, email, etc…

If you look at https://aboutme.google.com, you can see and control what information is also discoverable across our products.

This report will unfortunately not be accepted for our VRP. Only first reports of technical security vulnerabilities that substantially affect the confidentiality or integrity of our users’ data are in scope, and we feel the issue you mentioned does not meet that bar 😦

Bummer, we know. Nevertheless, we’re looking forward to your next report! To maximize the chances of it being accepted, check out Bughunter University and learn some secrets of Google VRP

Cheers,

Marc, from Google Trust & Safety
«Мдааааа» — подумал я… Я им про Ивана, они мне — про барана, то есть — я им про возможность автоматизированного слива паблик информации, а они мне про то, что эта информация является публичной, и её утечка не является критичной.
Ну да ладно, подумал я, раз информация паблик, то буду просто лить её, и ждать, когда-же мне обрубят коннект, грохнут сессию (да-да, сливал под одной сессией!), залочат эмейл, ну хоть что-нибудь сделают! xD
Запустил всё тот же скрипт в один поток на тачке, которая включена 24/7, сначала хотелось выкрутить рубильник в потоков 10, но подумал, что это слишком, у меня точно залочат, а тут один поток, может и не заметят) ахах
Оставив скрипт на сутки, удалось слить порядка 150 Гб данных, вот это улов!)
Решил обрадовать Гугл ещё разок, чтобы обозначить им, что дело не обошлось 863 Мб слитыми ранее:

Hi!

Do you really believe that it is not a vulnerability?) At the moment an attacker can get tons of real users’ data at once (even if it is a public data). I’m sure, that it is not a good idea to let anyone to get such kind of data in that kind of volumes. E.g. I got up to ~150 Gb of users’ data in ~24 hours.

  • На что Гугл ответил:
Hi Alexander,
 Yes, that is very concerning, I will reach out to the product team and get back to you with their feedback.
 Regards
  • Через пару дней ещё один ответ, где они наконец-таки осознали суть проблемы))

Hi Alexander,

Nice catch! I’ve filed a bug based on your report. The panel will evaluate it at the next VRP panel meeting and we’ll update you once we’ve got more information. All you need to do now is wait. If you don’t hear back from us in 2-3 weeks or have additional information about the vulnerability, let us know!

Regards,
Marc, Google Trust & Safety

После этого письма, они явно обратили внимание на слив и начали «руками» превентить мой слив блокируя мои сессии. На что я им ответил доработкой скрипта, который каждый запрос выполнял от отдельного пользователя (разные сессии) от 15-20 аккаунтов. Поняв, что это бесполезное занятие, лочить мои сессии, Гугл решил понизить скорость отдачи сервера, вот это поворот!) пхах
Но и это им не помогло, изменяя различные параметры запросов, всё же удалось обмануть ограничения скорости отдачи гугло-сервера, в общем целом скорость конечно же была не такая, как в начала обнаружения этой баги, но всё же, за пару недель удалось добить до отметки ~500 Гб.
После чего, Гугл сообщили, что они заплатят мне за обнаруженную уязвимость 3133$ в рамках Google VRP, после этого я решил потушить скрипт и ждать.
После, Гугл месяц правили багу, потом сделали выплату, потом через месяц разрешили расскрыть эту уязвимость, но писать этот пост на тот момент не было времени.
В общем лучше поздно, чем никогда =)
P.S. И мне кажется стоит задаться вопросом, сколько бы можно было стянуть данных преследуя цели «черношляпников»? Много потоков, много аккаунтов, много места на дисках, широкие каналы и т.д. …

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.