Новогодний дамп Укртелекома

M3lc1y

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

(M3lc1y@bk.ru, hellknights.void.ru)

На Украине, как и в большинстве стран бывшего СССР, сложилась нездоровая ситуация с интернет-трафиком. Качество связи просто отвратительное, а за эти услуги с небогатых украинцев требуют довольно весомые суммы за пользование Сетью. К нам обратился чувак, которого сложившаяся ситуация абсолютно не устраивала. Не долго думая, он поломал сервер крупнейшего украинского оператора связи и получил огромный дамп с полезной информацией.

[первые шаги]

Все, что мне нужно было от сервера www.ukrtelecom.ua, - это не слава неизвестного хакера, не дефейс посещаемого сайта и даже не возможность затроянить пару тысяч посетителей. Все, что мне было нужно, - база данных со всеми пассами и картами оплаты.

Перед тем как приступить к активным действиям, я стукнул к одному знакомому, который торговал проксями, и попросил у него доступ к сервису. Нацепив носок на браузер, я набрал в адресной строке www.ukrtelecom.ua и начал тестить сайт на баги. Первое, что бросилось мне в глаза, - ссылка вида

www.ukrtelecom.ua/ua/hot_news/?id=673. Думаю, ты понимаешь, по какой причине этот линк привлек мой взгляд :). Однако программисты не были совсем уж клиническими дебилами, значение этой переменной нормально обрабатывалось, и провести элементарную SQL-injection атаку у меня не получилось.

Далее мой взгляд привлек форум www.ukrtelecom.ua/ua/offers/forum. К сожалению, администраторы Укртелекома не особенно жаловали бесплатные проекты вроде IPB, phpBB или Vbulletin, поэтому не стали устанавливать эти сомнительные борды, а создали что-то самописное. Интересно, что у них из этого получилось. Сейчас заценим.

[активное общение на форуме]

Перемещаясь по страницам форума, я искал ссылки специального вида. Довольно быстро я нащупал страницу с адресом

www.ukrtelecom.ua/ua/offers/forum/list.php?f=7. Через две секунды стало ясно, что я попал прямо в точку: скрипт был уязвим. Поставив после семерки кавычку, я увидел знакомую уже всем ошибку

Waing: pg_exec(): Query failed: ERROR: parser: parse error at or near "'" at character 50 in

/usr/local/www/data/ua/offers/forum/lib/sql.inc on line 13

Единственное, что сразу бросилось в глаза, - на сервере использовалась база данных PostgreSQL, а не попсовый MySQL. Но нам это совершенно не важно сейчас. Суть заключается в том, что хоть баг я и нашел, но использовать его у меня не получилось. Включенная опция magic_quotes исключала подстановку кавычек, а эксперименты с union-объединениями ни к чему хорошему не приводили (на самом деле, такая ситуация возникает довольно часто; скоро в Хакере ты увидишь статью о самом рациональном и экстремальном использовании sql-injection. - Прим. Никитоса).

После неудачи с SQL-багом я решил заюзать обычный CGI-сканер на perl'e, который я запустил на забугорном шелле в Австралии.

[анатомия сервера]

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

* http://site/robots.txt

* http://site/htaccess

* http://site/scripts/

* http://site/test/

* http://site/img/

* http://site/logs/

Первый же файл меня очень обрадовал. Как ты знаешь, в файле с таким названием находится информация для роботов поисковых машин, то есть информация о том, какие каталоги индексировать можно, а какие - нельзя. Это сделано специально для того, чтобы уберечь индексируемые ресурсы от публикации зарытых сведений, которые не предназначены для всего Интернета. Содержимое файла ты можешь наблюдать на скрине. Могу сказать, что информация из него здорово помогла мне. Чтобы тебе было проще ориентироваться, приведу здесь кусок этого файла:

Содержание  Вперед на стр. 086-060-2
ttfb: 3.371000289917 ms