IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

网络安全焦点之真实IP带来的安全隐患

2007年02月01日
/

让我们看一段 ASP 代码先:

Function getIP()
Dim strIPAddr as 
string
If 
Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR 
InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 
Then

strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf 
InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 
Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, 
InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf 
InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 
Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, 
InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else

strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = 
Trim(Mid(strIPAddr, 1, 30))
End Function

这段代码的功能是得到客户端真实IP,也就是当客户端使用了透明HTTP代理的时候取得真正的客户端IP;匿名代理返回代理IP;无代理返回客户端IP。

想一下,为什么该代码能够从透明代理那里得到真实的IP呢?莫非透明代理服务器会发送我们的真IP?本地搭建一个透明代理,抓包分析之:

GET /test/ipSpoof/test.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 
TencentTraveler ; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive
Cookie: tc_total_cookie_datetime_14734=2006-5-29%2010%3A45%3A26; 
PJBlog25Setting=ViewType=list; 
ASPSESSIONIDQQQGQMDQ=HLGHFEADMMDPHAFJDHBLBOPD
X-Forwarded-For: 10.0.0.54

哈哈,原来我们的真正IP被服务器发送出去了。那么,如果我们修改X-Forwarded-For的值再提交的话……嘿嘿,这样就可以伪造任意的“真实”IP啦。

伪造了“真实”IP,可以做很多事情,最简单就是以任意IP发表评论,要是管理员看到一个123.456.789.000的IP一定会被你郁闷到的。

更高级点,应该可以实现突破IP限制、跨站和SQL注射,当然需要结合具体的程序代码来看了。

发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

Power架构产品创新 IBM推动其本土化发展
Power架构产品创新 IBM推动其本土化发展自从1990年,IBM推出基于RISC系统的新产品线RS/6000(现称eServer p系列)之后,...
WAF:高校Web应用安全守护者
WAF:高校Web应用安全守护者最近几年高校网站被攻击的事件时有发生,造成了不良影响,因此越来越多的高校开始...

本类热点