讲解sqlserver数据库的触发器安全隐患

讲解sqlserver数据库的触发器安全隐患

ID:20837717

大小:51.50 KB

页数:3页

时间:2018-10-16

讲解sqlserver数据库的触发器安全隐患_第1页
讲解sqlserver数据库的触发器安全隐患_第2页
讲解sqlserver数据库的触发器安全隐患_第3页
资源描述:

《讲解sqlserver数据库的触发器安全隐患》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、讲解SQLServer数据库的触发器安全隐患>>教育资源库  触发器权限和所有权  CREATETRIGGER权限默认授予定义触发器的表所有者、sysadmin固定服务器角色成员以及db_oin固定数据库角色成员,并且不可转让。  需要的环境  本文需要的环境是已经获取了sql服务器的以上其中一个权限,目的是为了留下隐蔽的后门,不被管理员发现。即使发现了也是加密的(可以破解,不过有些管理员不懂,也不会注意,相关信息google下)。  触发器是在对表进行插入(insert)、更新(update)或删除(

2、delete)操作时,自动执行的存储过程。最常见用于执行敏感数据操作时做历史记录。  本文以动网论坛dvbbs为例,我们已经拿到了db_odshell,就不再本文范围了,相信读过本文后,只要有系统权限,作个系统的后门也是简单的。先回想一下通常我们使用数据库时要做什么和关心什么。  为什么要使用触发器作后门  管理员首先会把sql文件执行下,然后导入mdb的内容,平时使用顶多备份下,还原下。通常不会有人去看触发器的内容,查看触发器可以使用命令execsp_helptrigger'dv_admin&

3、#39;,或者在企业管理器中选择管理触发器。因为动网根本没有用到触发器,也没有提到触发器,所以动网的管理员不会去看的。于是我们在里面写的内容就相对安全了。  思路  触发器主要是用来做历史记录的,当然可以把管理员更改密码和添加用户的历史记录下。放进一个管理员通常不会注意的、普通用户又可以看到的地方。  动网的密码有md5加过密的,加密的操作是asp程序在服务器上来完成的,等数据库拿到数据的时候已经是加过密的了。但是动网同时把密码以明文方式放入dv_log表中,就给了我们方便。只要拿到dv_log表中l_

4、content字段的内容,然后判断是否管理员在执行敏感操作,后门思路就形成了。  使用过程――代码解析  代码片断:创建触发器。createtriggerdv_admin_historyonDv_logail,字段类型:nvarchar(255)。汪财的email,使用时需要转换类型。  4、Userinfo,字段类型:text。汪财的用户资料。该字段很特殊,有很多,每一对之间都有着不同的含义。动网很懒的,为了避免字段太多,就把一堆信息全都放入一个字段里,用分开,当查询某一项信息时,取出来全部,然后分割

5、下,就是需要的数据了。  解决的问题:  1、如果都放满了。  理论上,如果我们看到了第一个字段有了东西,就应该拿笔记下来,然后删除掉。触发器会自动检查大小后继续使用。再次强调下,本文例子针对动网,大家应该具体问题具体分析。  2、管理员的日志中,有很多日志,怎么判断它就是在记录更改密码。  在管理员操作用户时,当然会在user.asp或者admin.asp中操作,所以我们判断条件需要:  selectpassinfo=l_contentfrominsertedin.asp')  在l_tous

6、er为user.asp或者admin.asp时,说明管理员在操作(查看,更新,删除)用户或者管理员。在l_type=1时,说明执行了更新操作,l_content字段里面有密码(如果管理员更新了密码,或者新建了帐户)。因此,查询inserted表中的l_content,赋值给passinfo代码片断:更新汪财的usersign字段。if(len(usersign)<150orusersignisnull)beginif(usersignisnull)setusersign=''set

7、passinfo=usersign+passinfoupdateDv_Usersetusersign=passinfoe=usernamemittranreturnendend  首次更新时,usersign字段里没有内容,而SQLServer里null加任何数都是null,所以需要判断isnull之后,给null赋值为一个空格。其他几个字段的方法和这里大同小异,只是一个转换nvarchar和的组合时多了点。最后判断如果字段内容太多就不再写了,为了提高性能,也可以把最后的判断写在前12下一页>>>>这篇

8、文章来自..,。面,一旦数据过多,就不需要再继续执行了。  首次更新时,汪财的usersign字段里没有内容,而SQLServer里null加任何数都是null,所以需要判断isnull之后,给null赋值为一个空格。其他几个字段的方法和这里大同小异,只是一个转换nvarchar和的组合时多了点。最后判断如果字段内容太多就不再写了,为了提高性能,也可以把最后的判断写在前面,一旦数据过多,就不需要再继续执行了。上一页12>>>>这篇文章来自.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。