讲解SQL Server数据库的触发器安全隐患
2007-07-24 09:46:12 来源:WEB开发网触发器权限和所有权
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字段的内容,然后判断是否管理员在执行敏感操作,后门思路就形成了。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››讲解RAW格式数码照片专业处理技法
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
更多精彩
赞助商链接