为WMCTF2021出了个域渗透的题目,一直想着写wp ,可惜拖来拖去还是没写。正好最近闲下来有空。也忘了自己的步骤是什么样的了,当复盘学习了。

环境已经公开,想要复现的师傅可以移步博客获取网盘链接。

考点

  1. Oracle 11g 11.2.0.1.0 注入 + 代码执行
  2. Rpc To Rce
  3. AD证书滥用导致的域内提权到域管

出题思路

七月的时候接到出题任务,想着出一个域题目。最开始的出题思路

WMCTF2021 Pentest

后来觉得这种考点对于短时间CTF的比赛来说有些复杂。且多人攻击起来有些困难。遂放弃。

loong716师傅交流了一会儿,看了specterops发布的关于Active Directory 证书服务相关漏洞的白皮书

具体可移步

https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf

对于7月左右的时间段,关于Active Directory证书的攻击在国内还很少见,复现后决定以该思路为考点搭建环境。之后又在 GITHUB发现了开启WEBCLIENT服务导致的域内委派RCE

  • Triggering machine authentication over HTTP via either MS-RPRN or MS-EFSRPC (as demonstrated by @tifkin_). This requires a set of credentials for the RPC call.
  • Relaying that machine authentication to LDAPS for configuring RBCD
  • RBCD takeover

中继LDAP服务器,使用 RPC 通过 HTTP 触发对中继的机器身份验证,从而写入机器账户使用psexec提权到域管

解题

Internet

172.16.196.151 / 10.233.71.100 (wmteam\internet1)

WMCTF2021 Pentest

这里开局只有一个登录框,通过Wappalyzer可以识别到指纹是JAVA,测试后发现后端数据库是ORACLE(这里SQLMAP也能跑,但是当时给了hint为ORACLE,且已知是域,应该能想到是通过注入RCE,巨大的SQLMAP流量把tomcat打崩了好几次QAQ)

通过资料查找,很容易找到关于ORACLE命令执行的相关例子。但网上大多是ORACLE10g 9g, 对于ORACLE 11g命令执行的例子也大多是复制粘贴的Linux环境,在出题的时候也踩了很多坑。做题的很多师傅们在交流过程中发现基本都是用LINUX的ORACLE Docker来测试。出现了本地通了远程不通的问题。

由于题目放的比较晚,所以将注入的黑名单直接放了,防止过多的fuzz与脑洞。

WMCTF2021 Pentest

放题晚上12点左右,yyzEki师傅已经构造出了基本正确的Payload,且yyz师傅已经成功ping通dnslog。可惜等到凌晨四点还是没有出。也有可能是没有进行本地测试的缘故 导致了出现小问题。

这里由于涉及到的点比较多。会另开一篇文章讲注入的过程。

成功注入后,会发现有杀毒。编写免杀即可上线。(这里也可以采取盲注的方式注入出桌面的flag文件)

Arrebol

10.233.71.60 (wmteam\arrebol)

通过对域内信息收集,很容易发现浏览器访问了域内的ADCS证书服务WEB界面。且flag中含有下一题目的提示,搜集域内信息。

很容易想到攻击方式

首先通过入口的web建立内网代理就不说了

由于要 ntlmrelayx 需要复用端口,通过PortBender等工具做端口复用。建立好设置

通过Invoke-DNSUpdate 将我们攻击机设置hostname

WMCTF2021 Pentest

使用PetitPotam.exe攻击

PS C:\Users\internet.WMTEAM\Desktop> .\PetitPotam.exe ha1@80/1.txt 10.233.71.60
Usage: PetitPotam.exe <captureServerIP> <targetServerIP>
Attack success!!!

WMCTF2021 Pentest

攻击机启动ntlmrelayx

WMCTF2021 Pentest

这时候我们就有一个高权限的机器账户了 使用机器账户申请TGT/ST票据

WMCTF2021 Pentest

直接psexec链接即可

WMCTF2021 Pentest

DC

(10.233.71.10)

通过远程登录到Arrebol机器的桌面

在证书中发现了Administrator用户的证书文件

WMCTF2021 Pentest

而该文件的预期目的正好是加密文件系统、客户端身份验证、安全电子邮件,而

1、客户端认证

2、PKINIT 客户端身份验证

3、智能卡登录

4、任何目的

5、子CA

可以使用证书进行kerberos认证。正好符合

我们使用>certutil -user -store My来查看个人证书的sha1 方便导出

WMCTF2021 Pentest

通过

certutil -user -exportPFX f809b4975d1698baeded0c98cb40cccbbef39955 c:\Users\arrebol\Desktop\test1.pfx

命令带私钥导出证书

WMCTF2021 Pentest

把证书下载到本地。将本地windows代理到内网 本地DNS设置成域控ip

使用kekeo获取用户的NTLM

WMCTF2021 Pentest

成功获取到域控的ntlm

使用psexec横向即可

WMCTF2021 Pentest

总结

感觉中间部分的webclient服务并不太好想到。而且题目说实话放的确实晚了一些,影响了师傅们的做题体验,这里给师傅们赔个不是。还希望大家能从中学到一些新知识。

文章中许多解释存在不合适/不正确的地方还请各位师傅多多指出。