xss和alert()函数已经携手并进了几十年。想证明你可以执行任意 JavaScript 吗?弹出警报。想以懒惰的方式找到 XSS 漏洞吗?到处注入alert()-invoking有效载荷,看看是否有任何东西弹出。
然而,麻烦正在酝酿之中。恶意广告一直在滥用我们钟爱的alert,从 iframe 内部分散和社交工程访问者的注意力。Chrome 已决定通过禁用跨域 iframe 警报来解决此问题。跨域 iframe 通常是故意内置到网站中的,也是某些相对高级的 XSS 攻击的近乎必不可少的组成部分。
一旦 Chrome 92版本正式全面更新,跨域 iframe 中的 XSS 漏洞将:
-
不再启用基于alert的 PoC。
-
使用基于alert的检测技术的任何人都不可见。
接下来是什么?显而易见的解决方法是使用提示或确认,但不幸的是 Chrome 的缓解阻止了所有对话框。触发DNS pingback到侦听器,OAST 风格是另一种潜在的方法,但由于配置要求不太适合作为 PoC。我们还排除了console.log()因为控制台功能经常被 JavaScript 混淆器代理或禁用。
有趣的是,这种防止跨域显示对话框的“保护”会阻止alert和提示,但正如Yosuke Hasegawa 指出的那样,他们忘记了基本身份验证。这适用于当前版本的金丝雀。不过以后很可能会被屏蔽。
我们需要一个alert替代方案:
-
简单、免设置且易于记忆
-
高度可见,即使在不可见的 iframe 中执行
经过数周的深入研究,我们很高兴为您带来...
print()
支持
如<body onhashchange="print()">,效果如下
当使用跨域 iframe 时,可以使用print() 有效负载。当不涉及 iframe 时,我们可以继续使用alert。portswigger团队最新的xss-cheat-sheet中也更新了print()的部分。
快把payload库更新起来吧
链接:https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
本文始发于微信公众号(军机故阁):iframe下alert()已死
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论