#翻译文章# 原文:
https://infosecwriteups.com/reflected-xss-on-microsoft-com-via-angular-template-injection-2e26d80a7fd8

概括:-
当使用客户端模板框架的应用程序将用户输入动态嵌入到网页中时,客户端模板注入漏洞就会出现。渲染网页时,框架将扫描静态页面模板以查找模板表达式,并执行其遇到的任何内容。攻击者可以通过提供恶意模板表达式来利用这一点,该模板模板会发起跨站点脚本(XSS)攻击。与普通的跨站点脚本一样,攻击者提供的代码可以执行多种操作,例如,窃取受害者的会话令牌或登录凭据,代表受害者执行任意操作以及记录其击键。
XSS过滤器通常无法检测或阻止客户端模板注入攻击。
我开始寻找搜寻Microsoft的子域。
我的目标站点为https://flow.microsoft.com/。

Angular 模板使用{{}}括住可以包含js表达式。您可以通过http://jsfiddle.net/2zs2yv7o/来学习Angular 是如何工作的。
使用Angular模板输入{{7*7}},页面会输出49。这意味着,任何人都可以注入执行Angular表达式。
然后开始整理参数并找出哪个是“过滤器”。我尝试了一些XSS Payload,但是没有一个在这里有效。然后我手工检查了这些值出现在源码的位置,发现这个网站使用angular 模板,并且发现了angular的版本号。然后我搜了一下对应版本payload,发现了以下payload

然后我google了这个payload并发现了这篇文章。
https://portswigger.net/research/xss-without-html-client-side-template-injection-with-angularjs
完整演示视频:
https://www.youtube.com/watch?v=PWIx5a59cKI
译者按:
框架也不一定是绝对安全的,而且开发完成后的投产之后,由于种种原因,框架一般来说不会再升级。当然,框架在开发部署时可能没有漏洞,可能几年之后,被发现有漏洞,就难以进行修补。师傅们挖洞的时候,不妨也关注一下这些点。
本文迁移自知识星球“火线Zone”