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

Налет на магазин

l1s(dalnet, #ru24)

Хакер, номер #088, стр. 088-064-1


Сетевой негодяй разорвал на части популярный е-шоп

Дело начиналось зимним холодным вечером. Я по привычке сидел у телека и тыкал все кнопки подряд с целью найти хоть что-то, что можно было бы посмотреть. Внезапно на экране появилась реклама какого-то интернет-магазина, который предоставлял огромный выбор разного стафа: от тренажеров до соковыжималок :). Я бы переключил на другой канал, если бы не приметная ссылка на сайт этого магазина, которая постоянно мелькала внизу моего экрана. В моей голове сразу всплыла мысль. А почему бы не…

[Mission Started]

В тот же вечер я решил зайти посмотреть на этот самый магазин и поискать что-нибудь интересное на нем. Зачем? А затем, что на таких ресурсах обычно затаривается огромное количество народу, и делают они это через инет, а значит, на сервере вполне возможно находилась база с кредами. Я вбил линк на сервер и быстренько переместился на главную страницу шопа. Весь магазин держался на php-движке отнюдь не публичного характера. Кое-где изредка мелькали html-паги со всевозможными хелпами и манами. Слева была панелька каталогов товаров. Он весь рулился скриптом - catalog.php, так же на форуме присутствовал форум, а точнее не форум, а обычная самопальня новостная лента, управляемая скриптом - forum.php. Был еще поисковый скрипт, который не представлял из себя ничего стоящего. В остальном сайт выглядел, как и подобает подобному проекту.

[о, sheet BUG!]

Я попробовал подставить к параметру id скрипта catalog.php кавычку, а получил грубый ответ от mysql, который говорил о том, что на сервере присутствовала sql-injection: http://shop.ru/catalog.php?id=14'

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/shop/html/shop/catalog.php on line 49

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/home/shop/html/shop/catalog.php on line 50

"Отлично", - подумал я, - теперь у меня есть зацепка. Далее мне было необходимо узнать имя базы и поля. Здесь у меня особых затруднений не возникло, потому что название базы было users, а нужные мне поля выглядели дефолтно, и мой запрос поменялся на следующий вид:

www.shopru/catalog.php?id=14%20union%20select%20email%20from%20users%20limit%200,1

Этот запрос выплевывал мне первый логин пользователя - в моем случае это был админ. Второй запрос выглядел следующим образом и давал мне админский пароль:

www.shop.ru/catalog.php?id=14%20union%20select%20password%20from%20users%20limit%200,1

Результат запроса меня приятно удивил. Вместо зашифрованного хэша админа я увидел обычный незашифрованный пароль! Теперь я владел всеми админскими данными, которые могли помочь мне попасть к нему в админку. Проблема лишь состояла в том, что эту самую админку мне нужно было найти :).Я попробовал дефолтные админские каталогов типа /adm,/admin,/administrator и т.д., но в ответ ничего не получил. Далее мною было решено врубить свой cgi-сканер с приличной базой уязвимостей, с помощью которого я вполне мог бы найти какие-то интересные папки, где могла бы находиться администраторская панель сервера. Я набрал десятиметровую базу уязвимостей и забил все это в файл vuln.txt. Потом я наколбасил небольшой скрипт для оценки серверных каталогов (он же cgi-сканер). Мой сорец получился примерно следующего содержания:

Содержание  Вперед на стр. 088-064-2
Подвесные унитазы geberit aquaclean. | знакомства переписка | Доставка ж/д и авиабилетов - покупка жд билетов. Заказ ЖД билетов с доставкой. | Оптимизация сайтов или их раскрутка обеспечивает приток заинтересованных пользователей. | бонусы forex