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

Discussion in 'PHP' started by Дикс, 26 Jun 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    надо ли его проверять на валидность айпи?
     
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    нет
     
  3. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Разве можно доверять $_server['remote_addr']?
    А если в заголовке передавать неверный ip?
    То и $_server['remote_addr'] - будет неверный
     
  4. Exlibris

    Exlibris Elder - Старейшина

    Joined:
    26 Feb 2007
    Messages:
    359
    Likes Received:
    394
    Reputations:
    27
    Naydav если такой умный то скажи пожалуйстиа способ по твоему опра\еделить "верный айпи"
     
    1 person likes this.
  5. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    remote_addr в заголовке передать нельзя
     
  6. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Я нахожусь по ip-адрессу 177.55.67.288 , а передаю в заголовке 10.10.10.10

    Даже в квесте античата есть такое задание, 4 или 5 левел, если не ошибаюсь
     
    1 person likes this.
  7. Exlibris

    Exlibris Elder - Старейшина

    Joined:
    26 Feb 2007
    Messages:
    359
    Likes Received:
    394
    Reputations:
    27
    епт ну через ремоте_аддр и придет 10.10.10.10 и каким образом ты собрался узнать 177.55.67.288...
    --
    Так что уже отвтили, расслабся
     
  8. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    В том то и дело, что придет 10.10.10.10, а не реальный айп

    Ты вопрос прочитай
    Да можно
     
  9. Exlibris

    Exlibris Elder - Старейшина

    Joined:
    26 Feb 2007
    Messages:
    359
    Likes Received:
    394
    Reputations:
    27
    Друг это ты вопрос прочитай и вникни в его смысл. Ты прочитал название темы если что =/
    А проверять на валидность нет смысла, потому что если 10.10.10.10 придет как ремоте_аддр, то 177.55.67.288 ты уже никак(формально, в рамках данного вопроса) не узнаешь
     
  10. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    :eek: хуясе о_О.
    ну я читал (не помню где уже), что можно при определенных условиях обмануть сервак при передаче модифицированного X_FORWARDED_FOR, но чтобы подменять REMOTE_ADDR, ... хмм... можно линк у тебя попросить. или описание)

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

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    я имел ввиду проверить не на валидность, а на отсутствие вредоносного кода в нём.
    тем не менее слепил вот такой говнокод, просьба помидорами не закидывать:

    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;
        }
     
  12. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Whirt
    Квест Античат
    Задание -
    С помощью проги - InetCrack
     
    #12 Naydav, 26 Jun 2008
    Last edited: 26 Jun 2008
  13. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    не путай с дополнительными заголовками !!!
     
  14. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Дикс
     
    1 person likes this.
  15. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Naydav, в квесте античата надо подделать x_forwarded_for, и отношения к ip_addr это никакого не имеет. Не надо утверждать то чего не знаешь. (Кстати уже второй раз)

    2Дикс, в ip_addr ты не передашь ничего кроме ип адреса. Другое дело юзер агент.
     
    #15 .Slip, 26 Jun 2008
    Last edited: 26 Jun 2008
    2 people like this.
  16. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    .Slip, +1
    Я так и сказал выше, но все же для уверенности глянул в описание InetCrack (ну мало ли ? :)
     
  17. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    Собственно давайте поставим точку.
    $_SERVER['REMOTE_ADDR'] сюда записывается IP адрес, машины которая запрашивает, скрипт, и заполняется он информацией которую передаёт вебсервер к ПХП.

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

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

    Всё.
     
    _________________________
    2 people like this.
  18. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    remote_addr берется из заголовков пакета методами php его подделать нельзя, но можно подделать ip адрес в пакете с помошью perl raw_socket (используется в Ddos ) .
    в заголовках можно поделать client_ip но remote_addr от этого не изменится.
    не уверен но вроде нельзя заделать ип в пакете не подходящий под формат [0-9].[0-9].[0-9].[0-9]
     
  19. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    Во первых, SQLHACK уже поставил жирную точку, думаю обсуждать далее бессмысленно, всем и так все ясно.
    Ты немного не понял. Да, это возможно, например в UDP-флуде, TCP SYN флуде итд.
    Т.е. там факта соединения впринципе нет, просто хост закидывается пакетами.
    Когда же ты соединяешься, то сервер<-->клиент перекидывается номером последовательности (sequence number), и подтверждая тем самым подлинность соединения.

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

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    подменить можно в нескольких случаях:
    а) если версия php уязвима , через массив $_GLOBALS в request
    в) если в скрипте до этого используется перенос request в глобальную область, например через ф-ю extract() и тп

    вобще во многих движках проверяется все равно на валид это значение.
    PS хотя на счет первого сто % не скажу но вроде так было.
     
    #20 ShAnKaR, 26 Jun 2008
    Last edited: 26 Jun 2008