阿里云服务器 WordPress 后台插件更新模块任意目录遍历导致DOS漏洞

in Wordpress with 0 comment

最近整天收到阿里云的短息通知,实在是烦了。今天就动手处理下,要么升级wordpress,要么就手动修复漏洞。
手动修复“WordPress 后台插件更新模块任意目录遍历导致DOS漏洞”这个漏洞其实并不难,方法如下:

描述

wordpress后台文件/wp-admin/includes/ajax-actions.php中,对代码插件路径的输入参数plugin未进行正确的规范化转义,导致黑客可传入特殊路径,造成拒绝服务。

修复方法

wordpress 4.5.4版本:
打开WordPress后台文件/wp-admin/includes/ajax-actions.php,大概在3077行左右找到以下代码:

$plugin = urldecode( $_POST['plugin'] );

在它的下面添加一行:

$plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );

WX20170703-152533@2x.png
至此,修改保存上传覆盖后即可成功修复WordPress 4.5.4版本的WordPress后台插件更新模块任意目录遍历导致DOS漏洞。
wordpress 4.5.4版本以下:
WordPress 4.5.4版本以下的,除了要按照WordPress 4.5.4版本的办法修复之外,还需要继续进行以下两个步骤的操作(PS:如果某版本的以下2点中的代码已经跟修复后一样的就不用修改了):
1、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代码:

if ( $plugin_update_data === true ) {
    wp_send_json_error( $status );
}

直接修改为:

if ( $plugin_update_data === true ) {
    $status['error'] = __( 'Plugin update failed.' );
    wp_send_json_error( $status );
}

2、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代码:

if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
    $status['error'] = $wp_filesystem->errors->get_error_message();
    }
 wp_send_json_error( $status );
 }
}

直接修改为:

if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
     $status['error'] = $wp_filesystem->errors->get_error_message();
   }
wp_send_json_error( $status );
} else {
// An unhandled error occured
$status['error'] = __( 'Plugin update failed.' );
wp_send_json_error( $status );
}
}

至此,修改保存上传覆盖后即可成功修复WordPress 4.5.4版本以下的WordPress后台插件更新模块任意目录遍历导致DOS漏洞。

特别提示

修复后,一定要到阿里云后台“重新验证”或“忽略”漏洞,否则还是会一直发送信息的!

Responses
2016lengh.gif2016kun.gif2016db.gif2016baojin.gif2016jk.gif2016kb.gif2016qq.gif2016zj.gif2016qiao.gif2016am.gif2016kk.gif2016qd.gif2016gg.gif2016lh.gif2016wq.gif2016gz.gif2016zhh.gif2016ll.gif2016shuai.gif2016kel.gif2016zk.gif