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

Красиво жить не запретишь

Стройков Леонид aka Roid

Хакер, номер #093, стр. 093-086-1


(r0id@mail.ru)

Атака на онлайн-обменник

Intro

Когда бродишь по раскрученным хак-форумам, то и дело натыкаешься на объявления типа: «Продам базу обменника за 10k». Возникает вопрос: откуда берутся такие базы? Очевидно, что добро было выведено после громкого взлома. И не факт, что админы закрыли баг, через который поимели буржуйскую систему. Подобный топик я узрел на одной, известной узкому кругу, борде. Какие-то чуваки продавали базу с онлайн-обменника eForexGold (www.e-forexgold.com). Просмотрев по диагонали пост, я решил самостоятельно взглянуть на данный ресурс. У меня была надежда, что уязвимость все еще присутствует, а следовательно, появлялась возможность заполучить базу на халяву.

Первый осмотр

Вбив в адресной строке браузера www.e-forexgold.com, я оказался на сайте обменника. В верхней части страницы находилось меню. Мое внимание сразу привлекли такие разделы, как buy, sell, exchange rate, debit cards, gold merchant. Просмотрев информацию, предоставленную на сайте, я обнаружил, что, кроме различных платежных систем, включая e-gold, обменник работает и с WebMoney. Сей факт почему-то вызвал улыбку на моем лице. Ну что же, настало время «протестировать» пациента ;). Изучив движок сайта, я понял, что расчитывать на инклуд или прочий режущий глаза баг - бесполезно. На ресурсах подобного уровня админы, как правило, заслуженно получают свою зарплату. Ради интереса я решил проверить наличие веб-директории /admin. Оказалось, что она действительно существовала по адресу: https://www.e-forexgold.com/admin/, но для входа требовался логин и пароль, которых у меня, естественно, не было. Тогда я начал осматривать разделы меню. Наиболее значимым мне показался пунктик xtransxpress. Я нажал на ссылку, и передо мной предстала форма входа в личный кабинет аккаунта. Тестирование скрипта авторизации показало, что он был написан достаточно грамотно: входящие данные фильтровались и не отображались в браузере. Аналогично дело обстояло еще с несколькими разделами. Я уже стал подумывать о том, что админ самостоятельно пропатчил движок, либо я работаю в неправильном направлении, но вдруг мне на глаза попался ничем не приметный раздел gold merchant. В нем присутствовал скрипт default.php, который использовал значение параметра categoryid. В общем виде линк выглядел так:

https://www.e-forexgold.com/member_directory/default.php?categoryid=1

Я предположил, что происходит выборка данных из БД, и оказался прав. Подставив символ кавычки ' в значение параметра categoryid, я передал следующий запрос:

https://www.e-forexgold.com/member_directory/default.php?categoryid=1'

И сразу же получил в ответ сообщение об ошибке:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' ORDER BY name' at line 1

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

В недрах БД

В сети можно найти огромное количество материала по sql-injection (да и мы не раз писали об этом), поэтому я не стану объяснять основы данного ремесла, а перейду сразу к эксплуатации обнаруженной уязвимости. Первое, что меня интересовало, - мои права, а точнее права моего юзера в базе. Как известно, доступ к mysql.user имеет только определенный круг пользователей, указанный рутом. Для того чтобы проверить привилегии своего юзера, я сформировал запрос вида:

Содержание  Вперед на стр. 093-086-2