这是很早之前挖的漏洞了,拿出来分享一下思路吧。
# 挖掘过程
漏洞产生于,邮箱中的日历提醒处。

这里未做任何任何过滤,设置好提醒时间,到点邮箱中便收到了提醒邮件,同时触发了XSS

然后我就直接提交给了SRC平台,然后就被无情驳回了 :-( 。原因嘛,大家都懂,self-xss,同时在file域下,也没有跨域漏洞。所以被驳回是很正常的。
身为低危挖掘机不甘心啊,费了九牛二虎之力才挖到的漏洞,这么忽略了太心痛了,没办法,只有看能不能组合利用了。
继续查看功能点,发现在日历处存在一个日历分享功能。

填入小号邮箱。成功收到加入日历的邀请

其实到这里本就可以结束了,它起码证明了可以对别人产生危害。只要对方点击加入日历,到时间就会触发我的XSS日历。
但是这毕竟需要对方点击加入才行,这利用还不够完美。于是继续挖掘,网页找不到可利用点了,我就去APP上找,果然APP上也提供了日历分享功能,而且和WEB端不太一样。APP端可以把这个日历分享给WX好友。

通过观察发现,这是一个网页端的加入邀请,顺手复制网址到电脑上,分析一波。
通过查看了它的源文件和JS文件发现了一些猫腻。它在js中判断了当前ua头,是微信、秋秋、秋秋邮箱还是WEB。

根据不同的UA,使用不同的 scheme url 进行跳转。问题出现在 token_code ,我们需要这个 token_code才能进行下一步利用。

而 token_code 来的也简单,它就硬编码在网页中。并且这个共享并不会要求对方在网页中登录。只要对方安装了邮箱APP并且登录了的即可加入共享。

我们来捋一下思路,我们有一个日历提醒的self-xss,同时日历可以共享,然后我们现在还有了一个对方无需登录认证即可加入分享的功能。
于是我根据其跳转的主要逻辑,在自己的网页中也写入了相同的功能的方法,并且自动加载该方法,使其只要在手机中访问我的网站,就能加入到我的日历共享中。当然前提得人家安装了这个秋秋邮箱客户端才行。
最后就是这样一个效果,审核这下没法忽略我了吧,哈哈哈。


本文迁移自知识星球“火线Zone”