[投稿]某众多高校邮件系统的0day挖掘思路及XSS新防御方案

0x00 起因

因可能导致一些影响,所以文章不提该邮件系统的名称。该邮件系统是众多高校,教育机构使用的邮件系统,去年有个小弟问我能否入侵老师的邮箱,测试了下于是便有了这篇文章,文章仅供技术研究,若用于非法手段,本人概不负责。

 

0x01挖掘思路

(因为是一年前的事情 当时未截图,凭回忆写,图片没有,但是保证价值一分未少v^v。渗透是思路,大家如果觉得这篇文章有价值可以多看几遍。)

 

可得知邮箱系统采用的是xxx mail,初步看了下,如果能找到一个XSS或者有意义的CSRF 入侵邮箱 考试满分便不再是梦想。

重点找找XSS,用小弟的账号登陆上去,发现可以添加图片标签及超链接标签,尝试源代码编辑,发送邮件给小弟账号自己。

内容为:

 

收到后查看内容

发现a标签 中javascript被过滤 iframe标签 onload属性被过滤

分别突破后得到0day两个

 

0x02 0day

0day1:

base64编码

得到

源代码编辑输入

发送邮件,接收后点击,成功XSS。

 

0day2:

源代码编辑

插入

 

依旧发现onddd标签被过滤

这说明服务端过滤是基于黑名单的,就是on开头的属性都给PASS掉,估计因为很多可以执行JS的标签都是on开头,所以程序员这么想。

那就找一个不是以on开头的  又可以执行JS的iframe属性。

https://developer.mozilla.org/zh-CN/docs/HTML/HTML5

中找到一个srcdoc属性

发送邮件

 

登登 成功XSS収邮件者

自己工作忙 没时间继续测试了 跟小弟讲了下思路 恐吓下非法入侵他人邮箱坐牢等,最后他也没去做坏事v^v

 

0x03思路总结

包括但不限于xxx mail这样的黑盒闭源系统 挖掘XSS时,我们考虑这样挖掘:

 

1.它支持什么标签

假如允许插入图片 超链接

那我们便知道<img src=> <a href>这些标签及属性是支持的,然后慢慢思考图片方法 比如url属性值可否设成javascript:vbsrcipt

2.是否被过滤

如果被过滤 我们便测试下是黑名单还是白名单过滤。

比如上文的过滤on开头的属性,我们便可以用个on开头但不存在的属性 onddd来看看究竟是白名单还是黑名单过滤进而突破。

 

以上讲的是邮箱正文的XSS 其次还可以考虑附件名 在LINUX在附件名给成XSS语句测测?还有邮件签名档等等。

用户一切输入都是有害的,一切你能控制并在对方接收邮箱的时候展示的数据,都值得测测。

 

0X04黑盒系统如何防御

该mail的官方应该用白名单来限制允许的标签,如只允许某些标签,至于属性应该写好正则,

比如超链接src属性用正则限制为正常URL形式。

 

0x05附送一个新型的XSS防御方案

XSS的防御相信是很多程序员的痛,说容易些 过滤了尖括号等就行了,

但写代码或新人加入 总有疏忽的时候

毕竟业务第一 赶着上线时或许就没时间审计代码安全性了

那么 有没有很懒但很有用的方法来阻止XSS?

让程序员可以专注于业务开发?

这个方法针对的是反射型XSS(包括DOM XSS),或GET型导致的存储型XSS。

POST 导致的存储型XSS 我暂未想到便捷防御方法,如你有请联系我,欢迎赐教。

我们写一个JS

 

每个页面都嵌入这个JS便可以有效防止反射型XSS(包括DOM XSS),或GET型导致的存储型XSS。如被绕过可再更改此JS 慢慢完善。具体根据业务情况而定。

 

这样 程序员便可以专注于业务 做安全的防御XSS 也轻松了一大半。

赏金发放情况:本文获得赏金150RMB,已于4.27日发放到作者账号。

征稿启事:91RI一直相信“你不与人分享,谁与你分享”, 分享的确是件非常有意义的事情。为了让优秀的同学有 地方分享自己的独到见解,也为了让更多同学从分享中受益,同时我们也希望给那些愿意分享的小伙伴们一点点心意作为感谢,所以我们隆重了推出“有奖征文”活 动!本次活动的详情可以围观《征稿启事