ma4ter

Index | Photo | About | Friends | Archives

存储xss挖掘经验

结合这几天挖掘的src xss稍微总结一下存储xss的挖掘经验

出现位置

一般都是有框就X 例如站内信功能 评论功能等个人喜欢先填写一个<img src=1>看看解析不解析img标签 或者实体编码 进行判断xss的存在,有些厂商一般不会ban img a这种标签,只会ban alert,或者onclick,onload,onerror这种事件属性,

有些地方会进行一个前台校验输入是否合法 但是后端没有进行判断,例如下图

存储xss挖掘经验

存储xss挖掘经验

我们就可以在前台输入一个正常的数据例如aaa都可以

然后抓包修改 就可以进行绕过

或者还有一些地方有输入长度限制,可以f12修改一下maxlength看看输入payload之后提交后能不能正常的进行保存 如果能进行保存成功的话那就又是前端校验

或者通过事件进行缩短payload

payload的绕过

https://www.cnblogs.com/H4ck3R-XiX/p/12732356.html

我觉得这篇文章是一篇不错的总结

如果输入一个很明显是有害的payload如:<script>alert('xss')</script之类的可能会将script alert这类危险字符进行一个分割或者加点之类的存储xss挖掘经验

这里script被分割 无法触发payload

存储xss挖掘经验

这里用点进行了分割

这时候我们可以进行一个编码绕过

例如<a href=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;/xss/&#41;>aaaa

至于编码绕过上面这篇文章已经总结的很详细了。

存储xss挖掘经验

如何触发payload?

耐心很重要,例如上面的一个例子 我将自己的姓名修改为xss payload发现并没有解析 差点让我痛失一个中危- -

后面我发现这个站有评论功能 我奇怪的发现当我随便评论一个东西的时候 他解析了img标签 也就是说评论时是带姓名来评论的 而这里又没有任何的过滤 可以说是形成了一个二次xss吧

存储xss挖掘经验

接下就只需要将payload替换成弹窗或者引入外部js什么的 就能直接起飞了 因为这个位置没有任何的过滤

还有一种常见的就是厂商在前台进行了校验 而忽略了后台的校验

例如 我一般喜欢用两个账号测试xss 一个账号发布 然后另一个账号测试 在评论处输入payload存储xss挖掘经验

是没什么反应的 但是当我进入发布者的后台时候发现弹窗了

存储xss挖掘经验

这样一个存储xss也就到手了

总之就是多去测试 尽量寻找可能触发payload的地方 遇到实体编码的地方就可以去寻找其他一些可能触发payload的位置