驳最近出现的风讯4.0漏洞
作者:sobiny[B.C.T]
首先我要说明的是,我驳这个漏洞,只是针对这个事情而言,不是针对某个人。只希望借这个事情告诉大家,技术这个东西不只靠的是理论,还要靠实践,就像找漏洞一样,不是你看到这个地方似乎过滤得不严了,然后这个地方就存在漏洞,然后想当然的写出漏洞利用方法。也许更多的牛人也都没去实践,可能就初略看了一眼,就争相转载。发布漏洞。
现在我们先来看看我手上拿到的介绍风讯4.0漏洞的版本。
以下是对方的文章:
文章标题:风讯4.0未公开Bug
文章作者:WhyTt
漏洞发现时间:2006年10月24日
个人Blog:http://why_tt.mblogger.cn //个人
个人Blog:http://whytt.mblogger.cn //技术
影响版本:ACCESS和MSSQL
前段时间网上流行的SQL注入是利用伪造代理IP来实施攻击,这个HTTP_X_FORWARDED_FOR在一段时间内倍受人们关注,今天在看风讯4.0 的时候也发现这样一个注入点,可笑的是程序员是考虑到对HTTP_X_FORWARDED_FOR的过滤,但是在带入查询时,好象是忘记把过滤的变量带入,而直接带入了没过滤的VisitIP。
下面是分析代码:
在Stat/Index.asp文件中第18行,
VisitIP = request.ServerVariables("HTTP_X_FORWARDED_FOR")
直接把HTTP_X_FORWARDED_FOR赋值给VisitIP变量
在文件第61行中
EnAddress = EnAddr(EnIP(VisitIP))
这里用了2个函数对VisitIP进行过滤,但是看最后的赋值却给了EnAddress这个变量,而下面第62行的查询却又直接带入的是没有过滤的VisitIP变量,所以在这里就可以对其进行SQL注入。
Set RsCouObj = Conn.Execute("select ID from FS_SS_Stat where IP='"&VisitIP&"'")
在这个文件中又有多处查询用到VisitIP这个变量,其补救方法也很简单,就是把EnAddress = EnAddr(EnIP(VisitIP))改成VisitIP=EnAddr(EnIP(VisitIP))
这里可以通过抓包在数据包中增加
HTTP_X_FORWARDED_FOR:123'+and+user>0–
这样来注入,如果在access版本中,那么就可以通过
HTTP_X_FORWARDED_FOR:123'+and+1=1+and+'1'='1这样的形式来注入
其中可以用union来暴字符内容。
OK,具体就等你来实现吧,多动手。
BY
WhyTt
原作者是WHYTT!他也在群里,论坛帐号是伯虎,进不了牛X版。。。。刺头方便就给他开通下权限吧…
以上是对方的文章。
首先我们来看看stat\index.asp这个文件。
先说他的第一个错误。
第一EnAddr(EnIP(VisitIP))这个过程确实没有把值赋给VisitIP,
但是:EnIP这个过程,好象作者并没有注意到!!
我把这个过程贴出来大家看看。
function EnIP(ip)
dim ip1,ip2,ip3,ip4
ip=cstr(ip)
ip1=left(ip,cint(instr(ip,".")-1))
ip=mid(ip,cint(instr(ip,".")+1))
ip2=left(ip,cint(instr(ip,".")-1))
ip=mid(ip,cint(instr(ip,".")+1))
ip3=left(ip,cint(instr(ip,".")-1))
ip4=mid(ip,cint(instr(ip,".")+1))
EnIP=cint(ip1)*256*256*256+cint(ip2)*256*256+cint(ip3)*256+cint(ip4)
end function
EnIP(VisitIP),其实只要VisitIP不是一个包含3个点且3个点分割的4个字符串不是数字。那么,程序就会在cint或者left处爆运行的错误,程序运行到这个位置的时候就停了。后面的代码都不会执行了?何来注入?
再看看第二个错误:
提交的参数错误。
原文的原话如下:
"
这里可以通过抓包在数据包中增加
HTTP_X_FORWARDED_FOR:123'+and+user>0–
"
任何一个玩过HTTP头注入的人,应该都会明白的知道,他这样提交的参数。根本就不能获得。
所以我又一次说作者没有经过实践。。
第三个错误。
stat\index.asp这个文件中的代码中有一个很严重的语法错误。
这个文件根本就是不能运行的。
何来注入??
其实风讯4.0中确实有HTTP_X_FORWARDED_FOR的伪造注入。不过不是在这个地方。
在投票那里。
有兴趣的朋友自己去看吧。。
再一次说明一下,我这个文章对事不对人。
我发这个文章只是想说这个东西确实是没有经过实践的。
我不想攻击哪个人,请被驳的作者也不要来批判我。
对于技术,本来就应该保持一个更严谨的态度?难道不是吗?
另外,技术不是秘密,应该共享,但是涉及到一个漏洞的问题
请作者在发出来前,还是三思而后行。