WordPress 插件模块任意目录遍历漏洞补丁
更新时间:2018-10-23 分类:设计主题 浏览量:2684
一直以来都使用阿里云ECS,个人觉得很稳定,安防方面也比一般的做得好。因此,非常推荐大家使用。如果想要使用阿里云ECS的朋友,可以使用我们提供的推荐码:GO3K0C 可享九折优惠。
在此之前,收到阿里云云盾关于WordPress后台插件更新模块任意目录遍历漏洞的消息,原以为可以使用阿里云提供的补丁修复,但是,基础版云盾是不提供修复补丁,只有升级云盾的安骑士才能够使用自动修复。于是,只好自己寻求解决方法。
漏洞描述
wordpress后台文件/wp-admin/includes/ajax-actions.php中,对代码插件路径的输入参数plugin未进行正确的规范化转义,导致黑客可传入特殊路径,造成拒绝服务。【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】
修复方法步骤:
1、如果是WordPress 4.5.4版本:
在文件/wp-admin/includes/ajax-actions.php的3068行附近:
$plugin = urldecode( $_POST['plugin'] );
在这行代码后面加上:
$plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );
2、如果是WordPress 4.5.4之前版本
在文件/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 );
}
再找到以下内容:
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 版本不同,需要修改的代码不完全相同,可能只需要改其中一处,或者需要改三处。因此,建议对比修改内容进行修复。或者升级到最新版本 WordPress 4.6.1。