真实IP带来的安全隐患
www.hx99.org 阅读:
时间:2007-07-09 整理:华西黑盟
------------------------------------------------------------------ |
让我们看一段ASP代码先:
FunctiongetIP()
DimstrIPAddras
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")
EndIf
getIP=
Trim(Mid(strIPAddr,1,30))
EndFunction
这段代码的功能是得到客户端真实IP,也就是当客户端使用了透明HTTP代理的时候取得真正的客户端IP;匿名代理返回代理IP;无代理返回客户端IP。
想一下,为什么该代码能够从透明代理那里得到真实的IP呢?莫非透明代理器会发送我们的真IP?本地搭建一个透明代理,抓包分析之:
GET/test/ipSpoof/test.aspHTTP/1.1
Accept:*/*
Accept-Language:zh-cn
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;
TencentTraveler;.NETCLR1.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注射,当然需要结合具体的程序代码来看了。
|
|
| --------------------------------------------------------------------------------------------------- |
上一篇:跨站Script攻击和防范 下一篇:多种方法防范非法用户侵入 |
| --------------------------------------------------------------------------------------------------- |
|
|
|
|
|