SQL Server数据库触发器安全隐患解析

作者:佚名 来源:赛迪网 时间:2009-03-25 12:56:00 

触发器权限和所有权

CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让。

需要的环境

本文需要的环境是已经获取了sql服务器的以上其中一个权限,目的是为了留下隐蔽的后门,不被管理员发现。即使发现了也是加密的(可以破解,不过有些管理员不懂,也不会注意,相关信息google下)。

触发器是在对表进行插入(insert)、更新(update)或删除(delete)操作时,自动执行的存储过程。最常见用于执行敏感数据操作时做历史记录。

本文以动网论坛dvbbs为例,我们已经拿到了db_owner权限(注意:并不是说dvbbs本身有漏洞)。因为只是db_owner权限,所以读者想去执行“xp_cmdshell”,就不再本文范围了,相信读过本文后,只要有系统权限,做个系统的后门也是简单的。先回想一下通常我们使用数据库时要做什么和关心什么。

为什么要使用触发器作后门

管理员首先会把sql文件执行下,然后导入mdb的内容,平时使用顶多备份下,还原下。通常不会有人去看触发器的内容,查看触发器可以使用命令“exec sp_helptrigger 'dv_admin'”,或者在企业管理器中选择“管理触发器”。因为动网根本没有用到触发器,也没有提到触发器,所以动网的管理员不会去看的。于是我们在里面写的内容就相对安全了。

思路

触发器主要是用来做历史记录的,当然可以把管理员更改密码和添加用户的历史记录下。放进一个管理员通常不会注意的、普通用户又可以看到的地方。

动网的密码有md5加过密的,加密的操作是asp程序在服务器上来完成的,等数据库拿到数据的时候已经是加过密的了。但是动网同时把密码以明文方式放入dv_log表中,就给了我们方便。只要拿到dv_log表中l_content字段的内容,然后判断是否管理员在执行敏感操作,后门思路就形成了。

使用过程――代码解析

代码片断:创建触发器。

create trigger dv_admin_history

on Dv_log

with encryption

for insertas

as

触发器需要建立在Dv_log表上,这里放入的是明文密码。我们并不知道管理员密码设置有多长,只能是把里面的有密码的字段内容全部取出。触发器最好是加密的,加密后,管理员即使看到了,也不知道这里是什么东西。在insert(加入)数据时执行触发器。

取出来的值应该放入一个普通用户能看到的地方,这样只要有了普通用户的权限就可以看到密码。动网数据库中,最大并且可以存放数据的字段管理员通常都会看到。所以必须找出来一个管理员不会看,而其他用户也不会注意的地方。

我选择放在一个新建用户的用户信息里(以下通称这个用户为“汪财”,亲切点),这样我们登陆时就可以看到了(注意:登陆时有日志的,记录最后登陆ip,大家自己解决)。

有以下几个字段适于存放:

1、Userphoto,字段类型:varchar(255)。记录了汪财的照片地址。可以存放小于255的数据。

2、Usersign,字段类型:varchar(255)。汪财的签名,如果放这里,汪财就不能发贴了,否则后果自负(发贴会显示签名,地球人都能看到)。

标签:SQL,Server,数据库,触发器,安全隐患,解析
0
投稿

猜你喜欢

  • 菜鸟大讲堂:如何查看mysql版本的四种方法

    2009-09-05 09:54:00
  • 在Dreamweaver中自动设置网页的水平线颜色

    2007-02-03 11:30:00
  • ASP和SQL结合处理时间应用

    2008-06-09 15:15:00
  • 利用GAE&Google Gears做了一个简单的AJAX代理

    2009-04-29 12:42:00
  • 配置SQL Server以允许远程连接

    2010-03-08 13:12:00
  • 关于JS中变量的显式申明和隐式申明

    2008-09-12 13:04:00
  • MySQL中SQL的单字节注入与宽字节注入

    2009-03-25 14:49:00
  • 在firefox里如何实现firebug的DOM inspect选择功能?

    2010-09-03 18:20:00
  • 如何动态添加Form项?

    2009-11-18 20:44:00
  • JavaScript大牛:Douglas Crockford

    2009-03-31 12:06:00
  • FCKeditor新版本发布,并更名为CKeditor

    2009-09-08 13:09:00
  • 支付宝lab logo设计创意发想

    2009-11-12 12:44:00
  • SQL Server 自动化管理分区设计方案(图解)

    2011-07-21 17:25:04
  • asp如何验证IP地址?

    2010-06-10 18:37:00
  • asp中用insert into语句向数据库插入记录(添加信息)的方法

    2011-02-05 10:46:00
  • asp之日期和时间函数示例

    2008-04-13 06:50:00
  • 浏览器用户体验:Firefox初体验 VS The world

    2008-08-02 11:58:00
  • MySQL的6种日志详解

    2008-12-18 14:36:00
  • 修改mysql最大连接数的方法

    2010-03-09 13:57:00
  • 网页制作了解什么是CSS hack?

    2007-10-21 08:52:00
  • asp之家 网络编程 m.aspxhome.com