WordPress 5.0.0 RCE分析(CVE-2019-6977)

摘要: 此漏洞通过路径遍历和本地文件包含漏洞的组合实现WorePress核心中的远程代码执行,据漏洞发布者ripstech透露,此漏洞已在WordPress核心中存在6年以上。

此漏洞通过路径遍历和本地文件包含漏洞的组合实现WorePress核心中的远程代码执行,据漏洞发布者ripstech透露,此漏洞已在WordPress核心中存在6年以上。

权限需求

image.png

影响范围

因WordPress 4.9.9和5.0.1其他安全补丁所致,文件包含漏洞仅有5.0.0单一版本可利用,而路径遍历漏洞仍可使用且当前仍未打补丁。

任何安装了此插件的WordPress站点都会错误地处理Post Meta条目,这样仍然可以进行利用。

漏洞基础

将图像上传到WordPress安装时,首先将其移动到uploads目录(wp-content/uploads)。WordPress还将创建对数据库中图像的内部引用,以跟踪元信息,例如图像的所有者或上传的时间。

该属性作为Post Meta条目存储在数据库中。这些条目中的每一个都是键/值对,分配给某个ID。

譬如:

image.png

在此示例中,图像已分配给post_ID 50.倘若用户希望将来使用或编辑具有所述ID的图像,WordPress将查找匹配的_wp_attached_file条目并使用它的值以便在wp-content/uploads目录中查找该文件。

漏洞构成

本地文件包含部分

WordPress 4.9.95.0.1之前的这些Post Meta条目的问题在于可以修改任何条目并将它们设置为任意值。

当图像被更新时(例如,它的描述被改变),

image.png

function edit_post( $post_data = null ) {

    if ( empty($postarr) )
        $postarr = &$_POST;
    ⋮
    if ( ! empty( $postarr['meta_input'] ) ) {
        foreach ( $postarr['meta_input'] as $field => $value ) {
            update_post_meta( $post_ID, $field, $value );
        }
    }

可以看出,可以注入任意Post Meta条目。由于未对哪些条目进行了修改,因此攻击者可以更新_wp_attached_file元条目并将其设置为任何值。这不会以任何方式重命名文件,它只会更改WordPress在尝试编辑图像时要查找的文件。这将导致稍后的路径遍历。

具体位置:


  • image.png



  • 1550639364299.png



  • image.png



  • 1550639433772.png



  • image.png



  • 1550639462787.png

路径遍历部分

image.png

image.png

image.png

image.png

image.png

image.png

函数整体(wp-admin / includes / image.php)如是:


1550640342998.png

实现RCE

综上,可以确定哪个文件被加载到图像编辑器中(因未进行处理)。但是,如果文件不是有效图像,图像编辑器将会抛出异常。故而,只能在上传目录之外裁剪图像。

那么如果未找到所需图像,WordPress会尝试下载,这就导致了RCE。


捕3获.PNG


image.png

image.png

通过将PHP代码注入映像,攻击者可以获得任意远程执行代码。

Payload制作—-Imagick

WordPress支持PHP的两个图像编辑扩展:GDImagick。它们之间的区别在于Imagick不会删除图像的exif元数据,其中可以存储PHP代码。

总结

WordPress 5.0.0 RCE 条件较为苛刻,但毕竟是RCE,一旦被利用危害巨大。况且,虽说仅这一小版本的本地文件包含可协同目录遍历完成RCE,但因为这目录遍历漏洞至今未修,一旦用户安装允许覆盖任何Post data的插件,这RCE依然可被利用。

参考

https://blog.ripstech.com/2019/wordpress-image-remote-code-execution/

https://wordpress.org/download/

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6977


上一篇:CVE-2018-14847...
下一篇:虚拟化漏洞:CVE-2015...