web

XAS

cross application script attack

Posted by dogewatch on July 8, 2016

前排膜一发Mario牛

前言

最近看到Dr.Mario大牛的一份ppt,感觉这个方向特别有意思,仿佛打开了新世界的大门,于是决定研究复现一下。

正文

# 复制与粘贴 通常我们会遇到带颜色的文本、字体或下划线之类的文本在复制粘贴后依然会是原来的格式,这一切都是以剪切版作为中介完成的。而剪切版支持很多格式的数据,其中我们需要用到的就是html格式。

# XAS 试想这样一个场景,当某人给你发送一份docx文档,里面有一些文本,而正好你需要将这串文本通过邮件发送给其他人。为了方便,你打开docx文档后直接复制该文本然后粘贴至浏览器打开的邮箱页面中。这一切看起来貌似没什么问题,文档看上去是一个正常的文档,杀毒软件没有对其爆错,你以为这些操作都是安全的。但是,如果文档格式中藏有js的payload,那么可能你的所有邮件在你复制粘贴完的一刹那就发送给攻击者了,这就是XAS,也就是跨程序脚本攻击。

# 利用演示 得益于剪切版对文本格式的完好保存,使得我们在文本中嵌入的js执行代码能够完整地被用户粘贴到浏览器中,而浏览器又会在粘贴完之后立即对其进行解析之执行。我们知道,office对docx文档的文本格式是以html标签的形式存储的。将一份docx重命名为zip,解压后在其word目录下的document.xml文档中存储着所有文本的信息。 img 可以看到,文本的字体名是放在w:rFonts标签的w:ascii属性中的,而经过测试发现只有w:ascii属性可以放入payload。我们将其改为'onmouseup=alert(71)//img 保存后选择以不压缩的方式打包为zip,再重命名为docx。打开这个文档,复制其文本内容,然后粘贴至浏览器中(以163邮箱的写邮件为例),见证奇迹的时刻到了,duang~~ img

后记

之前在IE11,chrome,firefox浏览器中测试均不能通过。其中chrome是对onxxx做了暴力过滤,firefox对单引号后面的所有内容都扔掉了。而IE11应该是采用了黑名单的方式,对它所能够执行的on事件做了过滤,例如onwheel这类ie不能执行的则没有过滤。最后找到了ie8浏览器才能完成这次展示。这么看来各大主流浏览器已经对这类漏洞做了比较好的修补了。不过这种思路对我的启发还是很大的,以前只是对于脚本攻击的理解只是单纯地停留在xss上面,而这种跨应用的脚本攻击应该还可以再进行更近一步地延伸扩展。

ps:之前看二哥交了个qqlive的伪协议漏洞,然后试着搞了半天居然也发现俩,交src通过了。人森第一次交src啊,小纪念下。 img