【乌云峰会】网易闪电邮远程命令执行附思路分析

漏洞概要

缺陷编号:WooYun-2015-0128245

漏洞标题:【乌云峰会】网易闪电邮远程命令执行附思路分析

相关厂商:网易

漏洞作者:gainover

提交时间:2015-07-22 07:35

公开时间:2015-10-23 10:48

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2015-07-22: 细节已通知厂商并且等待厂商处理中
2015-07-25: 厂商已经确认,细节仅向厂商公开
2015-07-28: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-09-18: 细节向核心白帽子及相关领域专家公开
2015-09-28: 细节向普通白帽子公开
2015-10-08: 细节向实习白帽子公开
2015-10-23: 细节向公众公开

简要描述:

打个卡。

详细说明:

1. 最新版本 2.4 build 1020

2. 首先看看网易闪电邮的结构。

左侧是邮件列表,右侧是邮件查看窗口,该窗口实际上就是一个内嵌的浏览器,分析得知,其中展示的页面为 viewer.html(绿色框框部分), 而邮件正文部分(红色框框部分)则为一个具有临时名称的html文件,(如:tmpmail~2.html),viewer.html通过 iframe 标签嵌入 正文的html文件,为了避免邮件正文中存在XSS导致相关问题发生,网易闪电邮利用了 iframe的security属性来限制邮件正文html中脚本的执行,如下图所示:

默认使用name="ps1"的iframe来展示邮件正文内容, security="restricted" 限制了该iframe内的html的脚本执行(The security attribute restricts use of the javascript, vbscript, and about protocols in the URL. https://**.**.**.**/en-us/library/ms534622.aspx)也就是说,我们要执行XSS,得绕过 security="restricted" ,但是这个似乎不太可能。如果是走这个思路,我们的测试到这里就已经结束了。3. 然而,在继续测试的过程中,我们又发现了一些有意思的点:用客户端发送一个邮件,插入一个图片。

发送邮件后,来看看接收邮件方的情况:

可以看到,在邮件目录下有几个文件:viewer.html: 上文提到的邮件展示页面tmpmail~7.html: 邮件正文内容页面mail.js: 邮件概要信息pkav.png: 发送时插入的图片4. 上面这4个文件有什么问题呢?首先,邮件展示页 viewer.html 在该邮件目录下,然后,插入的pkav.png 也在该邮件目录下。那么,如果我们插入一个“图片”,名字叫做 viewer.html,会不会覆盖掉原有的viewer.html,从而导致viewer.html加载我们的代码呢?这里有两种可能性,A. 程序先COPY一份正常的viewer.html到邮件目录下,然后程序将“viewer.html”图片下载到邮件目录中,覆盖掉原有的viewer.html,导致问题。B. 程序先将“viewer.html”图片下载到邮件目录中,然后COPY一份正常的viewer.html到邮件目录下,覆盖了“假”的viewer.html,viewer.html被覆盖为正常,不会导致问题。为了测试是A还是B,我们复制一份viewer.html,做一些修改,如下:

还是和上面一样,将此文件当作图片插入到邮件中,然后进行发送。

如上图所示,我们插入的代码不见了。这说明,程序走的是B流程,看样子这么不会存在问题了。。5. 然而,在viewer.html的末尾却发现了一些问题:

可以看到,B流程里的覆盖操作,并非是拿程序里的viewer.html模板直接覆盖邮件目录下的viewer.html,而是某种“神秘”的写入操作。为什么说是“神秘”,因为多次测试后,并未发现明显的写入规律,不知道末尾产生的这段多余的机制是如何进行的。但是,如果我们把“恶意代码”追加到viewer.html的时候,就会发现我们追加的“恶意代码”会被留在viewer.html结尾。构造的恶意viewer.html如下图:

收到邮件后,得到的viewer.html如下(左侧是收到的,右侧是发送的):

并且,收到邮件的时候,可以看到alert(1)被执行了。

-----------------------------------------到了这里,我们得到了一个XSS的执行权限,怎么进一步利用呢?-----------------------------------------6. 首先考虑的就是会不会有命令执行? 经过一番琢磨后,注意到了邮箱的附件功能。附件有一个双击执行的功能。

看似很理所当然对吧?然而,这是一个用HTML来实现的邮件展示界面,HTML来要实现直接执行exe是不可行的,那么说明该html的容器(嵌入的浏览器)中必然实现了一些API接口来实现执行附件的功能。浏览器扩展的api一般都是在external对象上添加的,因此我们就到viewer.js里去搜索external

可以看到,我们定位到了附件双击功能,确实对应着一条external的函数onAttachmentDblClicked,该函数有一个参数,并且是整数数字,试着推测了一下,该参数表示“第几个附件”的含义。7. 基于此,我们将此前的alert(1)的代码修改一下,在viewer.html末尾加上:

其中 #at-list{display:none} 这条CSS 是为了隐藏邮件中看起来可疑的附件列表,如图所示:

然后用客户端发送邮件,把修改后的viewer.html当作图片加入,编写一个 111.wsf 脚本文件:

然后,把111.wsf当作附件添加到邮件中,最后,发送邮件。

8. 收到邮件,点开邮件后,external.onAttachmentDblClicked(0); 被执行,第一个附件相当于被双击,执行即,111.wsf中的命令被执行:

漏洞证明:

见详细说明

修复方案:

暂无

漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-07-2510:47

厂商回复:

非常感谢白帽子细致的分析,漏洞已修复,并更新到官网,感谢您对网易的关注!

最新状态:

暂无

评价

  1. 2010-01-01 00:00 xsser 白帽子 | Rank:152 漏洞数:17)

    你认为的理所当然背后有这么多内容....

  2. 2010-01-01 00:00 末影人 白帽子 | Rank:30 漏洞数:3)

    记者快看这里

  3. 2010-01-01 00:00 bitcoin 白帽子 | Rank:290 漏洞数:36)

    膜拜大牛!

  4. 2010-01-01 00:00 Looke 白帽子 | Rank:1078 漏洞数:85)

    前排

  5. 2010-01-01 00:00 子墨 白帽子 | Rank:229 漏洞数:26)

    大牛早!膜拜!

  6. 2010-01-01 00:00 DloveJ 白帽子 | Rank:731 漏洞数:64)

    又来了!!

  7. 2010-01-01 00:00 泪雨无魂 白帽子 | Rank:11 漏洞数:1)

    又来了!!

  8. 2010-01-01 00:00 _Thorns 白帽子 | Rank:796 漏洞数:60)

    !!!完全停不下来

  9. 2010-01-01 00:00 Ton7BrEak 白帽子 | Rank:128 漏洞数:8)

    0.0 mark make 马克

  10. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    今天这么早额!核心应该明天就回来了,哈哈

  11. 2010-01-01 00:00 子非海绵宝宝 白帽子 | Rank:1220 漏洞数:113)

    前来膜拜

  12. 2010-01-01 00:00 Aaron 白帽子 | Rank:0 漏洞数:0)

    好厉害

  13. 2010-01-01 00:00 甲鱼 白帽子 | Rank:26 漏洞数:2)

    裤衩一声一个闪电……

  14. 2010-01-01 00:00 scanf 白帽子 | Rank:1161 漏洞数:100)

    电闪雷鸣

  15. 2010-01-01 00:00 Stardustsky 白帽子 | Rank:0 漏洞数:0)

    二哥快把你的洞都交出来!!!!

  16. 2010-01-01 00:00 Hyjal 白帽子 | Rank:65 漏洞数:5)

    boom boom

  17. 2010-01-01 00:00 牛 小 帅 白帽子 | Rank:407 漏洞数:34)

    怎么又是你

  18. 2010-01-01 00:00 无敌L.t.H 白帽子 | Rank:21 漏洞数:4)

    坐等渣浪无良小编

  19. 2010-01-01 00:00 浅蓝 白帽子 | Rank:131 漏洞数:20)

    后排出售2哥帅照

  20. 2010-01-01 00:00 YxWa 白帽子 | Rank:0 漏洞数:0)

    不要!停!

  21. 2010-01-01 00:00 卡卡 白帽子 | Rank:434 漏洞数:38)

    二哥我们的猴子咋办!!

  22. 2010-01-01 00:00 Wulala 白帽子 | Rank:201 漏洞数:17)

    迟到了

  23. 2010-01-01 00:00 猪猪侠 白帽子 | Rank:2932 漏洞数:249)

    学习

  24. 2010-01-01 00:00 举起手来 白帽子 | Rank:485 漏洞数:44)

    屌屌哒!

  25. 2010-01-01 00:00 安全小飞侠 白帽子 | Rank:66 漏洞数:6)

    学习

  26. 2010-01-01 00:00 ppt 白帽子 | Rank:11 漏洞数:2)

    登错了小号?

  27. 2010-01-01 00:00 小呆呆 白帽子 | Rank:33 漏洞数:4)

    2哥威武

  28. 2010-01-01 00:00 泳少 白帽子 | Rank:158 漏洞数:20)

    @猪猪侠 漏洞数:250这样真的好吗?

  29. 2010-01-01 00:00 只抽红梅 白帽子 | Rank:103 漏洞数:12)

    总有人以为他以为的就是他以为的

  30. 2010-01-01 00:00 无名 白帽子 | Rank:32 漏洞数:3)

    威武。

  31. 2010-01-01 00:00 lxj616 白帽子 | Rank:340 漏洞数:32)

    打个卡。。。。。。。。。。。。。。。。。。。。。

  32. 2010-01-01 00:00 秋风 白帽子 | Rank:372 漏洞数:32)

    NB!

  33. 2010-01-01 00:00 ’‘Nome 白帽子 | Rank:57 漏洞数:7)

    我只想,马上确认,马上修复,马上公开!谢谢

  34. 2010-01-01 00:00 带头大哥 白帽子 | Rank:142 漏洞数:15)

    打雷闪电3个勾,我要给你生猴子!

  35. 2010-01-01 00:00 从容 白帽子 | Rank:153 漏洞数:21)

    关注二哥的漏洞

  36. 2010-01-01 00:00 Q1NG 白帽子 | Rank:117 漏洞数:12)

    警察叔叔,就是他

  37. 2010-01-01 00:00 f4ckbaidu 白帽子 | Rank:215 漏洞数:21)

    在乌云赚到百万的男人

  38. 2010-01-01 00:00 晏子 白帽子 | Rank:0 漏洞数:0)

    电闪雷鸣间下起了金币雨

  39. 2010-01-01 00:00 niliu 白帽子 | Rank:1384 漏洞数:141)

    沙发!

  40. 2010-01-01 00:00 Fire ant 白帽子 | Rank:39 漏洞数:5)

    在乌云赚到百万的男人

  41. 2010-01-01 00:00 Mr.R 白帽子 | Rank:0 漏洞数:0)

    乌云赚到百万的男人

  42. 2010-01-01 00:00 乐乐、 白帽子 | Rank:528 漏洞数:57)

    还不赶紧公开

  43. 2010-01-01 00:00 牛 小 帅 白帽子 | Rank:407 漏洞数:34)

    乌云赚到百万的男人 这有1万了吧?

  44. 2010-01-01 00:00 青青 白帽子 | Rank:0 漏洞数:0)

    1w能干?

  45. 2010-01-01 00:00 庙口大王 白帽子 | Rank:22 漏洞数:3)

    $$$

  46. 2010-01-01 00:00 南柯太守 白帽子 | Rank:0 漏洞数:0)

    G博士好吊

  47. 2010-01-01 00:00 乌云首席鉴黄师 白帽子 | Rank:0 漏洞数:0)

    摄像师,看这里!!

  48. 2010-01-01 00:00 大师兄 白帽子 | Rank:0 漏洞数:0)

    二哥穿着格子衫,笑的特帅

  49. 2010-01-01 00:00 天鱼 白帽子 | Rank:37 漏洞数:5)

    膜拜大牛!

  50. 2010-01-01 00:00 Raven 白帽子 | Rank:0 漏洞数:0)

    厉害厉害!

  51. 2010-01-01 00:00 偏執誑 白帽子 | Rank:0 漏洞数:0)

    看完大牛的洞想看看大牛的代码,再看看自己的WB,先让我哭会(+﹏+)

  52. 2010-01-01 00:00 大漠長河 白帽子 | Rank:23 漏洞数:3)

    @偏執誑 ,我也想看。。。要有自制力

  53. 2010-01-01 00:00 Hex 白帽子 | Rank:10 漏洞数:1)

    NB

  54. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    叼!

  55. 2010-01-01 00:00 路人毛 白帽子 | Rank:28 漏洞数:3)

    长姿势了

  56. 2010-01-01 00:00 cmxz 白帽子 | Rank:15 漏洞数:1)

    赞!

  57. 2010-01-01 00:00 大师兄 白帽子 | Rank:0 漏洞数:0)

    看完感悟是:得猛补编程了......

  58. 2010-01-01 00:00 Rainism 白帽子 | Rank:10 漏洞数:1)

    学习了

  59. 2010-01-01 00:00 我在不想理你 白帽子 | Rank:33 漏洞数:3)

    膜拜

  60. 2010-01-01 00:00 八戒 白帽子 | Rank:0 漏洞数:0)

    学习大牛分析的好透彻。

  61. 2010-01-01 00:00 左手有枪 白帽子 | Rank:22 漏洞数:2)

    膜拜大神

  62. 2010-01-01 00:00 老曹哥哥 白帽子 | Rank:5 漏洞数:1)

    已跪

  63. 2010-01-01 00:00 dragonyin 白帽子 | Rank:0 漏洞数:0)

    牛!