Adobe Flex开发包index.template.html页面跨站脚本漏洞

来源:岁月联盟 编辑:zhuzhu 时间:2009-09-14
Adobe Flex开发包index.template.html页面跨站脚本漏洞 影响版本:
Adobe Flex <= 3.3 SDK漏洞描述:
CVE(CAN) ID: CVE-2009-1879

Adobe Flex是用于构建和维护Web应用程序的高效开放源码框架。

Flex没有正确地过滤用户提交给index.template.html页面的请求参数,通过window.location javascript对象所传送的URL参数之后被存储在了MMredirectURL变量中,并传送给了AC_FL_RunContent()函数。

59行:

.snip..
var MMredirectURL = window.location;
.snip..

63行:

AC_FL_RunContent(
        ..snip..
            "FlashVars", "MMredirectURL=" MMredirectURL ’&MMplayerType=’ MMPlayerType /
                ’&MMdoctitle=’ MMdoctitle "",
            ..snip..

带有用户可控输入的MMredirectURL变量传送给了AC_GetArgs,最终到达AC_Generateobj执行document.write。向HTML写入未经验证数据会导致跨站脚本安全。

AC_OETags.js文件

200行:

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

178行:

function AC_Generateobj(objAttrs, params, embedAttrs) 

    var str = ’’;
    if (isIE && isWin && !isOpera)
    {
          str  = ’<object ’;
          for (var i in objAttrs)
              str  = i   ’="’   objAttrs[i]   ’" ’;
          str  = ’>’;
          for (var i in params)
              str  = ’<param name="’   i   ’" value="’   params[i]   ’" /> ’;
          str  = ’</object>’;
    } else {
          str  = ’<embed ’;
          for (var i in embedAttrs)
              str  = i   ’="’   embedAttrs[i]   ’" ’;
          str  = ’> </embed>’;
    }

    document.write(str);
}

<*参考 
http://marc.info/?l=bugtraq&m=125071471609263&w=2
http://www.adobe.com/support/security/bulletins/apsb09-13.html
*>
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有安全性,仅供安全研究与教学之用,风险自负!http://FlexApp/Flex/index.template.html?"/></object><script>alert(’XSS’)</script>SEBUG安全建议:
厂商补丁:

Adobe
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://kb2.adobe.com/cps/495/cpsid_49530.html