PDA

Просмотр полной версии : возможно ли подделать $_server['remote_addr']?


Дикс
26.06.2008, 16:10
надо ли его проверять на валидность айпи?

GreenBear
26.06.2008, 16:12
нет

Naydav
26.06.2008, 16:17
нет
Разве можно доверять $_server['remote_addr']?
А если в заголовке передавать неверный ip?
То и $_server['remote_addr'] - будет неверный

Exlibris
26.06.2008, 16:19
А если в заголовке передавать неверный ip?
То и $_server['remote_addr'] - будет неверный
Naydav если такой умный то скажи пожалуйстиа способ по твоему опра\еделить "верный айпи"

GreenBear
26.06.2008, 16:21
remote_addr в заголовке передать нельзя

Naydav
26.06.2008, 16:22
Naydav если такой умный то скажи пожалуйстиа способ по твоему опра\еделить "верный айпи"
Я нахожусь по ip-адрессу 177.55.67.288 , а передаю в заголовке 10.10.10.10

Даже в квесте античата есть такое задание, 4 или 5 левел, если не ошибаюсь

Exlibris
26.06.2008, 16:26
епт ну через ремоте_аддр и придет 10.10.10.10 и каким образом ты собрался узнать 177.55.67.288...
--
Так что уже отвтили, расслабся

Naydav
26.06.2008, 16:32
ну через ремоте_аддр и придет 10.10.10.10
В том то и дело, что придет 10.10.10.10, а не реальный айп

Ты вопрос прочитай
возможно ли подделать $_server['remote_addr']?
Да можно

Exlibris
26.06.2008, 16:40
Друг это ты вопрос прочитай и вникни в его смысл. Ты прочитал название темы если что =/
надо ли его проверять на валидность айпи?
А проверять на валидность нет смысла, потому что если 10.10.10.10 придет как ремоте_аддр, то 177.55.67.288 ты уже никак(формально, в рамках данного вопроса) не узнаешь

Whirt
26.06.2008, 16:44
Цитата:
ну через ремоте_аддр и придет 10.10.10.10

В том то и дело, что придет 10.10.10.10, а не реальный айп

Ты вопрос прочитай
Цитата:
возможно ли подделать $_server['remote_addr']?

Да можно

:eek: хуясе о_О.
ну я читал (не помню где уже), что можно при определенных условиях обмануть сервак при передаче модифицированного X_FORWARDED_FOR, но чтобы подменять REMOTE_ADDR, ... хмм... можно линк у тебя попросить. или описание)

Получается, ты можешь перезаписать глобальную $_SERVER['remote_addr'] на любом серваке ? хм. сомнительно.

Дикс
26.06.2008, 17:02
я имел ввиду проверить не на валидность, а на отсутствие вредоносного кода в нём.
тем не менее слепил вот такой говнокод, просьба помидорами не закидывать:


static function validateIp($ip) {

$ipData = explode('.', $ip);

if(sizeof($ipData) == 4){
for($i=0;$i<4;$i++)
if($i != 0)
$newIp .= ('.' . intval($ipData[$i]));
else
$newIp .= intval($ipData[$i]);

return $newIp;
}else
return 0;
}

Naydav
26.06.2008, 17:04
Whirt
можно линк у тебя попросить. или описание)
Квест Античат
Задание - Нужно зайти с Ip 10.10.10.10
С помощью проги - InetCrack

GreenBear
26.06.2008, 17:05
не путай с дополнительными заголовками !!!

Naydav
26.06.2008, 17:07
Дикс
$text = '127.0.0.1';

if (preg_match('/^([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][
0-9]|25[0-5])(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4]
[0-9]|25[0-5])){3}$/', $text))
{
echo "Address is ok!"
}

.Slip
26.06.2008, 17:20
Naydav, в квесте античата надо подделать x_forwarded_for, и отношения к ip_addr это никакого не имеет. Не надо утверждать то чего не знаешь. (Кстати уже второй раз)

2Дикс, в ip_addr ты не передашь ничего кроме ип адреса. Другое дело юзер агент.

Whirt
26.06.2008, 17:24
.Slip, +1
Я так и сказал выше, но все же для уверенности глянул в описание InetCrack (ну мало ли ? :)

Программа позволяет задавать или модифицировать следующие парметры запроса:
# URL (в том числе строку запроса CGI)
# Referer
# Host
# Content-Type
# Accept-Encoding
# User-Agent
# Cookie
# Authorization
# X-Forwarded-Fornew
# Vianew
# Cache-Controlnew

SQLHACK
26.06.2008, 17:32
Собственно давайте поставим точку.
$_SERVER['REMOTE_ADDR'] сюда записывается IP адрес, машины которая запрашивает, скрипт, и заполняется он информацией которую передаёт вебсервер к ПХП.

Иногда допускают ошибку в кодинге, в определении IP адреса, доверяя дополнительным заголовкам HTTP_* (например HTTP_X_FORWARDED_FOR) которые МОЖНО подменить послав произвольные дынные в этом заголовке, вследствии чего даётся доступ к какой то ограниченой зоне.

Иными словами в нормальных условиях туда записать ничего НЕЛЬЗЯ, никакими заголовками. Другое дело это криворукость програмеров, допускающих, глобализацию переменных например фунциями extact,import_global_variables и др. с неверными аргументами, тогда становится возможным переопределение практически любых переменных, вследствии чего возможно внедрение вредоносного произвольных данных в переменную $_SERVER['REMOTE_ADDR'].

Всё.

zer0ska
26.06.2008, 18:19
Разве можно доверять $_server['remote_addr']?
А если в заголовке передавать неверный ip?
То и $_server['remote_addr'] - будет неверный

remote_addr берется из заголовков пакета методами php его подделать нельзя, но можно подделать ip адрес в пакете с помошью perl raw_socket (используется в Ddos ) .
в заголовках можно поделать client_ip но remote_addr от этого не изменится.
не уверен но вроде нельзя заделать ип в пакете не подходящий под формат [0-9].[0-9].[0-9].[0-9]

Whirt
26.06.2008, 18:49
Во первых, SQLHACK уже поставил жирную точку, думаю обсуждать далее бессмысленно, всем и так все ясно.

но можно подделать ip адрес в пакете с помошью perl raw_socket (используется в Ddos ) .


Ты немного не понял. Да, это возможно, например в UDP-флуде, TCP SYN флуде итд.
Т.е. там факта соединения впринципе нет, просто хост закидывается пакетами.
Когда же ты соединяешься, то сервер<-->клиент перекидывается номером последовательности (sequence number), и подтверждая тем самым подлинность соединения.

з.ы. писал по памяти, поправьте, если где ошибся :)

ShAnKaR
26.06.2008, 19:26
подменить можно в нескольких случаях:
а) если версия php уязвима , через массив $_GLOBALS в request
в) если в скрипте до этого используется перенос request в глобальную область, например через ф-ю extract() и тп

вобще во многих движках проверяется все равно на валид это значение.
PS хотя на счет первого сто % не скажу но вроде так было.

Дикс
27.06.2008, 07:36
Из темы делаю вывод что проверять $_server['remote_addr'] не имеет смысла.
Всем спасибо.

BuzzSaw
27.06.2008, 09:07
Подделать можно на уровне Tcp/ip

AHTOLLlKA
23.05.2009, 18:21
да, по идее сам пакет потделать можно..
но вот инфа обратно уйдет по тому .. потделаному ИП...
а если там текст то я хз... может и проверяться переменная..

Pashkela
23.05.2009, 19:31
Естественно нельзя. Те, кто говорит, что можно, просто никогда этого не делали и не понимают ОЧЕВИДНОЙ разницы между

X_FORWARDED_FOR

и

$_SERVER['remote_addr']

потому что не обладают достаточной квалификацией

ЗЫЖ Ну кроме гринов и выше, ес-но

Sharky
23.05.2009, 20:22
хватит архиологией заниматься..тему уже изжевали как только можно...