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

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

缺陷编号:wooyun-2015-090574

漏洞标题:RoundCube Webmail邮件最新版正文存储型XSS

相关厂商:RoundCube Webmail

漏洞作者: phith0n

提交时间:2015-01-07 22:21

修复时间:2015-04-13 16:58

公开时间:2015-04-13 16:58

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

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-07: 细节已通知厂商并且等待厂商处理中
2015-01-12: 厂商已经确认,细节仅向厂商公开
2015-01-15: 细节向第三方安全合作伙伴开放
2015-03-08: 细节向核心白帽子及相关领域专家公开
2015-03-18: 细节向普通白帽子公开
2015-03-28: 细节向实习白帽子公开
2015-04-13: 细节向公众公开

简要描述:

首先声明,我这个洞交到360了通过了,奖金500?侮辱我吗。
作为重复漏洞乌云可以不给我通用奖励,所以大家也别说我一洞多投,我不是为了奖励来的。我问了那边,那边说交了的漏洞不能拒绝,我只好直接发过来了。
我只是想体现他的价值。
RoundCube Webmail是国外用的较广的一款开源php邮件系统,意义还是挺大的。

详细说明:

roundcube webmail官网:http://roundcube.net/,下载最新版本。
/program/lib/Roundcube/rcube_washtml.php ,这文件实际上是一个富文本过滤类class rcube_washtml。roundcube就是利用这个类对富文本进行过滤。
先大概看一下,我知道了这个类的特点:
1.用DOM对换入的HTML做解析,取出所有标签、相应属性的键和值。
2.利用白名单,只保留允许存在的标签和属性。
3.根据保留下来的标签、属性键和值,拼接成过滤后的HTML,输出。
实际上,从这个过程中我就看到了安全隐患。我曾经自己写过一个富文本类,类的前两点过程和这个类相同,但第三点,我是将结果同样保存为DOM对象,再转换成HTML进行输出。
二者有什么差别?很大一点不同就是,roundcube对HTML进行拼接,拼接的过程中如果处理不好引号,很容易导致属性“值”越出引号范围,变成一个新的“属性”,比如onerror。
好,我们看到246行,

else if ($key == 'style' && ($style = $this->wash_style($value))) {
$quot = strpos($style, '"') !== false ? "'" : '"';
$t .= ' style=' . $quot . $style . $quot;
}


当属性名是style的话,就将值传入wash_style函数。这个函数顾名思义是过滤css用的,然后将返回值$style拼接到最终HTML里:$t .= ' style=' . $quot . $style . $quot;
$quote就是一个引号,将$style 放入引号。这个$quote是前一句话定义的,当$style中有单引号的时候,$quote就是双引号,当$style中有双引号的时候,$quote就是单引号。
但如果$style中两种引号都有呢?肯定是会导致引号被闭合的情况,那么后面就能够写其他属性了。
后面还有一些麻烦的分析我就不写了,最后我的payload是:

<img src="data:xxx1" style=aaa:'"/onerror=alert(1)//' >


我们看到,style中间有单引号和双引号,因为都存在,所以选择单引号作为外部的闭合引号。而因为我内部也有单引号,所以将前面的单引号闭合了,导致后面的内容溢出,onerror成为一个新的属性,最后导致存储型XSS。
经过该类处理过的HTML变成这样,chrome最新版下直接触发无需交互

<!-- html ignored --><!-- body ignored --><img src="data:xxx1" style='aaa: '\"/onerror=alert(1)//'' />


测试,直接发送正文含有以上POC的邮件,roundcube打开邮件即可触发:

01(1).jpg

漏洞证明:

01(1).jpg

修复方案:

不知道。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2015-01-12 11:41

厂商回复:

CNVD确认所述漏洞情况,暂未建立与软件生产厂商的直接处置渠道,待认领。

最新状态:

暂无


漏洞评价:

评论

  1. 2015-01-07 22:23 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    精彩

  2. 2015-01-07 22:23 | roker ( 普通白帽子 | Rank:357 漏洞数:108 )

    mark顶师傅

  3. 2015-01-07 22:24 | 天地不仁 以万物为刍狗 ( 普通白帽子 | Rank:977 漏洞数:264 | 天地本不仁 万物为刍狗)

    我就说在哪见过 前排

  4. 2015-01-07 22:26 | 孤独雪狼 ( 普通白帽子 | Rank:710 漏洞数:145 | 七夕手机被偷,这坑爹的七夕啊 。。。。)

    难怪你在微博上说挖到一个国际0day

  5. 2015-01-07 22:28 | 猪猪侠 认证白帽子 ( 核心白帽子 | Rank:3224 漏洞数:254 | 你都有那么多超级棒棒糖了,还要自由干吗?)

    RoundCube 国外重量级用户特别多

  6. 2015-01-07 22:31 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    投exploit-db

  7. 2015-01-07 22:35 | 贫道来自河北 ( 普通白帽子 | Rank:1395 漏洞数:423 | 一个立志要把乌云集市变成零食店的男人)

    我在谷歌搜了一下 国内用户不是太多啊,大部分都是国外的啊,360那边价格貌似可以协商的啊。大牛何必动气呢

  8. 2015-01-07 22:39 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    这邮箱貌似某平台,众测项目奖金50W,不过不知道说的是rmb还是云豆。。

  9. 2015-01-07 22:43 | onpu ( 实习白帽子 | Rank:64 漏洞数:19 | 静坐常思己过,闲谈莫论人非)

    精彩

  10. 2015-01-07 22:47 | Yang ( 普通白帽子 | Rank:247 漏洞数:86 | 作为菜鸟,大米手机摔破了怎么办?)

    国际通用呀。!!

  11. 2015-01-07 22:49 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    webmail记得搞不定帐号啊,你的帐号咋来的

  12. 2015-01-07 22:54 | 南宁网警Mx ( 路人 | Rank:8 漏洞数:5 | 我是独行侠。有心交友qq1552673833)

    众测项目奖金50W

  13. 2015-01-07 23:03 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @南宁网警Mx @px1624 知道,但众测我不感兴趣。

  14. 2015-01-07 23:06 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @phith0n 那个别太认真,目测说的是云豆。哈哈

  15. 2015-01-07 23:07 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @phith0n 话说你帐号怎么来的

  16. 2015-01-07 23:09 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @px1624 我注册的一个虚拟主机da面板送了一个邮箱

  17. 2015-01-07 23:12 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @phith0n 额。。。难怪,我们一直没法测试,就是因为没有测试帐号。。。

  18. 2015-01-08 03:22 | 蓝莓说 ( 实习白帽子 | Rank:60 漏洞数:18 | 爱网络安全 代码审计 php网站开发)

    @phith0n 大牛求审计国外CodeIgniter框架

  19. 2015-01-08 06:39 | Power ( 实习白帽子 | Rank:54 漏洞数:22 | 还需要等待.........)

    关注

  20. 2015-01-08 09:25 | 盛大网络(乌云厂商)

    这个在那个众测还是低危 500¥

  21. 2015-01-08 12:08 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    nice

  22. 2015-01-12 12:04 | Woodee ( 路人 | 还没有发布任何漏洞 | 乌云路人甲,打脸pa pa pa)

    这个厉害!

  23. 2015-08-25 17:40 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    思路很赞,能绕过很多程序的 "属性"on iframe script 基本没戏了svg img html5 vectors还有机会