前两篇文章对 FreeIPA 环境进行了一些列的介绍。而本篇则介绍如果利用现有的资源进行最大化利用。
如果你还没有阅读前两篇文章,你可以在此找到它:
在深入研究攻击路径之前,让我们简单回顾以下我们将在其中进行操作的实验环境。如果你想继续学习,我发不了一篇帖子,详细介绍了如何配置自己的 FreeIPA 环境
在我们深入研究攻击路径之前,让我们先简单回顾一下我们将要操作的实验室环境。如果你想进行一样的操作,可以根据我另外发布的一篇文章进行环境的搭建,里面详细介绍了如何配置自己的 FreeIPA 实验室,当然你也可以自己对此进行研究。可以在这里找到那篇帖子。
一旦配置和创建了实验环境,我们就可以开始了。
在这个练习中,我们的初始权限是受 FreeIPA 管理的一台 Web 服务器的 WebShell 权限。并通过 Poseidon C2 上线。我们的目标是获取该 FreeIPA 域的管理权限,并从 SQL 数据库中带出敏感数据(第二篇文章中,由于错别字,将带出写成了删除)。
考虑到我们的权限,我们现在需要开始进行一些基本的列举。
在这篇文章中,我将只专注于 FreeIPA 方面的主机枚举,但在真实的环境中,你可能需要执行比这篇文章更全面的枚举。
因此,在我们的初始权限中,第一步是确定当前处于哪个用户上下文中,以及该用户上下文拥有哪些权限。
我们发现当前是处于 nginxadmin
用户上下文中。 IPA 管理工具也存在于默认位置 /usr/bin/ipa
。最后,在 /tmp/
中发现了存储的一些票据,其中一个是我们的用户可以读取的。
现检查一下它的有效性,并应用到外面的 Poseidon 回调中。
(识别有效的 kerberos CCACHE 票据,并将其应用于此会话)
将此票据导入我们的会话后,我们就可以开始枚举与 nginxadmin
账号关联的权限。
根据上面的输出,我们可以识别应用于该账号的 Sudo 规则和 HBAC 规则。
Sudo 规则可用于限制或委派在域中注册的机器上以 sudo 身份执行命令的功能。HBAC 规则用于委派对特定资源的访问。让我们获取更多有关 Sudo 规则和 HBAC 规则的信息。
(HBAC Rule 委派主机访问)
(Sudo规则委派sudo访问)
查看 "Web-Admin" HBAC 规则可知,nginxadmin
可以访问 mysql.westeros.local
和 web.westeros.local
上的所有服务。这意味着我们应该可以利用 nginxadmin
的有效 TGT 来使用 SSH 和 SCP。
查看 "Web-Sudo" Sudo 规则可知,nginxadmin
可以以任何用户或组的身份运行 sudo,也可以运行任何其它的命令。这个规则即适用于 mysql.westeros.local
, 也适用于 web.westeros.local
。
在 HBAC 规则和 sudo 规则之间,nginxadmin
应该能够同时验证到 mysql.westeros.local
,并通过 sudo 以 root 身份执行命令。
(通过 scp 将 Poseidon 的 Payload 复制到 mysql.westeros.local,然后执行)
(成功上线)
访问 mysql.westeros.local
,可以实现对敏感数据库的访问权限。但是,让我们尝试将访问扩展到控制 FreeIPA 域。在 /tmp/
的中找到了两个 kerberos CCACHE TGT。我们可以尝试用我们的 sudo 权限来枚举这些票据。
(klist 可以列举特定票据中或当前会话中的主体)
在 FreeIPA 中,"admin" 账户与 AD 域中的 "Domain Admin" 组权限账号大致相同。列出其权限和用户属性,都表明了它是 "admins" 和 "trust admins" 组以及几个 Sudo 规则和 HBAC 规则的成员。
(FreeIPA 中 admin 账户的用户属性)
使用 sudo 权限,我们可以通过创建现有票据的副本并修改权限来获取对该账号的访问权限,以便我们以当前的用户上下文利用它。也可以使用 sudo 在以 root 上下文权限上线,从而减少不必要的操作(复制及修改票据)。
(以 root 用户重新上线)
(设置 KRB5CCNAME 环境变量以指示 kerberos 使用指定的票据)
有了这些新的权限,应该可以横向移动到试验环境中的其它任何机器了。让我们通过在 vault.westeros.local
来进行测试,是否能够成功横向移动。
(通过 scp 和 ssh )
成功上线。
尽管这个实验环境只是 FreeIPA 生产环境的一个缩小版,但它的确有效的演示了如何枚举权限并利用这些权限进行横向移动。
在本系列的最后一篇文章中,我将介绍以下内容:
原文:https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e