近期wordpress被检测出漏洞的解决方法

WordPress技术博客新闻资讯

wordpress是一款非常优秀的开源程序,更新速度也非常的快,因此漏洞很快就会被新的版本给更新好。

但是任何一款程序都是会有漏洞的,所以才会不断地有更新,那么下面我们就对近期wordpress在第三方检测工具,如360网站卫士检测平台,阿里云扫描等等检测出来的一些漏洞进行分析。

那些漏洞是什么原因造成的,以及临时的解决方法。

wordpress WP_Image_Editor_Imagick漏洞

这个漏洞准确的来说并不是wordpress的漏洞,而是由于ImageMagick这个PHP图像处理模块爆出的“0day”漏洞所引发的。

ImageMagick是什么

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。

这个应用程序所出的漏洞需要ImageMagick出来新的版本进行更新之后才能修复,如果你的服务器商没有更新这个lo那么如果我们希望能够马上修复好这个漏洞,只能是使用临时的方法去修复了,通过修改wordpress的一些代码来禁用ImageMagick,就能达到修复的目的:

在wp-includes/media.php中搜索
$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD' ) );

修改为

$implementations = apply_filters( 'wp_image_editors', array('WP_Image_Editor_GD','WP_Image_Editor_Imagick' ) );

若不想修改wordpress源代码,那么可以在你的主题function.php文件中添加(WEB主题公园的付费用户请在widget.php中添加)如下代码:
add_filter( 'wp_image_editors', 'cmp_change_graphic_lib' );
function cmp_change_graphic_lib($array) {
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

这样就能够解决这个漏洞的问题了。

 

wordpress后台插件更新模块任意目录遍历导致DOS漏洞

这个漏洞是在WordPress后台文件/wp-admin/includes/ajax-actions.php中

代码插件路径的输入参数plugin未进行正确的规范化转义,导致黑客可传入特殊路径,造成拒绝服务。

修复的方法:

1.在文件ajax-actions.php的3068行附近:

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

在这段代码后面加上:

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

2.在文件ajax-action.php中大概3004行:

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 ); }

3.找到3025行:

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 ); } }

这样这个漏洞就修复完成了。

 

目前wordpress4.6.1版本在第三方检测工具中检测到的漏洞大概就是这两个漏洞了,如果你还通过其他的渠道检测出来漏洞或者有更好的方法解决也可以分享给大家。

 

上一篇:

下一篇:

文章评论

您好!请登录

取消回复
    展开更多