PDA

Просмотр полной версии : IP-spoofing на PHP


Pashkela
04.03.2009, 16:11
Статья:

http://www.astahost.com/info.php/hackers-view-easy-spoofing-ip-address_t13807.html

код, написанный на основании этой статьи:


<?
@set_time_limit(0);
@ini_set("display_errors","1");
$hostname = gethostbyname('2ip.ru');

$responce = "";
$fsock = fsockopen($hostname,80,$errnum,$errstr,2);
$headers = "GET http://2ip.ru/ HTTP/1.1\n";
$headers .= "Host: 2ip.ru\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "X-Forwarded-For: 44.55.66.77\n";
$headers .= "Pragma: no-cache\n";
$headers .= "Referer: http://www.xakep.ru\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
while (!feof($fsock)) $responce .= fread($fsock,1024);
echo $responce;
?>


ключевая строчка здесь - это


$headers .= "X-Forwarded-For: 44.55.66.77\n";


и даже 2ip.ru на эдакую хрень выдал вот что:

Результат выполнения кода:

http://s55.radikal.ru/i148/0903/a5/9e50cfa89fbd.jpg

44.55.66.77 - это просто циферьки от балды, если кто не понял.

BlackSun
04.03.2009, 16:12
Это не ip-spoofing.

SVAROG
04.03.2009, 16:22
IP-спуфинг (от англ. spoof — мистификация) —
Вид хакерской атаки, заключающийся в использовании чужого IP-адреса с целью обмана системы безопасности.
Метод, используемый в некоторых атаках. Состоит в проставлении в поле обратного (source) адреса IP-пакета неверного адреса. Применяется с целью сокрытия истинного адреса атакующего, с целью вызвать ответный пакет на нужный адрес и с иными целями.

он же обманывет ту систему заставляя её думать что это его ИП, так что спуфингом это можно назвать

Pashkela
04.03.2009, 16:24
2 BlackSun:

А что же это еще?:))))

вот зашел ЭТИМ же скриптом на СВОЙ снифак от Kanick:

http://s49.radikal.ru/i126/0903/90/43773c359ba6.jpg

по моему строчка


Real IP: 44.55.66.77


более чем красноречива:)

BlackSun
04.03.2009, 16:24
он же обманывет ту систему заставляя её думать что это его ИП, так что спуфингом это можно назвать
IP-spoofing это подмена адреса отправителя в заголовках TCP, UDP пакетов, а X-Forwarded-For в хидере http пакета - всего-лишь одно из полей, юзаемое не анонимными проксями для указания действительного адреса пользователя. Если бы благодаря этому полю перезаписывалось значение в REMOTE_ADDR, то да, это был бы спуфинг.

BlackSun
04.03.2009, 16:27
2 BlackSun:

А что же это еще?:))))

вот зашел ЭТИМ же скриптом на СВОЙ снифак от Kanick:

http://s49.radikal.ru/i126/0903/90/43773c359ba6.jpg

по моему строчка


Real IP: 44.55.66.77


более чем красноречива:)
Сорец смотрел? Там примерно следующее:

if (isset($_SERVER['X-Forwarded-For']))
{
$proxy = $_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['X-Forwarded-For'];
} else
{
$proxy = null;
$ip = $_SERVER['REMOTE_ADDR'];
}

А X-Forwarded-For юзают далеко не всегда.

Pashkela
04.03.2009, 16:28
Да, но откуда у меня ощущение, что гугл это схавает, если делать множество запросов и попытаться избежать бана?:)

Я не спорю, это не вот прямо полноценный спуфинг, но в некоторых случаях просто незаменим, потому что таки все привыкли считать, если есть X-Forwarded-For, то первый IP - прокси, а X-Forwarded-For - таки реальный IP, думается мне на этом построена система идентификации много, я бы даже сказал очень много где:)))

Ну в общем сами думайте, а я тоже пойду еще чонить придумаю

AkyHa_MaTaTa
04.03.2009, 16:30
Это бага кодеров которые слишком доверяют X заголовкам HTTP, есть еще и HTTP_X_REAL_IP, в движке IPB есть ксати код который имено проверяет эти заголовки, если их нет то уже использует REMOTE_ADDR или HTTP_FROM которые для нельзя перезаписать.

Pashkela
04.03.2009, 16:34
Да взять тот же снифер от Каника уважаемого - какой IP вы бы сами посчитали реальным? Думается мне на первый бы даже не посмотрели:)

.:EnoT:.
04.03.2009, 16:43
Абалдеть...называется "учим http протокол вместе"
Pashkela, ты только сегодня узнал, что X-Forwarded-For можно подделать? Ни один нормальный сайт не будет определять ip из http-заголовков. Хотя бывают хостинги, где REMOTE_ADDR по умолчанию пустой, а IP хранится в X-Forwarded-For.
Это не IP спуфинг а хня...в общем неуважуха, и незачёт...
P.S. Следующая статья будет "Спуфинг Юзер-агента"?

Pashkela
04.03.2009, 16:59
В некоторых случаях, для разработок СВОИХ проектов, это может быть полезно, например, на одном форуме задали такой вопрос:


К примеру есть некий сервер который при обращении на него скриптом генерирует временную ссылку, это ссылка доступна только из ip который обратился за ней.
Но задача следующая, .. есть другой сервер (плохой) :) на который зашел юзер, вот ему(серверу) нужно получить ссылку и отдать ее юзеру.
За любые подсказки буду признателен.


Сабж выложен в разделе кодинг, а не в разделе уязвимости, вы слишком однобоко смотрите на вопросы в принципе, так что незачет и вам:)

ЗЫЖ Так что это именно один из методов ip-спуфинга, чтобы вы там себе не думали.

ettee
04.03.2009, 19:10
Выше сказанное относится к классу Insufficient Process Validation, что является индивидуальной проблемой распространяемого ПО, и не умеет абсолютно никакого отношение к работе IP протокола (так и к Smurf, Spoofing атакам). К сожалению (а может и к счастью) в наше время уделяется совсем мало внимания дополнительным http-заголовкам, а зачастую используется метод "черных" списков которые не в состоянии полностью следить за "легитимным" трафиком, что и приводит к таким конфузам.

desTiny
04.03.2009, 19:34
https://forum.antichat.ru/threadnav47951-1-10.html
:)

mr.The
04.03.2009, 19:44
Баян.. Ещё я когда-то в своём сжимающем php прокси делал такую фичу..
В этом заголовке можно любые данные передавать. Я таким образом нашел на несколькох сайтах xss и sql-inj )

А вообще советую почитать спецификацию http протокола. Очень интересно