在测试过程中,我发现了一个 Flash 电影文件 (swf),它通过loadMovie. HTML是这样的:
<embed width="388" height="350" src="http://www.domain.com/first_flash.swf?
videoload=http://www.domain.com/videos/second_flash" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle"
play="true" loop="true" scale="showall" wmode="window" devicefont="false"
bgcolor="#ffffff" name="interior" menu="true" allowfullscreen="false"
allowscriptaccess="sameDomain" salign="" type="application/x-shockwave-flash">
如您所见,有directive allowscriptaccess="sameDomain". 另外,如果您直接访问 Flash 文件,我知道最近的 Flash 插件默认使用此设置。
在 first_flash.swf 中,我找到了加载第二部电影的代码:
_root.videourl = _root.videoload + '.swf';
video.loadMovie(_root.videourl);
我已经测试过,我实际上可以更改 videoload 变量以从其他域加载 swf。但我似乎无法在我控制的 second_flash.swf 上使用 getURL 执行 javascript。
所以我的问题是,我能做些什么来利用这个糟糕的设计?我如何证明它实际上是危险的?