本类共有 307 篇文章,今日更新 0

真实IP带来的安全隐患

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 18:44:48 | 浏览: 人次 ]

让我们看一段 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注射,当然需要结合具体的程序代码来看了。

广告位