Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #107, НОЯБРЬ 2007 г.

Коммунальный рай

Маг (icq 884888)

Хакер, номер #107, стр. 107-070-1

Развал ЖКХ по-хакерски

Здравствуй, мой незнакомый друг! Хочу тебя спросить кое о чем. Ты исправно оплачиваешь коммунальные услуги, которые нам любезно предоставляет государство? А веришь ли ты в то, что все твои данные - сколько, когда, зачем и чего ты израсходовал - находятся в безопасности? Закрадываются сомнения? Я тоже засомневался после своего очередного взлома. Летс гоу!

Серфинг

Как-то раз, бродя по бескрайним просторам инета, я наткнулся на некий «Информационный портал Краснодарского края» - http://kuban.info. Мой пронырливый взгляд не задержался бы на этой заурядной страничке надолго, если бы я не увидел баннер сайта неизвестной мне ранее платежной системы qp, находившейся по адресу http://qp.ugts.ru. От нечего делать я решил его немного поизучать. Платежка была очень интересной. Здесь можно было оплачивать коммунальные услуги, штрафы ГИБДД, телефон, налоги и прочую ерунду. Оплата происходила несколькими способами: по sms, через платежный терминал (у этой самой «КуПи» есть и такое чудо), банковским переводом или специальной картой предоплаты. Причем на самом сайте существовала система регистрации пользователей, из чего я сделал вывод, что в базе данных платежки может находиться очень много интересной инфы :). Итак, не откладывая дело в долгий ящик, я принялся за взлом.

Начало поисков

Сначала, как обычно, я залез на незабвенный domainsdb.net и выяснил там, что kuban.info и ugts.ru находятся на одном серваке :). Первым делом моим жестоким экспериментам подвергся ugts.ru. После недолгого вбивания кавычек во всевозможные параметры первая SQL-инъекция была найдена. На запрос «https://ugts.ru/info/service/ipphone/?card_type=129007'» Опера сказала мне, что на взламываемой машине стоит PostgreSql:

Warning: pg_query(): Query failed: ERROR: unterminated quoted string at or near "'" at character 183 in /var/midgard/preparser/ugts/6-1638-92.php on line 523

Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/midgard/preparser/ugts/6-1638-92.php on line 524

Эта информация меня, конечно же, обрадовала, я даже стал мучаться с запросами типа:

https://ugts.ru/info/service/ipphone/?card_type=129007+union+select+1,TABLE_NAME,3,4+from+INFORMATION_SCHEMA.TABLES'--

Но мне это быстро надоело, так как данные в INFORMATION_SCHEMA были неисчерпаемы, а я выудил только некоторые названия таблиц:

branch_group

branch_request

calls

camera_lock

card_cnt

card_type_cnt

cart

change_log

change_log_details

check_constraint_routine_usage

check_constraints

column_domain_usage

column_privileges

column_udt_usage

columns

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

https://ugts.ru/info/service/ipphone/?card_type=129007+union+select+1,COLUMN_NAME,3,

4+from+INFORMATION_SCHEMA.COLUMNS+where+TABLE_NAME='card_type_cnt' and COLUMN_NAME>'id'--

Таким образом я выудил названия полей таблички:

card_type

id

locked

login

password

payed_by

sold_to

Но в самой таблице абсолютно ничего не было :(.

Про дуршлаг

Обнаружив эти вопиющие дыры, я из спортивного интереса решил найти такую инъекцию, с которой не надо было бы долго мучаться и которая выводила бы в цикле сразу всю информацию. И вскоре такая дырка была найдена!

http://kuban.info/games/mp3/?t=1+union+select+1,TABLE_NAME,to_char(3,222),

'http://../../../../etc/hosts',333,'444'+from+INFORMATION_SCHEMA.TABLES--&p=195

Вместо mp3’шек выводятся таблички :).

А дальше я вообще удивился. Мало того, что столь серьезный проект дыряв, как мои старые носки, SQL-инъекции встречаются на каждом шагу (и еще одна: http://live.kuban.info/'), так я еще и удачно попал на время проведения каких-то работ на серваке, в результате чего просто пройдя по ссылке ugts.ru, можно было лицезреть следующее:

//$qp_connstr="dbname=kubinfo_adds user=ugts host=base password=_lfqntltytu";

$qp_connstr="dbname=qp user=ugts host=1.1.1.3 password=_lfqntltytu";

$qp_conn=pg_connect($qp_connstr);

//$connstr="dbname=sat_kurort user=sat_kurort host=base password=ep5Jai5Ei";

$connstr="dbname=ugts user=sat_kurort host=1.1.1.3 password=ep5Jai5Ei";

$conn=pg_connect($connstr);

if (!$conn)

header("Location: /error/?code=1");

Ну это ли не чудо? Логин и пароль от базы данных платежки в открытом виде! Они должны были пригодиться мне в дальнейшем, а пока нужно было любыми способами получить шелл...

В поисках шелла

Немного погуглив на тему паблик-скриптов на сервере платежки, я нашел два phpbb-форума:

Но, как это ни грустно, они были абсолютно непробиваемые (поделитесь кто-нибудь приватным сплоитом под 2.0.22 :)). Но уже ничто не могло меня остановить! После еще нескольких часов поиска я заметил неадекватную реакцию скрипта одного из поддоменов нашего сервера на запрос:

http://deputat.kuban.info/?b=/http://http://etc/passwd

Но запрос ничего полезного не дал. Не отчаявшись, я впихнул в конец ссылки null-байт (%00), и... результат ты можешь лицезреть на скриншоте :).

Теперь локальный инклуд в запасе у меня был. Оставалось лишь загрузить куда-нибудь php-шелл... Вот за этим занятием я и провел оставшийся вечер и утро.

Я внимательно изучал каждый поддомен... И вот на одном из них я увидел админку для добавления новостей на сайт:

http://sr.kuban.info/admin

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

1' or 1=1/*

И оказался внутри админки :). Найти форму загрузки фотки к новости не составило труда. Только вместо фотографии, конечно же, был загружен php-файл с моим php-шеллом, который ты можешь найти на диске, прилагавшемся к сентябрьскому номеру журнала.

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

/var/www/kubinfo/sr/newsimg/447.jpg

Затем просто взял и заинклудил ее в найденный ранее уязвимый скрипт:

http://deputat.kuban.info/?b=http://../../../var/www/kubinfo/sr/newsimg/447.jpg%00

И получилась очень эротичная страничка, которую ты можешь видеть на скриншоте.

Базы! Как много в этом звуке...

Я немного поизучал сервер и очень расстроился, когда увидел, что на нем находятся только два сайта - те самые пресловутые http://deputat.kuban.info и http://sr.kuban.info. Но они должны были иметь доступ к PostgreSQL-серверу основного сайта платежки 1.1.1.3. Тем более что в одном из конфигов сайта депутатов было следующее:

$DB_HOST = '1.1.1.3';

$DB_USER = 'kubinfo';

$DB_PASS = ',lre,fybcns';

$DB_NAME = 'deputat_ki';

Для проверки надо было всего лишь найти скрипт, который может управлять базами такого типа. Им оказалась phpPgAdmin с сайта phppgadmin.org.

Успешно слив его wget’ом и распаковав, я сразу же полез в базу данных через http://sr.kuban.info/newsimg/phpPgAdmin-4.1.1/ (скорее всего, когда ты будешь читать эту статью, скрипт там так и будет стоять :)). Передо мной стали медленно открываться таблицы платежки. Зайдя, к примеру, в operator, я увидел зареганных на портале предпринимателей: фирма «МИГО», «Седин-Снаб», «ЮгКабель», «ПАМИР-К» и другие со всеми данными, логинами и паролями. Со своих аккаунтов они продавали на сайте различную продукцию и устраивали аукционы. В других таблицах были логи по проданным картам предоплаты, отправленные sms, с помощью которых юзеры оплачивают услуги сайта, полная инфа по банковским счетам: реквизиты, кто, кому, за что и когда платил :).

Но и это еще не все! В базе я обнаружил несколько таблиц, в которых были прописаны Ф.И.О., адрес и телефон тех людей, которые оплачивали коммунальные услуги, газ, свет, телефон через терминалы «КуПи»! Но разглашать эту информацию я не имею права :). Так что на этом пора заканчивать. Но подредактированный скриншот я все же предоставлю тебе как информацию к размышлению.

Эпилог

Закрыв от греха подальше браузер, я задумался. Если никто не заботится о нашей с тобой конфиденциальной информации, если даже крупная платежная система подвержена взлому, то кто должен думать обо мне, о тебе, кроме нас самих? Ни один из описанных багов не закрыт до сих пор вот уже на протяжении четырех месяцев. Я могу дать тебе только один совет: построй себе домик где-нибудь в лесу и живи там один в обнимку с ноутбуком, пока остальные люди будут находиться под колпаком у Большого Брата :).

WWW

DANGER

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

INFO

Ходили слухи, что платежную систему qp больше года назад уже ломали и подняли на этом очень много денег. Но я тебе настоятельно рекомендую не связываться со взломом любых, даже самых дырявых платежек, поскольку это себе дороже.

Содержание
ttfb: 4.6429634094238 ms