XSS bypass思路及payload
1、特殊标签
常见的a标签、img标签被拦截的很多,可以尝试其他标签进行绕过。这里以svg标签为例。
SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
<script>alert(1)</script>
</svg>
由于SVG是支持通过脚本语言来动态访问和修改SVG的任何内容,这点和HTML中的DOM类似,或者说完全一致。因为SVG中的所有标签和属性都已经对应了已经定义的DOM,而这种脚本语言就是JavaScript,所以我们在SVG中插入JavaScript脚本是完全能够被解析的。
2、恶意 pdf 执行 xss
1、启动迅捷 PDF 编辑器打开一个 PDF 文件,或者使用“创建 PDF 文件”功能,通过将其他文档和资源转换为“可移植文档格式”来创建 PDF 文件。
2、单击左侧的“页面”标签,选择与之对应的页面缩略图,然后从选项下拉菜单中选择“页面属性”命令
3、在“页面属性”对话框单击“动作”标签,再从“选择动作”下拉菜单中选择“运行 JavaScript”命令,然后单击【添加】按钮,弹出 JavaScript 编辑器对话框
4、在弹出的“JavaScript 编辑器”对话框中输入代码:
单击【确定】按钮保存 PDF 文件。
这里需要注意的是:Adobe 支持自身的 JavaScript 对象模型,例如 alert(‘xss’)必须被 APP 对象调用,因此变成了 app.alert(‘xss’)。这意味着,利用 JavaScript 进行攻击时只能使用 Adobe 所支持的功能。
5、关闭软件,直接打开刚才保存的 PDF 文件,JavaScript 代码即被执行。经过测试最新版本的 360 浏览器和谷歌浏览器支持。
现在,尝试把 PDF 文件嵌入到网页中并试运行。创建一个 HTML 文档,代码如下:
<html>
<body>
<objectdata="test.pdf" width="100%" heigh="100%"type="application/pdf"></object>
</body>
</html>
除了把 JavaScript 嵌入 PDF 文件中执行,还可以利用基于 DOM 的方法执行 PDF XSS。
3、利用文件名构造xss
可以通过上传文件的文件名构造存储型xss:
上传成功:
4、jsfuck绕过过滤
一次项目中遇到了服务对传入的数据均作了大写处理,则ALERT(1)等js的方法会无法识别。此时可以尝试通过利用jsfuck来进行绕过
同时如果:,//,\,. 会受到影响,但是其他敏感字符东西",',[,],{,}并不会受到影响。
所以,我们需要利用这些白名单字符构建 payload。很快我们便想到了jsfuck.com网站。
http://www.jsfuck.com/
总结
以上是个人的一些绕过思路,后续如果有新的姿势也会补充,希望各位朋友能够批评、补充。