WordPress <= 4.9.6 任意文件删除漏洞 修复方法

泥人传说
泥人传说
泥人传说
893
文章
110
评论
2018-07-0806:00:19
评论
933 1827字

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

WordPress <= 4.9.6 任意文件删除漏洞 修复方法 建站程序 第1张-泥人传说

漏洞原理与危害
该漏洞出现的原因是由于在WordPress的wp-includes/post.php文件中wp_delete_attachement()函数在接收删除文件参数时未进行安全处理,直接进行执行导致。

function wp_delete_attachment( $post_id, $force_delete = false ) {
    ...
$meta = wp_get_attachment_metadata( $post_id );
    ...
if ( ! emptyempty($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']可控则可导致文件删除。

文件/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']可控。

修复建议:
可将下面的代码加载到当前主题的function.php中进行弥补:

 
add_filter( 'wp_update_attachment_metadata', 'rips_unlink_tempfix' );
function rips_unlink_tempfix( $data ) {
    if( isset($data['thumb']) ) {
        $data['thumb'] = basename($data['thumb']);
    }
    return $data;
}
  • 本文由 发表于 2018-07-0806:00:19
  • 转载请务必保留本文链接:http://nrcs.xyz/software-install/cms/7791.html
WordPress 5.5 Beta 3最新测试版下载 wordpress

WordPress 5.5 Beta 3最新测试版下载

WordPress 5.5 测试版发布,正式版预计2020 年 8 月 11日发布。新版本除了乐此不彼地继续改进区块编辑器之外,增加的两个功能还是有些用处:   图片延迟加载   ...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: