Authority - HackTheBox
开局先扫描
enum4linux找不到什么有用的信息,smbmap这边发现了可读的共享
Get User Flag
SMB information leakage
下载下来可以看到是个Ansible脚本
我重点看了PWM,因为8443端口开放着这个服务
配置文件中发现了:
- 账户svc_pwm
- Ansible账户:Administrator;密码:Welcome1
- 开启了WinRM
- PWM系统的两个账户密码
直接WinRM登录一下这个administrator账户(确实不行,我也觉得没这么简单
PWM Service
那就是用PWM的用户密码登录上去看看能做什么
直接登录不行
只能再回到文件里看看,发现了真正的密码
Crack the Ansible-Vault
Google查了破解方法
整理一下解密出来的信息:
- ldap_admin_password:DevT3st\@123
- pwm_admin_password:pWm @dm!N!23
- pwm_admin_login:svc_pwm
终于登录上了这个平台
但这里又被折磨了好久,也去Github和Google搜了很多这个项目的信息
最后在配置文件里看到了LDAP服务地址,回想起之前登录的时候一直在警告LDAP服务不可用,那么我们把这个地址改成自己的地址会怎么样呢?
改完之后监听端口、再上传配置文件看看
直接乱码,可能是加密过后才发过来的,这里又将ldaps改成ldap
这回能看见东西了,发现了svc_ldap用户,后面那个猜测是个密码:lDaP_1n_th3_cle4r!
拿下user flag
Get Root Flag
ADCS
还记得SMB泄露的Ansible里面除了LDAP和PWM之外还有ADCS。我们可以尝试一下证书提权
ADCS information collection
这里使用Certipy进行信息收集
1 |
|
ADCS vulnerability scanning
1 |
|
发现了存在ESC1和ESC7漏洞
ADCS ESC1
原理: 默认情况下,域用户可以注册User证书模板,域机器账户可以注册Machine证书模板。两个证书模板都允许客户端身份验证。当用户账户申请User模板证书时,用户账户的用户主体名称(User Principal Name,UPN)将嵌入证书,以进行识别。
当使用证书进行身份验证时,KDC会尝试将UPN从证书映射到目标账户。User证书模板的msPKI-Certificate-Name-Flag属性存在一个CT_FLAG_SUBJECT_ALT_REQUIRE_UPN标志位,其指示CA将来自活动目录中请求者用户对象的UPN属性值添加到已颁发证书的主题备用名称中。UPN必须是唯一的,意味着不能同时有两个具有相同UPN的用户。但是机器账户是没有UPN属性的,那么机器在使用证书进行身份验证时,证书模板的 msPKI-Certificate-Name-Flag 属性还存在CT_FLAG_SUBJECT_ALT_REQUIRE_DNS 标志位,指示CA将从活动目录中请求用户对象的DNS属性获得的值添加到已颁发证书的主题备份名称中。 — 引用自《内网渗透体系建设》
也就是说,当机器账户申请证书时,计算机的DNS属性值被嵌入证书,以进行识别。
我们可以通过机器账户申请证书,并填入Administrator的UPN,进行提权
- 先添加一个机器账户
- 通过certipy申请UPN为Administrator的证书
- 使用证书进行身份验证
但是KDC似乎不支持这种方式。不过我们这里确实有了证书了
PassTheCert
Google之后在Github找到了这个项目,非常符合我们现在的情况
- 先把证书和私钥分离
- 通过证书进行认证,完成提权
拿下Root Flag
Summary
总体打下来还是挺有难度的,打了三台Windows靶机了,目前的思路都是以信息泄露为入口,打某个服务获得凭据再通过某个配置错误提权。总体而言需要对域渗透、Windows协议比较了解。