http://www.jiathis.com/code/swf/m.swf 反编译得到如下代码:
明显里面有两个漏洞。
一、ExternalInterface.call("_gnayTrack.ready", paramObj);
paramObj是root.loaderInfo.parameters,将paramObj作为ExternalInterface.call方法的第二个参数,第二个参数的话我们可以用\"的方式逃逸出引号范围,执行javascript代码。
有人问了,root.loaderInfo.parameters是个对象,怎么传入ExternalInterface.call?ExternalInterface.call的第二个参数应该是一个字符串,但传入对象也是可以的,实际最后执行的时候应该是类似 _gnayTrack.ready({"a": "xxxxx"})
所以,我们现在不仅要闭合双引号",还要闭合一个大括号}和一个小括号),所以最后的payload比大家以前见到的多了}):

二、FSO造成XSS Rootkit
回到刚才说的FSO,由于FSO造成的漏洞乌云上也不少了,比如 http://wooyun.org/bugs/wooyun-2014-065197 、 WooYun: 一个flash的0day导致的淘宝网存储xss(可形成永久后门) 等。
我们看到swf源码中,确实是调用了FSO对象。我们找到对象保存在我们电脑上的文件C:\Users\phithon\AppData\Local\Google\Chrome\User Data\Default\Pepper Data\Shockwave Flash\WritableRoot\#SharedObjects\DR6LLMCM\www.jiathis.com\code\swf\m.swf\mao.sol

可以看到保存在FSO的内容实际上就是jid=xxxx,我们在控制台直接调用swf对象获得jid的值也验证了这一点:

这就好说了。我们将“脏数据”作为jia的值存入FSO,就能留下一个永久后门。
简单构造一个POC:
我将之保存在 http://mhz.pw/game/jiathis/jiathis.html,当访问了这个页面以后,再访问使用了jiathis的网站,即可在该站域下触发XSS,形成一个永久的XSS Rootkit:

