Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   возможно ли подделать $_server['remote_addr']? (https://forum.antichat.xyz/showthread.php?t=75091)

Дикс 26.06.2008 16:10

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

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

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

PHP код:

   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

хватит архиологией заниматься..тему уже изжевали как только можно...


Время: 05:41