Для новичков Иногда, когда нет шела, нам, скрипт-кидисам, приходиться перловые сплоиты запускать со своего компа. Это довольно палевно и далеко не в каждом сплоите есть поддержка прокси. Но это поправимо! Я попробую показать как добавить в сплоит использующий LWP::UserAgent поддежку прокси. На примере. Возьмем к примеру скрипт EST Alienа, который показывает пароль любого юзера mailgate.ru, у которого не установлен вопрос/ответ. В самом начале строка Code: use LWP::UserAgent; LWP - LWP - The World-Wide Web library for Perl). LWP::UserAgent это интерфейс между перловым скриптом скриптом и сетью. теперь посмотрим 32 строку, там такой код: Code: $browser = LWP::UserAgent->new; $res=$browser->get($url); ага, тут создаеися методом new() обьект LWP::UserAgent $browser, и отправляется запрос GET, запрашивающий предоставление ресурса с сервера-источника (у нас - $url). Т.е. этот кусок кода делает тоже самое, что и браузер в строке которого введено значение переменной url. Очень просто мы можем направить наш запрос через прокси, просто определив свовйство $browser вот так (для http прокси): Code: $browser->proxy(['http']=>"http://".$proxy_addr."/"); $proxy_addr это наша прокся IP_адресс:порт перед ней указан нужный нам протокол, или несколько. Естественно нам нужен только http. ПОСЛЕ этого определения все действия совершаемые через $browser, будут направлены через проксик. Да, чуть не забыл, в http запросе (любом) есть поле Agent, определяет браузер клиента. В перле по умолчанию свойство $browser->agent = "libwww-perl/5.803" можно поменять на чтонибуть покрасивее: Code: #$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 10.3; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.4 Beta"); А что? прикольно. Ну попробуем запустить. Работает? Должно. Если проксик жыв.. Но всеравно как-то стремно. Может случился мистический глюк и запрос не направляется через проки? Или прокси выдает нас с потрохами? Надо проверить... Напишем простенький скрипт, который будет сохранять на винт произвольную вэб-страница, URL которой мы скажем скрипту. Пусть этой страницей будет http://ip.xss.ru/header.php. Естественно получать страничку мы будем через прокси. А что сложного? срипт будет принимать 2 параметра: адрес запрашиваемого ресурса (URL) и IP_адресс:порт прокси-сервера. Code: use LWP::UserAgent; &header(); if((@ARGV<1) or (@ARGV>2)){&usage;} $url=$ARGV[0]; if(!$ARGV[1]){print "\n[!] NOT using proxy";} [B]#определяем задан ли прокси-сервер[/B] else {$proxy_addr=$ARGV[1];} print "\n[~] Trying get page from ".$ARGV[0]."\n"; $ua=LWP::UserAgent->new or die; [B]#создаем новый объект LWP::userAgent (браузер)[/B] $ua->agent("Any funny text here :=|"); [B]#определяем свойства[/B] if($proxy_addr){ [B]#если в параметрах задан проксик,..[/B] $ua->proxy('http',"http://".$proxy_addr."/"); [B]# ..используем его[/B] print "[~] Using proxy ".$ARGV[1]."\n"; } $res = $ua->get($url) or die ; [B]#направляем запрос..[/B] [B]#..результат выпонения - в переменную $res[/B] $page=$res->content; [B]#получаем html код странички..[/B] print "\n-------------------------------------------------\n"; open(TMP,">1.html"); print TMP $page; [B]#..и сохраняем ф файл 1.html[/B] print $page; close(TMP); sub header(){ print q( ------------------------------------------------- LWP::UserAgent get demo by 3eer0 -------------------------------------------------) } sub usage(){ print q( usage: perl script.pl <url> <proxy> ex: perl 1.pl http://ip.xss.ru/header.php 127.0.0.1:81 [B]#да, это локальный прокси у меня Naviscope.[/B] or: perl 1.pl http://ip.xss.ru/header.php - without proxy); exit(-1); } Выполняем. Теперь в нанем файле (1.html) страница сгенерированная сктиптом http://ip.xss.ru/header.php, к которому мы обратились через LWP::UserAgent, открываем 1.html Фаерфоксом (ну или еще чем-то) и видим результат проверки на анонимность нашей прокси. Если нигде не светится красным ;-) то все нормально, проксик боевой, иначе - ищи другой... Независимо от степени анонимности, используемого прокси, используя LWP::UserAgent не получится скрыть его(прокси) присутствие, т.к. Connection: TE, close , что значит наличие прокси. Connection: keep-alive- отсутствие прокси. Но наш адресс нигде не светится. Наверно этого достаточно для сплоета. Но не всегда... Если юзать локальный прокси, и тогда в исходниук сплоита достаточно добавить всего 1 строку после создания UserAgent обьекта, перед обращению к методам объекта: Code: $ua = LWP::UserAgent->new; $ua->proxy([http]=>"http://217.0.0.1:81/"); $ua = $browser->get($url); естественно в настойках локальной прокси уже вами установлен адресс анонимного прокси сервера. Вобщем нагрузил я вас, а мог бы всего эти две строчки строчки написать ;-) На этом я заканчиваю. Дальше - сами. Скрипты упомянутые в статье: скрипт EST Aliena скрипт EST Aliena с поддержкой прокси Совсем совсем новичкам: Perl с нуля. Часть первая. by Trampled_clover