眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦·斯沃茨(真实人物,神一般的存在)涉嫌利用麻省理工的网络,通过ip伪造从JSTOR中下载了150万篇论文。本文通过firefox看下一个简单的ip伪造是怎样实现的。

1、client的ip是通过http的头部发送到server端的

比方,在打开网址www.baidu.com的时候。通过firebug能够看到请求头部,头部里包括client的信息,比方cookie等。

一般后台获取的clientip的代码为:

php代码:

private function _get_client_ip() {

$ip = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

jsp代码:

public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}

代码片段即是获取clientIP,这段程序会尝试检查 HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, 依据之前的原理说明,以
HTTP_开头的 header,  均属于client发送的内容。那么,假设client伪造 Client-Ip, X-Forward-For,不就能够欺骗此程序,达到“伪造 IP”之目的?

伪造这项值?假设你会敲代码。并了解HTTP协议,直接伪造请求 header
就可以。

或者使用 Firefox的 Moify Headers插件就可以。

2、Modify Headers伪造ip

安装Modify Headers后,加入一个X-Forwarded-For,并填入一个ip,置为可用后,打开对应网页,server就会获取到该伪造ip。

3、站点怎样防护ip伪造

既然能够通过ip伪造,站点怎样过滤这些伪造的ip? 一般做法是在应用server上强制将X-Forwarded-For的值设置为client真实ip,详细操作请自行研究。

网络中存在此漏洞的站点非常多,尤其是一些投票类的站点。通过限制ip(一个ip仅仅能投一次票,或者一个ip仅仅能在一定的时间段投一次票)来限制重复投票的站点。

别人可能会利用此漏洞来伪造ip。突破这样的限制。所以站点开发人员要重视这类安全。

本文部分内容參考了博客构造HTTP请求
Header 实现“伪造来源
IP”

网络安全之IP伪造的更多相关文章

  1. C# 用HttpWebRequest模拟一个虚假的IP伪造ip

    有人会说:IP验证是在TCP层完成的,不是HTTP层完成的,如果伪造IP的话可能连TCP的三次握手都完不成.我这里说的不是完全意义的伪造.如果你使用透明代理上网,那么在透明代理发送给服务器端的HTTP ...

  2. bugkuCTF-管理员系统(IP伪造)

    题目地址:http://123.206.31.85:1003/ 登进去是一个管理员后台登录的样子 试了sql的万能密码,发现进不了,而且下面还报错了ip禁止 禁止了我们的ip,但是他本地的ip肯定没有 ...

  3. Jmeter下进行ip伪造

    转至https://blog.csdn.net/xingchao416/article/details/53506051 1.首先获取一些闲置的ip地址,且必须为固定地址,不能是自动获取的地址,方法: ...

  4. PHP获取IP地址的方法,防止伪造IP地址注入攻击

    PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...

  5. [WEB安全]伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP

    0x01 简介 一个用于伪造ip地址进行爆破的BurpSuite插件,burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景. 0x02 功能 伪造指定ip 伪造本地ip 伪造随机ip 随 ...

  6. 服务端如何获取客户端请求IP地址

    服务端获取客户端请求IP地址,常见的包括:x-forwarded-for.client-ip等请求头,以及remote_addr参数. 一.remote_addr.x-forwarded-for.cl ...

  7. 服务端如何安全获取客户端请求IP地址

    服务端如何获取客户端请求IP地址,网上代码一搜一大把.其中比较常见有x-forwarded-for.client-ip等请求头,及remote_addr参数,那么为什么会存在这么多获取方式,以及到底怎 ...

  8. CDN 环境下获取用户IP方法

    CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...

  9. 图解TCP/IP第五版 -- 文件夹

    非常多年前买过<TCP/IP具体解释>3卷,当时可能根本没看,也可能是看了又忘了,没有留下什么印象,当时的书也当做废品卖了. 卖书时的感觉貌似是.买了太多的书,基本都没看,搬家搬来搬去的麻 ...

随机推荐

  1. viewDidLoad、viewDidUnload、viewWillAppear、viewDidAppear、viewWillDisappear 和 -viewDidDisappear的区别和使用

    首先看一下官方解释: - (void)loadView; // This is where subclasses should create their custom view hierarchy i ...

  2. SSL 中证书能否够使用IP而不是域名

    前言:曾经听别人说生成证书时能够用IP地址.今天用样例证实了下用IP地址是不行的. 情景一: 生成证书时指定的名称为IP地址 样例是做单点登录时的样例.web.xml中配置例如以下: <!--该 ...

  3. Delphi事件的广播 good

    明天就是五一节了,辛苦了好几个月,借此机会应该尽情放松一番.可是想到Blog好久没有写文章,似乎缺些什么似的.这几个月来在项目中又增长了许多经验,学到许多实际应用的知识.不如把一些比较有用的记录下来, ...

  4. [读书笔记]黑客与画家[Hackers.and.Painters]

    (书生注:这本书写的不错.针对程序员,可以带来不同角度的想法,有助于反思自己的程序员工作.我甚至从中发现了自己爱用铅笔的原因...  尤其是其中关于黑客的定义,包括黑客认为的乐趣和目的,让人更深层次思 ...

  5. HealthKit教程 Swift版:锻炼信息

    原文:HealthKit Tutorial with Swift: Workouts 作者:Ernesto García 译者:Mr_cyz ) 欢迎回到我们的HealthKit系列教程! 在我们系列 ...

  6. javascript学习初衷

    很久没有过来写东西了,由于要做小网页,介于不懂javascript,一味的去爬其他站点的代码下来,却不能自由组合,控制,达到自己想要的效果, 于是只能沉下心,javascript从头学起,还记得张老师 ...

  7. TWinControl的消息覆盖函数大全(41个WM_函数和31个CM_函数,它的WndProc就处理鼠标(转发)、键盘(取消拖动)、焦点、和WM_NCHITTEST一共4类消息)

    注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中): 其中TWinControl对TControl有10个消息进行了覆盖(红色标记),其中有2个是WM_消息,8个是CM_消 ...

  8. Delphi使用大图标编译程序

    在Windows Vista. Windows7以上Windows系统中可以支持大图标显示了,但是Delphi编译出来的程序却只能显示32x32的图标,这使Delphi编译的程序看起来很不专业.下面就 ...

  9. WM_CLOSE、WM_DESTROY、WM_QUIT学习总结(点击关闭按钮会触发WM_CLOSE消息,DestroyWindow API会触发WM_DESTROY和WM_NCDESTROY消息,MSDN上写的很清楚)

    WM_CLOSE:关闭应用程序窗口 WM_DESTROY:关闭应用程序 WM_QUIT:关闭消息循环 只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失). win32应用程序的完整退出 ...

  10. [Cocos2d-x]Cocos2d-x开发中C++调用Object-c

    2013年12月29日 简介: Cocos2d-x开发过程中,难免需要通过C++调用Object-C