Skip to main content

MSSQL的利用

MSSQL

Microsoft SQL 服务器在 Active Directory 基础设施中很常见,不仅因为 SQL 服务器是 Web 应用程序典型的后端数据库服务器,而且还因为它可以与 Active Directory 和 Kerberos 认证无缝集成。在渗透测试或红队活动中,Microsoft SQL 服务器可能是攻击者的主要目标,原因是它通常存储着敏感数据,并且可以为攻击者提供对组织基础设施的访问。当 SQL 服务器集成到 Active Directory 环境中时,特定的攻击向量是可能的。

根据之前的枚举,我们知道用户 svc_sql 是环境中 SQL 服务器实例的服务帐户,而 Srv01 是 Web01 上应用程序的后端数据库服务器。让我们了解更多关于 SQL 服务器枚举和利用的信息。


SQL 注入

与 SQL 服务器进行交互的一种方法是利用 SQL 注入漏洞。运行在 Web01 上的 .NET 应用程序容易受到 SQL 注入的攻击,我们利用了它并在 Srv01 上获得了立足点。

 

基于凭证的攻击

考虑到服务帐户 svc_sql 设置了 SPN,因此我们可以对其进行 Kerberoasting,以获取 KRB5TGS 哈希并破解它。如果 svc_sql 的密码不够强大,我们可以破解它。在我们的例子中,svc_sql 的密码(jkhnrjk123!)不在 rockyou 字典中,因此我们无法破解它以获取明文密码。然而,当试图攻击 SQL 服务器服务帐户时,我们应该考虑 Kerberoasting 攻击。

此外,我们可以使用响应者设置一个恶意 SMB 服务器,并使用 xp_dirtree 访问它。这样,响应者将捕获 NetNTLMv2 哈希。原始语句如下


代码执行

xp_cmdshell

如果当前登录是 sysadmin,我们可以在 SQL 服务器上执行任意命令。有多种方法可以实现这一点,最臭名昭著的是 xp_cmdshell。它是 Microsoft SQL Server 的一部分,是一个系统存储过程。它允许用户在 SQL Server 中执行系统命令。这对于运行脚本或与操作系统交互等任务可能很有用。然而,它也可以是一种强大的内置功能来攻击目标 SQL 服务器。

要执行命令,我们应确保配置选项显示高级选项和 xp_cmdshell 是启用的。启用它们的原始语句是:

OLE Automation Procedures

考虑到 xp_cmdshell 因被攻击者滥用而臭名昭著,它受到严格监控。因此,我们应该了解其他方法来执行系统命令。OLE 自动化是一种技术,允许应用程序将对象链接到另一个应用程序。OLE 自动化过程是 SQL Server 中的存储过程,它们提供了对 OLE 自动化对象和方法的访问。这些过程包括 sp_OACreate 和 sp_OAMethod。我们可以使用 sp_OACreate 创建一个 OLE 自动化对象的实例,并使用 sp_OAMethod 调用 OLE 自动化对象的方法。我们可以利用它们来执行系统命令。

我们应该首先通过执行以下语句启用 OLE 自动化:

 

CLR

我们还可以使用 CLR 来实现系统命令执行。CLR(公共语言运行时)是 .NET 框架提供的运行时环境,使我们能够将 .NET DLL 文件导入到 SQL 服务器并执行 DLL 中的方法。这样做的好处是我们不会将文件写入磁盘。

首先,我们应该通过执行以下语句启用 CLR 并打开 TRUSTYWORTHY 属性:

 

特权提升



横向移动

在 Microsoft SQL Server 中,SQL 链接或链接服务器指的是连接到不同服务器上的数据库并查询其数据的能力。这在从多个数据库访问数据时非常有用,但这些数据库位于不同的服务器上。然而,攻击者可以利用它横向移动到其他 SQL 服务器。

我们可以使用 PowerUpSQL、SqlRecon 或原始查询来枚举 SQL 链接。使用 PowerUpSQL,执行以下命令以检查 SQL 链接: