IP-spoofing на PHP

Discussion in 'PHP' started by Pashkela, 4 Mar 2009.

  1. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Статья:

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

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

    PHP:
    <? 
     @
    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;
    ?>
    ключевая строчка здесь - это

    PHP:
    $headers .= "X-Forwarded-For: 44.55.66.77\n";
    и даже 2ip.ru на эдакую хрень выдал вот что:

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

    [​IMG]

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

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Это не ip-spoofing.
     
  3. SVAROG

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

    Joined:
    13 Feb 2007
    Messages:
    424
    Likes Received:
    86
    Reputations:
    -1
    он же обманывет ту систему заставляя её думать что это его ИП, так что спуфингом это можно назвать
     
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 BlackSun:

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

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

    [​IMG]

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

    PHP:
    Real IP44.55.66.77
    более чем красноречива:)
     
  5. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    IP-spoofing это подмена адреса отправителя в заголовках TCP, UDP пакетов, а X-Forwarded-For в хидере http пакета - всего-лишь одно из полей, юзаемое не анонимными проксями для указания действительного адреса пользователя. Если бы благодаря этому полю перезаписывалось значение в REMOTE_ADDR, то да, это был бы спуфинг.
     
  6. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Сорец смотрел? Там примерно следующее:
    PHP:
    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 юзают далеко не всегда.
     
    2 people like this.
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Да, но откуда у меня ощущение, что гугл это схавает, если делать множество запросов и попытаться избежать бана?:)

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

    Ну в общем сами думайте, а я тоже пойду еще чонить придумаю
     
    #7 Pashkela, 4 Mar 2009
    Last edited: 4 Mar 2009
  8. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    558
    Likes Received:
    306
    Reputations:
    27
    Это бага кодеров которые слишком доверяют X заголовкам HTTP, есть еще и HTTP_X_REAL_IP, в движке IPB есть ксати код который имено проверяет эти заголовки, если их нет то уже использует REMOTE_ADDR или HTTP_FROM которые для нельзя перезаписать.
     
    #8 AkyHa_MaTaTa, 4 Mar 2009
    Last edited: 4 Mar 2009
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Да взять тот же снифер от Каника уважаемого - какой IP вы бы сами посчитали реальным? Думается мне на первый бы даже не посмотрели:)
     
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Абалдеть...называется "учим http протокол вместе"
    Pashkela, ты только сегодня узнал, что X-Forwarded-For можно подделать? Ни один нормальный сайт не будет определять ip из http-заголовков. Хотя бывают хостинги, где REMOTE_ADDR по умолчанию пустой, а IP хранится в X-Forwarded-For.
    Это не IP спуфинг а хня...в общем неуважуха, и незачёт...
    P.S. Следующая статья будет "Спуфинг Юзер-агента"?
     
    2 people like this.
  11. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    В некоторых случаях, для разработок СВОИХ проектов, это может быть полезно, например, на одном форуме задали такой вопрос:

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

    ЗЫЖ Так что это именно один из методов ip-спуфинга, чтобы вы там себе не думали.
     
    #11 Pashkela, 4 Mar 2009
    Last edited: 4 Mar 2009
    1 person likes this.
  12. ettee

    ettee Administrator
    Staff Member

    Joined:
    12 Oct 2006
    Messages:
    466
    Likes Received:
    1,036
    Reputations:
    1,065
    Выше сказанное относится к классу Insufficient Process Validation, что является индивидуальной проблемой распространяемого ПО, и не умеет абсолютно никакого отношение к работе IP протокола (так и к Smurf, Spoofing атакам). К сожалению (а может и к счастью) в наше время уделяется совсем мало внимания дополнительным http-заголовкам, а зачастую используется метод "черных" списков которые не в состоянии полностью следить за "легитимным" трафиком, что и приводит к таким конфузам.
     
    _________________________
    #12 ettee, 4 Mar 2009
    Last edited: 4 Mar 2009
    1 person likes this.
  13. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    /threadnav47951-1-10.html
    :)
     
  14. mr.The

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

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    Баян.. Ещё я когда-то в своём сжимающем php прокси делал такую фичу..
    В этом заголовке можно любые данные передавать. Я таким образом нашел на несколькох сайтах xss и sql-inj )

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