Sql-Server应用程序的高级Sql注入
2009-05-20 15:44:30 来源:WEB开发网
[其他扩展存储]
xp_servicecontrol扩展存储允许用户启动,停止,暂停或者运行服务。
exec master..xp_servicecontrol 'start', 'schedule'
exec master..xp_servicecontrol 'start', 'server'
下面是一些其他有用的扩展存储表:
xp_availablemedia 显示机器上可用的驱动器
xp_dirtree 获得一个目录树
xp_enumdsn 列举服务器上的ODBC数据源
xp_loginconfig 显示服务器的安全状态信息
xp_makecab 允许用户在服务器上创建压缩文件(或者任何服务器可以访问的文件)
xp_ntsec_enumdomains 列举服务器可以访问的域
xp_terminate_process 结束一个给定PID进程
[联合服务器]
SQL-Server提供了一个服务器联合的机制,就是允许一个数据库服务器上的查询操作其他服务器的数据。这些联合设置存放在master..sysservers表里,如果一个相连的服务器使用了'sp_addlinkedsrvlogin'存储过程,一个自动的登陆了的连接已经存在,可以通过它不登陆而访问该服务器。'openquery'函数允许查询在联合服务器上执行。
[用户自定义扩展存储]
扩展存储的API是相当简单的,创建一个带有恶意代码的扩展存储DLL也是相当容易的。通过命令行有很多方法将DLL上传到服务器,还有其他的很多方法包括各种通信机制来自动实现,比如HTTP下载和FTP脚本。
一旦DLL文件出现在服务器上SQL-Server可以访问,这不一定需要SQL-server本身,攻击者可以通过下面添加扩展存储(这里,我们的恶意扩展存储是个用来操作服务器的文件系统小的木马)
sp_addextendedproc 'xp_webserver', 'c:\temp\xp_foo.dll'
扩展存储就可以通过一般的方法调用:
exec xp_webserver
一旦这个扩展存储执行过,可以这样删除它:
sp_dropextendedproc 'xp_webserver'
[向表中导入文本文件]
利用'bulk insert'语句,可以把一个文本文件的内容插入进一张临时表,我们简单的创建一个表:
create table foo( line varchar(8000) )
然后执行bulk insert来插入数据来自于一个文件:
bulk insert foo from 'c:\inetpub\wwwroot\process_login.asp'
通过上面介绍过的错误信息技巧就可以得到数据,或者通过一个'union'查询,把文本数据作为查询的数据返回。这对于获得存储在数据库里的脚本如asp脚本很有用。
[利用BCP创建文本文件]
利用和'bulk insert'作用相反的技术创建任意的文本文件非常简单。不过需要一个命令行工具'bcp'('bulk copy program'),因为bcp在SQL-Server进程外访问数据库,它需要一次登陆。但是这不难,因为攻击者都可以创建一个;或者如果服务器配置使用了“完整性”安全模式,攻击者可以利用它。
命令行格式如下:
bcp "Select * FROM test..foo" queryout c:\inetpub\wwwroot\runcommand.asp -c -Slocalhost -Usa -Pfoobar
'S'参数是要运行查询的服务器,'U'参数是用户名,'P'是密码,这里的密码是'foobar'。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接