Взлом inteet-магазина: взгляд изнутри

Dreamer

Xakep, номер #050, стр. 060-061

В наступившей кибернетической жизни, где компьютерные технологии выдвинулись на первое место и уверенно держатся там уже не первый год, появились новые возможности, которые предыдущему поколению даже не снились. Например, интернет-магазины. Казалось бы, что такого? - заходишь на сайт, кликаешь по товару, и он у тебя в корзине. Ждешь его почтой, либо живой доставкой в течение дня.

А представь, как приходится работникам этого магазина? В нашей жизни воровство - самое распространенное преступление, поэтому в реальных магазинах обязательно присутствует охрана. В виртуале - подобная ситуация. Незащищенный сервер видно издалека, а эта незащищенность чревата для магазина огромными убытками.

Где же ищут такую незащищенность? Например, в поисковиках. Вполне подойдет yandex.ru. Заходят туда и тупо набивают "интернет-магазин". Поисковик наградит множеством ссылок, по которым хакеры начинают свое исследование. В большинстве случаев интернет-магазины подвержены двум, нашумевшим в последнее время уязвимостям - ssl_mod и php_mod для Apache. Таким образом, исследуя интересующий сервер на эти баги, вполне возможно, что хакер обнаружит уязвимость. При помощи данных ошибок он и внедряется внутрь системы. Обычно взломщики сканят и ломают сервера не с провайдерской подсети, иначе их запросто вычисляют, даже если они ничего путного и не сделали.

Взлом интернет-магазина - это не дефейс сайта, который может запросто сойти с рук. Вполне возможно, что за магазином следят специалисты в области защиты информации. Если у хакера не было большого опыта во взломе крупных серверов, то он просто рискует своей свободой. Так что весь дальнейший материал - это пересказ вещей, которых КАТЕГОРИЧЕСКИ нельзя делать! Ведь далее будет показан механизм проникновения внутрь магазина. И запомни, это только информация, а не руководство к действию.

Прежде всего, хакер определяет, какие товары ему необходимо заказывать, иначе взлом магазина теряет всякий смысл. Например, зачем ему ломать виртуальную аптеку, если он здоров? Если же ему не хватает каких-то книг или компьютерного оборудования, то он идет в виртуальный книжный магазин или в инет-шоп по продаже компьютерной техники и аксессуаров. Также у хакера существует проблема выбора магазина: буржуйский или русский. Сейчас есть тенденция ломать именно русские шопы, так как на буржуйских оплата за доставку не всегда окупает стоимость товара.

Итак, хакер нашел жертву. Допустим, это www.ezine.com. Чтобы оставить минимум следов, он делает HTTP-запрос вручную с какого-либо далекого шелла. Диалог будет примерно следующим:

[root@china /root]# telnet www.ezine.com 80Trying 220.30.20.10...Connected to 220.30.20.10.Escape character is '^]'.HEAD / HTTP/1.0HTTP/1.1 200 OKDate: Fri, 13 Dec 2002 21:05:29 GMTServer: Apache-AdvancedExtranetServer/1.3.19 (Linux-Mandrake/3mdk) PHP/4.0.4pl1Connection: closeContent-Type: text/htmlConnection closed by foreign host.[root@china /root]#

Как видно, требуется всего лишь запросить HEAD на корневой каталог сервера (путем ввода HEAD / HTTP/1.0 и два перевода строки). Собственно для проведения анализа его интересует только одно поле Server в ответе. Хакеру такой ответ вполне подходит, так как на нем установлен PHP версии 4.0.4pl1 (он уязвим и с помощью 7350fun эксплойта на сервере возможно получить удаленный шелл). Остается последняя сложность - найти на сервере php/cgi-скрипт, которому можно передавать параметры, и запустить эксплойт с параметром этого скрипта (найти его можно на www.packetstormsecurity.nl). Через определенное время наш хакер получает шелл с правами nobody. Для него важно оставить на сервере минимум следов, поэтому его задача - проведя на нем немного времени, найти пароль на базу данных (а скорей всего она будет присутствовать, так как большинство движков магазина ориентированы на них) и изучить эту базу с целью обнаружения в ней паролей на web-администрирование магазина.

Взлом

В первую очередь, хакеру необходимо найти WWW-директорию. Это он может сделать путем поиска строки в httpd.conf. Затем, перейдя в эту директорию, ему следует найти cgi/php-скрипты, которые подключаются к базе. Пароль в таких скриптах указывается в большинстве случаев без какой-либо шифрации. Шаблон поиска может быть, к примеру, "passwd" или "password" без учета регистра. Иногда инфа о базе данных находятся в так называемых конфигурационных файлах, которые включаются в скрипт в его заголовке. Допустим, в ряде скриптов он нашел такую строчку: include "config.inc". Это значит, что на 99% в config.inc хранятся важные переменные, в том числе и информация о подключении к базе данных. Пусть первые строчки этого конфига будут:

$user="dbuser";$password="dbpassw0rd";$dbname="ezine";$dbhost="localhost";

Этой информации взломщику будет вполне достаточно для воплощения его идей в реальность. Следующим шагом будет исследование базы данных на предмет паролей к web-админ зоне. В 90 из 100 случаях в качестве базы данных используется mysql. Под нее ориентировано много движков, а синтаксис запросов наиболее популярен и пластичен (нежели postgresql, например). Вначале он подцепляется к mysqld и просматривает все базы. Затем, выбирает наиболее подходящую из них и находит в ней интересующую информацию.

bash$ mysql -udbuser -pdbpassw0rd -e 'show databases'3 rows in set (0.00 sec)bash$ mysql -udbuser -pdbpassw0rd -e 'show tables' ezine3 rows in set (0.00 sec)bash$ mysql -udbuser -pdbpassw0rd -e 'select * from admins limit 1' ezine

В данной таблице хакер обнаружил пароль на пользователя admin от админ-зоны www.ezine.com. Если все действительно так, то он приступает к штурму магазина. Но не всегда пароли на web лежат в mysql, да еще и plain text'ом. Может случиться так, что админ-скрипты просто закрыты .htpasswd-авторизацией. А обнаружить это легко. Он выясняет, где находится директория для администрирования на вебе (путем поиска строки 'admin' в httpd.conf) и просматривает ее содержимое. Если находит там .htaccess и .htpasswd (хотя он может называться и по-другому), значит, есть зашифрованные пароли. Их можно прочитать, так как его права удовлетворяют правам доступа на этот файл. Допустим, он нашел в .htpasswd строку: admin:xa.H512YeHBkA. Далее ему придется поручить расшифровку этого DES-хеша старому доброму John The Ripper'у. Он закидывает салт в какой-нибудь файл в директорию john (например, pswd), затем вызывает командную строку (без нее в XP наблюдались глюки) и набирает там примерно следующее: john -w:путь_к_словарю pswd -rules > done. Ломать без словаря он будет пытаться лишь в безвыходной ситуации, когда другие методы не прокатывают (вот пример где можно слить словарик: http://kamensk.net.ru/forb/1/dict.zip).

Немного о параметрах John'a. Параметр -rules подбирает пароль с усложнением словарного слова (замена регистра, вставка цифр после слова и т.д.). Также существует метод -single (без параметра -w). Он подбирает пароль относительно заданного логина. Короче говоря, задача взломщика - любыми путями расшифровать этот пароль. Это довольно сложно.

Изучение движка и структуры магазина

После того, как хакер добыл аккаунт на web-админа магазина, он травит на него свой браузер (предварительно установив proxy, либо цепочку анонимных проксей, так как web-сервер ведет логи, а светить свой ip небезопасно).

В первую очередь ему нужно посмотреть, сколько оплаченных заказов в день проходит через магазин. Для него это важно, так как, если в день проходит около 200-300 заказов и более, шанс на то, что заказанный товар вышлют, и за хакером никто не придет, резко возрастет. В противном случае ему следует серьезно задуматься, стоит ли рисковать.

Во-вторых, порядок оформления заказа: как правило, российские магазины позволяют расплатиться за заказ почтовым переводом, и в случае перечисления денег отправляют заказ клиенту. Это, пожалуй, идеальный вариант. Его задачей будет через несколько дней после того, как он сделал заказ, поменять статус заказа на web-панели на оплаченный, и ждать товара =). Это все в теории. На практике все может оказаться немного сложнее, поэтому первый заказ хакер может послать своему корефану, который ничего не смыслит в компах, а тем более во взломе. Затем, если все ок, покупает у него свой заказ за бутылку пива. Если все проходит без последствий, он заказывает товар на себя. В то же время хакер не перегибает палку: не заказывает много товаров и не делает это слишком часто. А все дело в том, что убытки магазину должна списать бухгалтерия. На маленькие цифры могут закрыть глаза, но когда счет идет на тысячи долларов, тут ситуация непредсказуема. Также хакер как можно меньше светится на админ-зоне магазина и не рассказывает никому о факте взлома, иначе он может поплатиться.

Ахтунг, второй раз! Эта статья написана только в целях просвещения. Это ни в коем случае не руководство к действию. Все, что здесь написано, уголовно наказуемо! Не надо повторять описанные действия!

Далеко не все интернет-магазины стоят на сервере Linux. Достаточно много магазинов используют платформу Win2000-сервера. А там, как известно, полно своих багов - IIS, cart32 и многих других... Но, как это ни парадоксально, большая доля взлома приходится именно на Linux-сервера. Пингвин, пингвин...

Содержание
Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114