!Взлом яндекс такси, инструкция, слить базу

Тема в разделе "Мировые IT новости", создана пользователем jabbaxatt, 5 июн 2015.

  1. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    890
    Симпатии:
    418
    Источник - Перейти по ссылке

    У меня я сейчас времени нет совсем, да и разбираться во многом надо, т.к. далёк от этой темы, но может кто-то спарсит базу всех контор и таксистов с контактами да выложит тут? Просто так, что-б было.
    Статья

    ------------------------------------------------------
    Все вокруг постоянно рассуждают о коррупции. А я хочу рассказать Вам о случае, на коррупцию очень похожем, но в среде чистого IT-бизнеса, на государство никак не завязанного.

    Описываемый далее случай интересен именно с точки зрения взлома бизнеса, хотя статья больше посвящена взлому в смысле IT.

    Начну с нетехнической части.

    Мой друг-одноклассник работает в сфере бизнеса московского такси. Работает в этом бизнесе довольно много лет. Несколько лет назад, когда на рынок московского такси вошел крупный игрок (а теперь — монополист) — Яндекс, то мой друг, разумеется (как и все прочие мелкие и крупные игроки этого бизнеса) также присоединился к заказам Яндекс-Такси.

    Уже несколько лет он работает в Перейти по ссылке.

    Где-то с полгода назад Яндекс Перейти по ссылке и теперь это ПО называется Яндекс.Таксометр или вроде того.

    Что представляет собой это ПО: это комплект по управлению водителями (можно добавить/удалить машину/водителя), а так же принять/отменить проследить заказ.

    Так вот, обещал я, что начну с нетехнической части. Этот мой друг уже несколько лет жалуется мне при личных встречах на извечную русскую проблему: «воруют».

    Рассказывает что воруют водителей, заказы и даже, по слухам, деньги с QIWI-кошельков…

    Я относился к этому как-то философски. Ну, жалуется человек на жизнь. Ушел водитель (увели) от него в другую компанию, а он считает что его украли — обычная история. Но на этих выходных таки он меня упросил: «Иван, ну да, ты (как ты говоришь) не специалист по безопасности, но посмотри, как могут у меня воровать водителей? Ты же IT-шник, в конце концов!».

    Мы сели с ним в кафешке с WiFi и стали смотреть.

    Закончу нетехническую вводную я тем, что скажу что, по слухам, среди компаний, работающих с Яндекс-Такси, которые идут в том числе и от самого Росинфотех, Яндекс приобрел вышеуказанное ПО за миллиард.

    Запомните эту цифру, она понадобится нам в конце статьи.

    Итак, вступление окончилось, перейдем к технической части.

    Дал он мне логин/пароль от его личного кабинета в диспетчерской, и я туда зашел.

    Там все несложно: список водителей: добавить/удалить/заблокировать/распечатать. Отчеты, заказы и т.п. Полазив чуток по страничкам, обратил внимание, что практически весь сайт построен на том, что в ссылках или запросах фигурируют Перейти по ссылке.

    Кликнув на водителя, можно увидеть, что UUID водителя фигурирует в ссылке информации о нем.

    Далее стало интересно выяснить три вопроса:

    • можно ли узнать UUID водителя чужой компании
    • можно ли, зная этот UUID, получить информацию о чужом водителе (собственно то, на что жаловался мой друг)
    • можно ли получить доступ к заказам водителей других компаний

    Походив по страничкам личного кабинета, я обратил внимание, что UUID присвоен и компаниям тоже.

    «Ага!»- подумал я и стал спрашивать моего друга, знает ли он, что такое UUID, и применял ли где-нибудь его. Он говорит: «Да, в личном кабинете Яндекса я указывал урл на API». «Давай сюда, — говорю, — этот урл». Дает он мне нечто вроде такого sync.yandex.taxi.itrf.ru/drivers/<UUID>. Заглядываем в этот урл и видим — все водители компании моего друга в удобном для парсинга виде — XML. Без авторизации.

    Осталось узнать UUID других компаний. Как это сделать? Как я уже сказал выше, в некоторых местах сайта банальный Ctrl-U в браузере показывает UUID других компаний, однако мне стало интересно получить UUID адреса ВСЕХ компаний, использующих это ПО. Мы где-то с полчасика покопались по урлам, используя Ctrl-U, и нашли сразу множество путей, как это сделать.

    Например, вот такой красивый JSON сообщает нам подобный список:

    [​IMG]

    Обратите внимание, что список затрагивает сразу все регионы страны, не только Москву.

    Ну или подобные списки встречаются в различных селектах, списках итп. Таких мест множество. Однако, продолжим далее.

    Стало интересно вернуться к карточкам водителей и рассмотреть их поближе. Для этого мы выбрали одну из Московских компаний — взяли XML со всеми ее водителями (которая, как описано выше, доступна без авторизации) и продолжили эксперименты над ней.

    [​IMG]

    Взяли пару водителей из этого XML, ввели их UUID в карточке в личном кабинете. Посмотрели карточку водителя. Рейтинги, когда сдавал экзамены такси, номера прав итп — все видно. Информация о любом водителе (в том числе чужих) доступна по урлу с UUID.

    Это как бы расширенная информация (больше, чем вышеприведенном XML).

    Вероятно, разработчики этого ПО о понятиях «авторизация», «аутентификация» не слышали, а уж и тем паче о разнице между ними.

    Там же, сидя в кафе я набросал скриптик на Python, и через 20 минут у нас была база данных всех водителей Яндекс.Такси во всех городах (не только в Москве) с их телефонами, рейтингами, номерами прав, лицензий, балансами счета и прочей приватной информацией.

    Получили вот примерно такой XLS файлик:

    [​IMG]

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

    Дальше стало интересно посмотреть несколько шире на эту проблему: доступность этих UUID без авторизации вообще. Оказалось, и это есть!

    Это ПО предлагает довольно широкий спектр сопутствующих услуг. Например, вебформу заказа такси на сайте компании-клиента.

    Заглянув (Ctrl-U) на несколько сайтов-партнеров Яндекс-такси, как Вы думаете, что я там обнаружил? Правильно! UUID этих компаний, по которым (напомню) можно бесплатно доставать всех водителей.

    Таким образом, не исключаю, что какой-либо поисковик (в т.ч. Яндекса) однажды проиндексирует все эти приватные данные компаний и людей.

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

    [​IMG]

    Нажимая Ctrl-U на этой странице, мы видим ID заказа, компанию которой он назначен.

    Вот мы и докопались до ID заказов других компаний на неавторизованной странице (на авторизованных они тоже есть, но повторюсь: было интересно найти на неавторизованной).

    Далее, используя инструменты, доступные в разных частях личного кабинета, мы можем не просто наблюдать, но и воздействовать на процесс: например, можно чужой компании изобразить отмену заказа, а самому послать машину вместо нее!

    Для водителя это будет выглядеть, как отмена заказа. Для клиента — как «приехала другая машина».

    Это просто клондайк какой-то для человека, настроенного на нечестные способы ведения бизнеса!

    но мы не такие


    Самое интересное, что это не просто какая-то одна дырка, а все ПО целиком такое, весь сервис построен на том, что НИКАКОЙ защиты информации нет. Продукт представляет собой просто этакий просмотрщик записей в БД без какой-либо защиты между пользователями.

    Представьте, залогинившись в гугл Вы бы могли посмотреть всю почту ВСЕХ пользователей Гугл. Вот тут примерно такой случай.

    Однако продолжим. Комплекс содержит еще приложение для андроида. Взяв приложение «Таксометр» с Перейти по ссылке мы быстро выяснили, что оно делает запросы по неавторизованным урлам. И первый неавторизованный http-запрос, который делает это приложение, — угадайте, какой?

    Правильно, полный список пар UUID-название компаний!

    Используя урлы, взятые из этого приложения, можно:

    • брать/отменять заказы от имени других водителей,
    • писать широковещательные и адресные сообщения (например, предложения о работе) другим водителям,

    и так далее.

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

    Рассказывают, что ушлые люди уже даже выпустили на эту тему специальное приложение по перехвату заказов Яндекс.Такси. Жаль на андроид маркет только не выложили (или выложили? Надо бы посмотреть в платных разделах маркета.)

    Ну а теперь давайте немного поразмышляем на тему, о которой я писал вначале.

    Коррупция или не коррупция.

    Да, Яндекс — частная фирма. Слово «коррупция» к нему не применимо. Однако возникает интересный вопрос: вот Яндекс покупает за огромные деньги (миллиард) программный комплекс. При этом, судя по вышеприведенной картинке, НИКАКОГО технического аудита этого программного комплекса не произведено.

    То, что нашел я (рядовой IT-шник) за пару часов копаний в кафе, специалист по безопасности нашел бы без особого труда, но вопрос: почему этот специалист (коих у Яндекса вдоволь) даже не заглянул в этот комплекс за миллиард?

    Как Вы думаете, этот комплекс куплен с использованием системы «откатов», или нет?

    Мне кажется, что, проводя сделку за миллиард, не выделить 10 тыс руб на один рабочий день специалиста для проведения аудита это… гхм… или сознательная халатность, или совсем уж хочется побыстрее от миллиарда избавиться :)

    Объяснение, что это куплено с использованием отката, — по моему, наиболее логичное.

    Интересный вопрос: кто в Яндексе принимал решение о покупке такой «большой дыры»? Вероятно, с него должны начать выяснение обстоятельств покупки СБ Яндекса.


    PS: После того, как мы поразглядывали Таксометр с андроид-маркета, мы заглянули еще и в устройство приложения для заказа такси с того же маркета — Перейти по ссылке. Что удручает — ситуация там очень похожая. Его явно делали люди, далекие не только от вопросов безопасности, но и от вопросов HighLoad программирования.

    Впрочем, это совсем другая история, о ней можно написать отдельную статью.

    PPS: Недавно Яндекс.Такси внедрило оплату поездок кредитными карточками. Мне вот лично как-то страшно теперь платить за поездку кредиткой. А Вам?



    UPD: Яндекс уведомлен о проблеме, так что здесь предлагаю обсудить способ взлома бизнеса Яндекс.Такси примененный товарищами из вышеупомянутой компании. Можно только выражать восхищение бизнес-способностям этих людей. Согласитесь, развести крупнейшую компанию рунета на такие деньги без какой-либо проверки качества впариваемого кода — это вам не старушкам пылесосы продавать…
     
    yaski, vitrolov, gorsgr и 5 другим нравится это.
  2. angel_sia

    angel_sia

    Регистр.:
    7 окт 2012
    Сообщения:
    180
    Симпатии:
    81
    Цитата:
    К слову статья мягко говоря вредительная. Яндекс еще ничего не исправил, а статья есть. Если раньше мало кто знал, то сейчас любой школьник может получить базы и продавать их кому нибудь менее осведомленному.
     
  3. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    я не нашел список юидов компаний, видать надо кабинет открывать, так бы напарсил
     
    jabbaxatt нравится это.
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    616
    Симпатии:
    488
    Насколько я понял из комментов Хабра - Яндекс довольно быстро закрыл доступ к базе. После такого резонанса, собственно, неудивительно.
     
  5. leoner

    leoner Постоялец

    Регистр.:
    31 мар 2010
    Сообщения:
    55
    Симпатии:
    15
    Откаты-закаты. В нашей стране на строительстве до 80% от суммы идут на откаты. Яндекс — русская компания, хоть и зарегистрирована за рубежом )))) Наше, родное! Вспомнить только .РФ и стоимость на домены закрытой регистрацией.
    А вот с безопасностью да, странно получилось. Да и автор темы попался весьма добросовестный, мог бы ведь и не писать об этом, глядишь и Яндекс бы об этом узнал гораздо позже.
     
  6. shkiper

    shkiper

    Регистр.:
    16 ноя 2008
    Сообщения:
    302
    Симпатии:
    17
    дак кто его знает, когда узнал, а когда поведал. Собрал базу, пригласил новых сотрудников, да и закрыл дыру, с помощью стука. молодца
     
  7. maks22v

    maks22v Создатель

    Регистр.:
    14 фев 2014
    Сообщения:
    44
    Симпатии:
    7
    а эьль БД телефонов в сети? ни как не могу найти
     
  8. fowler

    fowler Постоялец

    Регистр.:
    10 окт 2013
    Сообщения:
    57
    Симпатии:
    4
    "Когда я работал в Яндексе — при всем уважении к компании — я время от времени обнаруживал баги, о которых старался незамедлительно сообщать ответственным лицам. Сначала я наивно сообщал только руководителю проекта, но заметил, что это очень неэффективно и вопрос, как правило, не решался.

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

    Но и это оказалось не так эффективно — машина сопротивляется и не хочет сворачивать с намеченного пути. Вместо того, чтобы решать проблему на уровне выше, чем возникла сама проблема, фиксятся частные случаи. Например, вот три тикета с одним и тем же источником проблемы. Вместо решения источника проблемы, фиксятся записи БД только для этих трех конкретных случаев.

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

    Вероятно, что настоящий автор статьи работает в Яндексе, но не смог достучаться до нужных людей, устал от отмазок и частных фиксов, потому и придумал этот весьма эффективный способ!"
     
  9. Alexpro2011

    Alexpro2011 Постоялец

    Регистр.:
    11 дек 2012
    Сообщения:
    86
    Симпатии:
    139
    Просто, тот кто слил данную инфу, очень не хороший человек, зачем в паблик такое пускать?!!!
     
  10. maks22v

    maks22v Создатель

    Регистр.:
    14 фев 2014
    Сообщения:
    44
    Симпатии:
    7
    Хороший он человек. Если бы внимательно прочитали то увидели бы что они сообщили о баге. Вот если бы обупликовали все жти данные в интернет было бы прекрасно)