人人网某重要功能储存型XSS漏洞可劫持其他用户身份

admin 2015年8月14日05:43:18评论322 views字数 218阅读0分43秒阅读模式
摘要

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

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

缺陷编号: WooYun-2014-83670

漏洞标题: 人人网某重要功能储存型XSS漏洞可劫持其他用户身份

相关厂商: 人人网

漏洞作者: px1624

提交时间: 2014-11-18 10:28

公开时间: 2015-01-02 10:30

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

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 人人网 储存XSS

5人收藏


漏洞详情

披露状态:

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

简要描述:

一年前提交人人网漏洞,官方给送了个年费vip,前些天发现貌似快到期了,就又去人人网转了转。

详细说明:

漏洞位置:人人网留言板

##1 漏洞是源于之前提交的那个漏洞修补不完善导致。http://wooyun.org/bugs/wooyun-2010-039293

##2 人人网留言板,加入图片留言后,的post请求如下。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

在网页中的代码如下。

code 区域
<img src="http://fmn.rrimg.com/fmn065/20140109/1535/g_head_iA9x_51410000d89a1262.jpg" onclick="showLargePhoto(this, 'http://fmn.rrimg.com/fmn065/20140109/1535/g_large_9tL6_5140000d89a1262.jpg');" style="opacity:1">

其实功能就是一个点击小图查看大图的功能。

##3 上次直接将onclick中大图的地址写为了 http://xxxx',alert(1),'xxxx.jpg 导致在点击图片查看大图的时候就会触发参数位置的js代码。

##4 本来以为这个漏洞修补很简单,开发一看就明白了,所以就画了个漫画提交了,结果开发还是没修好,所以这次就详细的给演示分析下。

##5 经过了上次的那个漏洞,人人网这个点做了以下的限制,经过一番测试后,发现限制如下(有的是之前就有的,有的是上次漏洞后新加的限制)。

过滤了"><&#

但是测试没有过滤单引号'和逗号, 而是将单引号的输入次数限制在了1次!

##6 具体为啥要这么做 ,可能是怕影响正常业务吧,那么问题就来了,可以直接利用下面的代码进行绕过。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

##7 网页中F12看一下,果然成功的插入了,闭合了前面的showLargePhoto函数,注视掉了后面多余的js代码。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

看,点击图片就弹窗了吧。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

##8 一般人可能到这一步弹个窗就完事提交了,这也就是为啥他们的人人网xss分低的原因了。到这一步,当然不能结束,因为弹个窗有毛用,又影响不了数据。所以我们还要证明这里是可以插入任意外部js文件的。

##9 经过一番测试,发现这里的长度还是有限制的,而且还只能用一次单引号,结尾还必须是jpg,前面图片的地址还不能去掉,还有蛮多限制,反正还是蛮恶心的。不过最终还是可以用eval配合String.fromCharCode进行绕过。具体操作如下。

由于网站使用了jq,所以直接用jq的函数,去进行一下String.fromCharCode编码(这里我的xss平台的域名比较长,再多加个http:就会超出长度失效,不过别人还有4字节的xss平台呢)。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

然后将其eval后插入post请求,如下。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

成功插入后F12看到的效果如下。

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

别人点击后,直接是查看的大图,完全没有任何异样!

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

##10 而这时候黑客那边呢?

点击图片查看大图后,触发了onclick中的eval,然后里面编码后的字符串被DOM了一次,然后就在网页中调用了我的外部js文件。然后呢?

呵呵,你的cookie已经被我盗取了!

人人网某重要功能储存型XSS漏洞可劫持其他用户身份

人人网,一站式cookie,有了cookie就可以做任何事情了!

漏洞证明:

看上面。

修复方案:

修补措施:

1 这里你们一直都有将><"&#进行过滤,而这里的根本问题是没有对单引号进行完全的过滤,不要以为允许了一个单引号就没事了,另外不明白这里的判断为啥是有2个单引号的时候才会进行过滤。。。

2 正确的修补措施:将单引号完全过滤掉,如果是因为业务问题必须要输入一个单引号的话,那么就把//和)过滤掉,貌似这2个东西你们也用不到,这样也会因为没法闭合js代码,导致无法XSS。

3 求20rank!求人人网年费vip!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-11-18 10:36

厂商回复:

感谢...不知道当时是怎么修复的了,貌似单引号确实是没有必要的...,感谢洞主提供的修复方案,thks

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin