curl伪造ip访问网站

时间:2013-10-27 | 分类:个人日志,学习园地 | 浏览:33309 | 评论:16 | 发表评论

从西电一道信息安全技术比赛的题目说起吧,题目是《Black Hat》。
访问答题网页,提示信息为:"Make sure that you are from Vatican."。
翻译成中文是:"请确认你来自梵蒂冈"。

意思是需要用梵蒂冈的ip访问才能成功,找梵蒂冈的代理服务器是不可行的,但是可以通过伪造梵蒂冈的ip来绕过检测。
由于某些网站是通过请求头的"X-Forwarded-For"值来获取访问者的ip,而请求头是可以修改的,所以很多网站都可以通过伪造请求头来绕过ip检测。
具体原理可以看这篇文章:http://zhangxugg-163-com.iteye.com/blog/1663687

在搜索引擎搜一下"梵蒂冈ip",可以得到一个梵蒂冈ip:"212.77.1.243"。
利用火狐浏览器的"Moify Headers"插件可以修改请求头信息。
下图是在插件中把请求头的"X-Forwarded-For"修改为"212.77.1.243":

点击Start启用插件后再访问网页,提示信息变成:"The Requested URL was not found on this server. Apache Server at www.blackhat.com Port 80"。
根据提示信息,需要访问这台服务器上配置的www.blackhat.com网站。

当我们访问一个网站时,比如www.blackhat.com,dns服务器会先通过域名解析出域名指向的服务器ip地址,再向该服务器ip发送http请求。一个服务器上可以存放多个网站,那么通过不同的域名来访问该服务器时,服务器是怎么区分不同的域名呢?答案就是通过http请求头的"Host"字段。
那么要访问答题服务器上配置的www.blackhat.com网站的话,只需把请求头的"Host"值改为"www.blackhat.com"就行了。修改后再访问网站就得到了通关的key。

下面再来看看某个discuz论坛,我把"X-Forwarded-For"修改为"8.8.8.8"后注册一个帐号,结果如下:

可见,该网站存在ip伪造的问题,事实上很多论坛都是这样。

再接一个新手任务,该任务要求有5个ip访问推广地址:

使用curl可以修改请求头信息,执行下面的php代码,可以瞬间完成任务:

<?php
for ($i = 0; $i < 5; $i++) {
    task();
}

function task() {
    $url = "http://www.xxx.com/?fromuid=272539";
    $ip = "100.100.".rand(1, 255).".".rand(1, 255);
    $headers = array("X-FORWARDED-FOR:$ip");

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT,  "Mozilla/4.0");
    $src = curl_exec($curl);
    curl_close($curl);
}
?>

标签: ,
本文链接: curl伪造ip访问网站
版权所有: 破博客, 转载请注明本文出处。

16个评论

  1. yehsen
    2015/01/05 17:42:03

    运行没有效果!

    • admin
      2015/01/19 23:43:21

      只有某些服务器配置有问题的网站才有效果

  2. 佳佳君
    2014/12/10 22:44:56

    技能get✓回去以后试试能不能这样来绕过优酷对国外ip的屏蔽

  3. Watson
    2014/08/11 15:33:19

    我用SEA运行了代码没效果,怎么用PHP代码求解!
    :mrgreen: :mrgreen: :mrgreen:

    • admin
      2014/08/11 20:03:59

      SAE是可以执行的,如果没效果可能是网站没有该漏洞

  4. 无名智者
    2014/06/28 11:55:39

    直接上$_SERVER[‘REMOTE_ADDR’]

  5. 清木
    2014/04/26 23:05:26

    博主好文章,我搜索了很多关于利用x-forwarded-for的信息,发觉确实利用的空间非常大,甚至可以利用来SQL注入,可是我在乌云平台,很多这样的漏洞即使被公布出来也并不被厂商重视,真是不理解;此外,我听闻有的应用为了平衡性和对付代理服务器而使用x-forwarded-for,这又是什么意思呢?博主能否解释一下?

    • admin
      2014/04/27 08:00:18

      你好,我的理解是这样的:负载均衡服务器将用户的请求发给web服务器时,web服务器获取到的远程ip是负载均衡服务器的ip,所以负载均衡服务器要用x-forwarded-for记录用户的真实ip以便web服务器可以得到用户ip。
      如果用户使用的代理服务器是透明代理,这时代理服务器会加上x-forwarded-for字段保存用户的ip,所以web服务器可以获取x-forwarded-for的值来得到用户ip。如果用户用的是匿名代理,就不会记录用户的真实ip了。

  6. WordPress主题
    2014/03/10 15:29:47

    学习了 :mrgreen:

  7. osora
    2013/12/08 02:10:37

    话说这chrome插件有相同功能么?
    http://lab.laobubu.net/chromeheaderedit

    • admin
      2013/12/08 18:45:12

      可能吧,不过我没用过

  8. pang
    2013/11/11 15:50:18

    :neutral: 学习中

  9. tennfy
    2013/11/08 15:47:06

    curl的用处多多

  10. 雅荷之家
    2013/11/01 02:49:37

    :!: 学习啦啦啦啦~好厉害

  11. 点点滴滴
    2013/10/30 17:18:02

    学习了,还有沙发我的了 :smile:

发表评论

您的昵称: *

您的邮箱: * (显示gravatar头像)

联系方式: