讲解SQL Server数据库触发器的安全隐患
作者:佚名 来源:赛迪网 发布时间:2009-02-24 17:46: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字段的内容,然后判断是否管理员在执行敏感操作,后门思路就形成了。
猜你喜欢
- 利用ASP从远程服务器上接收XML数据<% dim objXML dim objRootElement dim&n
- MySQL Innodb 引擎优化,InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoD
- 很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---
- 如今,基本每个网站都会需要到Tab切换展示内容的滑动门效果应用,这种效果可以在更少的页面空间内,展示更多的网站内容,节约空间,方便用户集中操
- 减少HTTP请求,是可以提高网站速度的,把所有的背景图像都放到一个图片文件中,然后通过CSS的background-image和backgr
- 元数据简介元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆
- 实现了宽度、高度、透明度的渐变,还能以高度宽度中点为中心,还扩展成以任意点为中心渐变(实例中以点击点为中心)。<!DOCTYPE ht
- 有个简单的方法,使用display:table, display:table-row and display:table-cell 就可以实
- 数据类型是所有开发语言的基础,JavaScript虽然是一个弱类型的脚本语言,但是在数据类型上也有很多讲究的,看了淘宝UED玉伯的一篇文章,
- 代码如下:USE TestDB declare @conversation uniqueidentifier while exists (s
- 用下列代码判断表单提交到服务器的数据是否有谈话内容,如果没有的话就不作处理了:if len(usersays)<>0&
- 代码如下:SELECT [StartDate] FROM [dbo].[udf_Week](2012,2012) WHERE [
- 删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中select distinct&nbs
- SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A')
- 新手,看到很多网页上有显示/隐藏的菜单,可以显示隐藏层的同时控制FLASH的播放与停止。找了好久都找不到这个功能。。。还望高人指点当点击时就
- IEBlog公布了开发中的Internet Explorer 8 Beta2版本的最新功能.IE8 Beta2在第一个版本的基础上做出了很大
- Asp中Server.ScriptTimeOut属性需要注意的一点Server.ScriptTimeout?这个属性给定Asp脚本执行的最大
- 假设mysql 安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是database_name,在d:盘根目录下
- 注:文中未表明的地方output 输出都是基于IE6.0,其中表明FF的地方为Mozilla Firefox2.0,还要注意文中的大小写ja
- ACCESS数据库中Field对象的caption属性(也就是标题)是用来设置数据字段的标题,在正常的数据库设计中为了保持维护的便利性,许多