点击"蓝字"关注,获取更多技术内容!
声明:
挖掘的案例均已提交至漏洞平台并已经修复,本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。
先是在一个某SRC千万级APP,摸到其论坛,瞎逛,啥都去点一遍,发现一个发表感想的地方
尝试打了一个whskxkwhskxk,发送之后比较一下字体会进行变化,猜测此处存在XSS。
刚开始用svg iframe标签 form表单 a标签带JavaScript,details ontoggle 尝试携带xss的执行语句,发现发送之后全部被过滤掉,并且全部被过滤为空。
顺带一提,如果直接在发表评论的文本框直接打payload,会被一个
标签和标签包住,导致打入的payload会被以文本的形式输出,这边可以利用Burpsuite抓取请求包,把里面的
和标签全删掉,注意要全删掉 不能就删个标签 不然上传服务器的时候会请求格式错误。
后续尝试了多种标签 发现唯独img标签没有被过滤掉,猜测应该是本来这个论坛就支持图片插入,支持远程加载图片,导致让我们有机可乘。如图所示↓
尝试打个,这个目的是为了看看系统有没有判断src来源必须是http协议或者https协议,结果显而易见没有进行来源判断,前端成功显示payload.
发现这些居然都没过滤 直接简单无脑打payload:,发现onerror后面全部被过滤为空。
当时以为onerror被过滤,替换了oneload,onpageshow,onmouseover,onbounce,onstart等
Tips:onstart,onbounce当时这两个本地调试的时候,就只有火狐能弹,chrome弹不出来。
当时第一感觉应该是空格的问题导致他们被分割 系统牛马的读取方式我也猜不到,于是尝试性的去把src=1和onerror之间的空格改成+看看会不会解析。
payload:
居然发现!虽然onerror事件前面的+被没解析为空格但是确切发现了是空格的问题,同时还发现了()被url编码了一遍
空格过滤+圆括号过滤!简单有手就行.
为了万无一失重组一下payload:,但是又发现这个src和onerror之间的/的又没有被解析为空格。看到“1/οnerrοr=`1`”是整个双引号包住了,当作一个整体成为了src的来源值,所以onerror事件不会被执行
小彩蛋:当时由于这个系统每天只能回帖15次 我找F12群里的师傅们帮忙试几个payload,
我一直在编辑里面捣鼓毕竟没次数了,后来发现甘栗酿编辑怎么样也弹不了,重新回复发帖就可以弹。这边还过滤了alert但是Alert没过滤 但话又说回来编辑功能点这边Alert不会被解析所以导致编辑处弹不了窗。(其实还可以用别的弹窗事件,当是感觉Alert也会弹的,就没去尝试别的)
当时我这边的思路就是利用“再去尝试闭合掉,把前面的“和src=1后面的自己输入转义之后的”闭合,接着遇到了空格被正常解析 ,onerror后面的又被“”包住,且本地调试是包住带着反引号也是可以执行的
当时发现这个回显我有点迷糊所以本地调试了一下
发现是可以弹的,但是注意!我当时是在编辑里面改的!不是直接重新发帖,回过头发现这个payload 在发表评论是可以弹出来的!!!
后来就在群里讨论 ,讨论完就继续试。突然一声QQ提示音 打开一看尼玛出xss了
当时看这个payload还是有点糊涂,仔细理解了一边 和我自己当时琢磨的差不多 想去过滤为空重新组合一遍完整的,但是这个系统的过滤很奇葩 每当组合起来过滤之后的东西就不是自己想要的。同时由于自己在编辑里面测 导致什么都弹不了窗口。直到12点了 可以重新评论
打入自己刚开始在编辑处怎么也弹不出来的payload:
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?


微信扫码登录