Как уязвимость в REG.RU позволяла получить данные регистрации любого домена

в 19:56, , рубрики: reg.ru, Администрирование доменных имен, Анализ и проектирование систем, Блог компании Поиск VPS, домены, информационная безопасность, Тестирование веб-сервисов

Сегодня я хочу рассказать о том, как в далеком 2012 году я нашел уязвимость в системе регистрации доменов компании REG.RU. Очень часто я вижу истории, в которых авторы рассказывают об уязвимостях при этом упоминая, что компания не уделила найденному багу должного внимания в течение длительного времени или не исправила его вовсе. В моем случае все было ровно наоборот, и уязвимость была устранена очень оперативно.

Как уязвимость в REG.RU позволяла получить данные регистрации любого домена - 1

В сентябре 2012 года REG.RU стали регистрировать домены в зоне ru.com и разослали всем своим клиентам письма с предложением бесплатно получить на первый год домен в новой зоне с именем уже зарегистрированного домена в зонах ru, рф, su, com, net.

Получить бесплатный домен оказалось довольно просто: нужно было перейти по ссылке из письма, ввести код активации домена, и домен бесплатно регистрировался на год.

Как уязвимость в REG.RU позволяла получить данные регистрации любого домена - 2

Перед регистрацией домена система предлагала ознакомиться с контактными данными “оригинального” домена на которые будет зарегистрирован подарочный домен, но эти данные были открыты только для просмотра без возможности редактирования поэтому смысл их показа был непонятен. Однако, в этом и состоял первый баг: регистрация нового домена была доступна по ссылке вида https://www.reg.ru/domain/new/get_free_ru_com?service_id=XXXX, и ID услуги можно было просто перебрать, увидев, на кого зарегистрирован тот или иной домен.

Специалисты REG.RU сделали так, чтобы любые контакты показывались не полностью, а отображались только первые 7 символов каждого поля, что теоретически не должно было полностью раскрывать информацию о владельце домена, однако, например, мои имя и фамилия оказались длиной менее 7 символов и они показывались полностью. Ну и плюс ко всему, если показывать первые 7 символов имени, то очень часто можно догадаться какие символы нужно добавить, простой пример — “Vladimi”.

Этот баг поправили довольно быстро, и теперь система показывала только первые 4 символа, что было намного лучше, хотя человек с именем “Хан Соло” был бы не очень доволен.

Как уязвимость в REG.RU позволяла получить данные регистрации любого домена - 3

Следующий баг — это возможность зарегистрировать домен без ввода кода активации. Чтобы все владельцы доменов разом не побежали регистрировать бесплатные домены, REG.RU решил отправлять письма не сразу, а в течение пары дней, таким образом нагрузка распределялась равномерно. С технической точки зрения все было примерно так: в базе данных в таблице с доменами создали новый столбец “Код авторизации” с пустым значением, и время от времени пользователям отправлялись письма с одновременным заполнением этого поля сгенерированным кодом. Простым перебором можно было пройти по ссылке вида https://www.reg.ru/domain/new/get_free_ru_com?service_id=XXXX, увеличив ID услуги до того значения, когда система еще не успела выдать такому домену код авторизации и зарегистрировать домен с пустым кодом.

В регистрации такого домена не было ничего плохого, но после регистрации становилось видно полные контактные данные (ФИО, адрес и телефон) владельца “оригинального” домена без скрытых символов. Исправить данный баг было несложно, просто добавив при регистрации проверку на непустой код авторизации, что специалисты REG.RU так же оперативно исправили.

Через некоторое время я нашел еще один баг, но он требовал чуть большего количества действий, чем просто перебор ID услуг. Для упрощения процедуры регистрации подарочных доменов REG.RU сделали возможность зарегистрировать домен без ввода кода авторизации из письма, если e-mail аккаунта в системе reg.ru совпадал с адресом электронной почты, указанным как контактный в оригинальном домене. Для пользователя это было довольно удобно, а вот в плане безопасности все было не так хорошо.

В 2012 году не было закона о защите персональных данных в текущей редакции, и у многих доменов в зоне ru можно было посмотреть контактный e-mail адрес через Whois. На момент нахождения этого бага адрес электронной почты уже был скрыт, но через сервисы просмотра истории Whois e-mail можно было посмотреть, и, с большой вероятностью, он был актуальным. После этого нужно было попробовать зарегистрироваться в системе REG.RU с этим адресом электронной почты и после этого без кода авторизации получить бесплатный домен, что в свою очередь открывало доступ к контактным данным оригинального домена.

Если быть кратким, то порядок действий такой:

  1. Заходим на страницу вида https://www.reg.ru/domain/new/get_free_ru_com?service_id=XXXX и смотрим название домена с этим ID, например, habr.ru.com.
  2. Через сервис просмотра истории Whois находим e-mail адрес для домена habr.ru.
  3. С помощью этого адреса электронной почты создаем учетную запись в системе REG.RU (подтверждения владения e-mail адресом тогда не требовалось).
  4. Без ввода кода подтверждения регистрируем домен habr.ru.com и видим полные контактные данные владельца habr.ru.

Ошибки, которые были допущены компанией REG.RU потенциально могли привести к утечке большого количества персональных данных владельцев доменов, но все баги были исправлены очень оперативно. С момента написания первого письма (а написал я его лично исполнительному директору REG.RU) и до исправления всех уязвимостей прошло меньше двух суток, что, на мой взгляд, довольно небольшой срок для компании таких размеров и сроками исправления уязвимостей у других корпораций.

Как уязвимость в REG.RU позволяла получить данные регистрации любого домена - 4


Заглядывайте на VPS.today — сайт для поиска виртуальных серверов. 1400 тарифов от 120 хостеров, удобный интерфейс и большое число критериев для поиска самого лучшего виртуального сервера.

Как уязвимость в REG.RU позволяла получить данные регистрации любого домена - 5

Автор: leonid239

Источник

Поделиться

* - обязательные к заполнению поля