ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Поддержка прокси в сплоитах на Perl LWP::UserAgent
  #1  
Старый 08.06.2006, 13:48
Аватар для 3er0
3er0
Познающий
Регистрация: 31.03.2006
Сообщений: 36
Провел на форуме:
302384

Репутация: 4
Отправить сообщение для 3er0 с помощью ICQ
По умолчанию Поддержка прокси в сплоитах на Perl LWP::UserAgent

Для новичков

Иногда, когда нет шела, нам, скрипт-кидисам, приходиться перловые сплоиты запускать со своего компа. Это довольно палевно и далеко не в каждом сплоите есть поддержка прокси. Но это поправимо!
Я попробую показать как добавить в сплоит использующий LWP::UserAgent поддежку прокси. На примере.
Возьмем к примеру скрипт EST Alienа, который показывает пароль любого юзера mailgate.ru, у которого не установлен вопрос/ответ.
В самом начале строка
Код:
use LWP::UserAgent;
LWP - LWP - The World-Wide Web library for Perl).
LWP::UserAgent это интерфейс между перловым скриптом скриптом и сетью.
теперь посмотрим 32 строку, там такой код:

Код:
  $browser = LWP::UserAgent->new;
  $res=$browser->get($url);
ага, тут создаеися методом new() обьект LWP::UserAgent $browser, и отправляется запрос GET, запрашивающий предоставление ресурса с сервера-источника (у нас - $url). Т.е. этот кусок кода делает тоже самое, что и браузер в строке которого введено значение переменной url. Очень просто мы можем направить наш запрос через прокси, просто определив свовйство $browser вот так (для http прокси):

Код:
$browser->proxy(['http']=>"http://".$proxy_addr."/");
$proxy_addr это наша прокся IP_адресс:порт
перед ней указан нужный нам протокол, или несколько. Естественно нам нужен только http.
ПОСЛЕ этого определения все действия совершаемые через $browser, будут направлены через проксик. Да, чуть не забыл, в http запросе (любом) есть поле Agent, определяет браузер клиента. В перле по умолчанию свойство $browser->agent = "libwww-perl/5.803" можно поменять на чтонибуть покрасивее:

Код:
#$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_адресс:порт прокси-сервера.
Код:
use LWP::UserAgent;
&header();

if((@ARGV<1) or (@ARGV>2)){&usage;}
$url=$ARGV[0];
if(!$ARGV[1]){print "\n[!] NOT using proxy";}  #определяем задан ли прокси-сервер
else {$proxy_addr=$ARGV[1];}

print "\n[~] Trying get page from ".$ARGV[0]."\n";

$ua=LWP::UserAgent->new or die;		#создаем новый объект LWP::userAgent (браузер)
$ua->agent("Any funny text here :=|");	#определяем свойства
if($proxy_addr){			#если в параметрах задан проксик,..
	$ua->proxy('http',"http://".$proxy_addr."/"); # ..используем его
	print "[~] Using proxy ".$ARGV[1]."\n";   
}

$res = $ua->get($url) or die ;	#направляем запрос..
				#..результат выпонения - в переменную $res

$page=$res->content;	#получаем html код странички..
print "\n-------------------------------------------------\n";
open(TMP,">1.html");
print TMP $page;	#..и сохраняем ф файл 1.html

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 
	#да, это локальный прокси у меня Naviscope.
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 обьекта, перед обращению к методам объекта:
Код:
$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
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
Прокси: Как вас вычислить если вы под анонимным прокси Geveres Статьи 0 19.11.2005 17:02
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
ПРокси Чаты 6 25.01.2003 00:04



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ