WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 技术教程(干货) 窗口小部件设置导入器/导出器插件中的未修补的高严重性漏洞

窗口小部件设置导入器/导出器插件中的未修补的高严重性漏洞

夏柔 4月 24, 2020

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,并且应该相当安全,尽管应该将停用和删除所有未使用的插件视为最佳做法。

披露时间表

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

结论

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

0
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
27 5月, 2020
央行:2018年以来降准12次释放长期资金约8万亿
夏柔
站长
夏山如碧 - 怀柔天下
1725
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2