存储xss挖掘经验
结合这几天挖掘的src xss稍微总结一下存储xss的挖掘经验
出现位置
一般都是有框就X 例如站内信功能 评论功能等个人喜欢先填写一个<img src=1>
看看解析不解析img标签 或者实体编码 进行判断xss的存在,有些厂商一般不会ban img a这种标签,只会ban alert,或者onclick,onload,onerror这种事件属性,
有些地方会进行一个前台校验输入是否合法 但是后端没有进行判断,例如下图
我们就可以在前台输入一个正常的数据例如aaa都可以
然后抓包修改 就可以进行绕过
或者还有一些地方有输入长度限制,可以f12修改一下maxlength看看输入payload之后提交后能不能正常的进行保存 如果能进行保存成功的话那就又是前端校验
或者通过事件进行缩短payload
payload的绕过
https://www.cnblogs.com/H4ck3R-XiX/p/12732356.html
我觉得这篇文章是一篇不错的总结
如果输入一个很明显是有害的payload如:<script>alert('xss')</script
之类的可能会将script alert这类危险字符进行一个分割或者加点之类的
这里script被分割 无法触发payload
这里用点进行了分割
这时候我们可以进行一个编码绕过
例如<a href=javascript:alert(/xss/)>aaaa
至于编码绕过上面这篇文章已经总结的很详细了。
如何触发payload?
耐心很重要,例如上面的一个例子 我将自己的姓名修改为xss payload发现并没有解析 差点让我痛失一个中危- -
后面我发现这个站有评论功能 我奇怪的发现当我随便评论一个东西的时候 他解析了img标签 也就是说评论时是带姓名来评论的 而这里又没有任何的过滤 可以说是形成了一个二次xss吧
接下就只需要将payload替换成弹窗或者引入外部js什么的 就能直接起飞了 因为这个位置没有任何的过滤
还有一种常见的就是厂商在前台进行了校验 而忽略了后台的校验
例如 我一般喜欢用两个账号测试xss 一个账号发布 然后另一个账号测试 在评论处输入payload
是没什么反应的 但是当我进入发布者的后台时候发现弹窗了
这样一个存储xss也就到手了
总之就是多去测试 尽量寻找可能触发payload的地方 遇到实体编码的地方就可以去寻找其他一些可能触发payload的位置