最新公告
  • 欢迎您光临源库坊,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 窗口小部件设置导入器/导出器插件中的未修补的高严重性漏洞

    2020年3月12日,我们的威胁情报团队在Widget Settings Importer / Exporter(一个安装了40,000多个WordPress插件)中发现了一个存储的跨站脚本(XSS)漏洞。此缺陷使经过身份验证的攻击者具有最小的订户级别权限,可以将包含任意JavaScript的自定义窗口小部件导入并激活到安装了插件的网站中。

    我们在2020年3月12日当天与插件供应商联系,但尚未收到回复。2020年3月20日,我们与WordPress插件小组联系,并向他们发送了漏洞的全部披露信息,在2020年4月13日与他们进行跟进后,该插件已从WordPress存储库中删除。由于目前没有可用的补丁程序,我们强烈建议停用并删除此插件。

    Wordfence Premium用户于2020年3月12日收到一条新的防火墙规则,以防止针对这些漏洞的攻击。免费Wordfence用户于2020年4月11日收到此规则。

    说明
    :受认证的存储的跨站点脚本(XSS)


    受影响的插件
    :窗口小部件设置导入器/导出器


    插件段
    :窗口小部件设置-importexport 


    受影响的版本
    :<= 1.5.3 


    CVE ID
    :待处理的


    CVSS得分
    :7.4(高)


    CVSS矢量

    CVSS :3.0 / AV:N / AC:L / PR:L / UI:N / S:C / C:L / I:L / A:L 


    完整版本
    :N / A

    窗口小部件设置导入器/导出器是一个WordPress插件,提供了导入和导出WordPress窗口小部件的功能– WordPress功能可为网站的页眉,侧边栏和页脚添加功能。该插件注册了用于执行窗口小部件导入的AJAX操作:

    add_action( 'wp_ajax_import_widget_data', array( __CLASS__, 'ajax_import_widget_data' ) );

    与许多类似漏洞一样,AJAX操作调用的函数无法使用功能检查或随机数检查。这意味着任何经过身份验证的用户,无论其权限如何,都可以使用它将小部件导入网站,包括包含恶意JavaScript的小部件,这些小部件将在该网站的任何访问者的浏览器中执行。

    具体来说,该ajax_import_widget_data函数通过调用file_get_contents提供的import_file参数来获取要导入的小部件数据。大多数站点都配置有设置,该设置allow_url_fopen允许该功能获取远程托管文件的内容。这样,攻击者可以通过向发送$_POST请求wp-admin/admin-ajax.php,将action参数设置为import_widget_data,将import_file参数设置为精心制作的远程托管JSON文件的URL并将widgets参数设置为描述小部件的请求,从而将恶意小部件导入网站。被导入。

    如果clear_current设置了该参数,则站点上任何当前活动的窗口小部件也将被删除。如果导入的窗口小部件包含恶意JavaScript,则可以将其用于将网站访问者重定向到恶意网站,甚至窃取管理员的会话,有可能导致网站接管。

    脆弱的功能:

       public static function ajax_import_widget_data() {
           $response = array(
               'what' => 'widget_import_export',
               'action' => 'import_submit'
           );
    
           $widgets = isset( $_POST['widgets'] ) ? $_POST['widgets'] : false;
           $import_file = isset( $_POST['import_file'] ) ? $_POST['import_file'] : false;
    
           if( empty($widgets) || empty($import_file) ){
               $response['id'] = new WP_Error('import_widget_data', 'No widget data posted to import');
               $response = new WP_Ajax_Response( $response );
               $response->send();
           }
    
           $clear_current = isset( $_POST['clear_current'] );
    
           if ( $clear_current )
               self::clear_widgets();
    
           $json_data = file_get_contents( $import_file );
           $json_data = json_decode( $json_data, true );
           $sidebar_data = $json_data[0];
           $widget_data = $json_data[1];
           foreach ( $sidebar_data as $title => $sidebar ) {
               $count = count( $sidebar );
               for ( $i = 0; $i < $count; $i++ ) {
                   $widget = array( );
                   $widget['type'] = trim( substr( $sidebar[$i], 0, strrpos( $sidebar[$i], '-' ) ) );
                   $widget['type-index'] = trim( substr( $sidebar[$i], strrpos( $sidebar[$i], '-' ) + 1 ) );
                   if ( !isset( $widgets[$widget['type']][$widget['type-index']] ) ) {
                       unset( $sidebar_data[$title][$i] );
                   }
               }
               $sidebar_data[$title] = array_values( $sidebar_data[$title] );
           }
    
           foreach ( $widgets as $widget_title => $widget_value ) {
               foreach ( $widget_value as $widget_key => $widget_value ) {
                   $widgets[$widget_title][$widget_key] = $widget_data[$widget_title][$widget_key];
               }
           }
    
           $sidebar_data = array( array_filter( $sidebar_data ), $widgets );
           $response['id'] = ( self::parse_import_data( $sidebar_data ) ) ? true : new WP_Error( 'widget_import_submit', 'Unknown Error' );
    
           $response = new WP_Ajax_Response( $response );
           $response->send();
       }

    我该怎么办?

    该插件可能不会被打补丁,因此我们强烈建议您停用此插件并将其从您的站点中删除。可以使用具有类似功能的插件,例如Widget Importer&Exporter,并且应该相当安全,尽管应该将停用和删除所有未使用的插件视为最佳做法。

    披露时间表

    20203月12日 –最初发现并分析了漏洞。为Wordfence Premium用户发布的防火墙规则。最初与插件供应商的联系。
    20203月20日 –我们与WordPress插件小组联系,并向他们提供完整的披露信息。
    20204月11日 –免费使用Wordfence的用户会收到防火墙规则。
    20204月13日 –我们跟进WordPress插件小组,该插件已从WordPress存储库中删除。
    20204月15日 – 30天后漏洞被披露,插件供应商未对此做出回应。

    结论

    在今天的帖子中,我们在Widget Settings Importer / Exporter WordPress插件中详细描述了一个存储的跨站点脚本(XSS)漏洞。这些缺陷尚未修复,因此我们建议用户立即停用并删除此插件,直到提供补丁为止。自2020年3月12日以来,运行Wordfence Premium的站点已受到保护,免受此漏洞的攻击。运行免费版Wordfence的站点在2020年4月11日收到了防火墙规则更新。

    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"www.yuankufang.com",如遇到无法解压的请联系管理员!
    源库坊 » 窗口小部件设置导入器/导出器插件中的未修补的高严重性漏洞

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    源库坊
    一个高级程序员模板开发平台
    • 350会员总数(位)
    • 1196资源总数(个)
    • 4本周发布(个)
    • 0 今日发布(个)
    • 1479稳定运行(天)

    提供最优质的资源集合

    赞助本站svip 了解详情