语境
在我们的开发团队中,我们必须构建一个组件。该组件是一个用 Javascript 编写的完整客户端。
希望嵌入此组件的客户端 Web 应用程序将调用它,如下所示:
<iframe id="fullScreenIframe" src="http://my-server.com/component?param1=val1¶m2=..."></iframe>
问题
组件接受的参数之一让我们中的一些人感到紧张。该origin参数用于生成将用户带回客户端 Web 应用程序的链接。
以下是组件管理此参数的方式:
$(document).ready(function() {
var origin = urlParameters["origin"];// Dynamically built from the current document url
if(origin != undefined){
// The link to take the user back...
$("#welcomePage").attr("href",origin);
// Another link in the breadcrumb using the same `origin` parameter
$("#simulationPage").attr("href", "index.html"+"?origin="+origin);
}
// ...
}
我们已经告诉他的
- 网站网络钓鱼
即使将origin参数传递给 jQuery,任何网站都可以用于网络钓鱼诈骗。可以要求用户(重新)输入他们的凭据,以为他们在真实站点上。这里的孔将是组件。
- 具有有效值的允许列表
的有效值origin可以远程存储在允许列表中。该组件会在生成链接之前首先检查允许列表。如果发现意外值,则可以生成默认链接。
这两个论点并没有说服他。他希望证明该origin参数可能是一个安全漏洞。你会告诉他什么?
顺便说一句,我正在寻找一个很好的 PoC 来证明origin参数的弱点。