WordPress 5.0.0 远程代码执行漏洞

释放双眼,带上耳机,听听看~!

网安引领时代,弥天点亮未来     





 

 

漏洞概述

    2019年2月19日,RIPS科技公司的Simon Scannell发表了他关于WordPress中可能导致远程代码执行(RCE)的核心漏洞的发现,这些漏洞被指定为CVE-2019-8942和CVE-2019-8943。据漏洞披露者文中所介绍,这个漏洞在WordPress核心中被发现已经超过6年。此漏洞由Post Meta变量覆盖、目录穿越写文件、模板包含组合后构成远程代码执行漏洞。


漏洞触发


    (1)存在漏洞的WordPress版本如下:

       WordPress commit \<= 43bdb0e193955145a5ab1137890bb798bce5f0d2 

    (WordPress 5.1-alpha-44280)

参考地址:

   https://github.com/WordPress/WordPress/commit/43bdb0e193955145a5ab1137890bb798bce5f0d2

    (2)需要至少编辑者的账号


漏洞的影响范围


受影响的WordPress版本为:

    (1)WordPress 5.1-alpha-44280更新后

    (2)未更新的4.9.9~5.0.0的WordPress

    服务端:Windows、Linux、mac

    图片处理库:GD/Imagick


 

实验环境、Payload和参考资料

本文环境:Docker-WordPress4.9.8

需要使用到了的Payload如下:

&meta_input[_wp_attached_file]=year/month/file#/file&meta_input[_wp_attached_file]=year/month/file#/../../../../themes/twentyseventeen/file&meta_input[_wp_page_template]=cropped image

 

复现过程

1.Post Meta覆盖

我们以author权限登录到控制面板,找到media按钮添加利用exiftool工具生成的恶意图片

上传图片成功后,查看图片后在点击update按钮时,使用Burp Suite抓取如下面类型的数据包,然后传到repeater模块下,放行数据包

找到edit image用于触发剪切模块

使用剪切功能后,当点击save按钮时使用burp suite抓取类似下面的数据包,然后传到repeater模块后,放行数据包

使用上面repeater中的第一个数据包,在后面添加字段

&meta_input[_wp_attached_file]=2019/08/poc.jpg#/poc.jpg,点击GO按钮

使用上面repeater模块中第二个数据包,点击GO按钮后,response的数据包返回如下

2.目录穿越造成文件写入

再次使用repeater中的第一个数据包,添加字段

&meta_input[_wp_attached_file]=2019/08/poc.jpg#/../../../../themes/twentyseventeen/poc.jpg。其中WordPress4.9.8的默认主题为序号为twentyseventeen,当然也可以使用WPScan进行主题扫描

转到repeater模块的第二个数据包,点击GO按钮,数据包回显如下,可以看到剪切的文件名为poc-c156253360460.jpg

访问docker中的路径找到了对应的图片名称,完成了目录穿越的效果

3.本地文件包含(模块功能)

通过创建带有有效载荷的帖子,尝试是否能够利用图片码,在点击publish按钮时进行抓包,会截取到如下内容,然后将其放入repeater模块下,放行数据包内容

在repeater模块下的第三个数据包中,添加字段&meta_input[_wp_page_template]= poc-c156253360460.jpg,点击GO按钮

记录数据包中的POST_ID,删除原来的数据包,创建以下数据包内容。虽然响应包成功回显内容但是并没有被成功利用。经过查阅资料没有找到解决办法,推测是docker环境以及其中Imagick的版本问题导致无法成功利用

本实验没有成功测试出最后的RCE,下面内容为成功利用图片码的效果图。

后面的利用操作可以参考:
https://www.youtube.com/watch?reload=9&v=6Sxs4vQJK_s

 

修复建议

1.升级到最新本5.2.2

2.设置后端图片库为GD


 

思考总结

环境问题总结


    (1)WordPress启动后会自动更新,因此在wp-config.php中加如一行代码

define(‘AUTOMATIC_UPDATER_DISABLED’,true);来禁止更新。

    (2)Imagick和GD对图片的处理方式不同的问题,对GD的利用需要Fuzz出paylaod,Imagick直接修改exif部分即可。

    (3)Windows下的目录不能含有?,需要采用#号;Linux和mac支持假目录,可以使用?号。

    (4)GitHub官网的所有release版本都已经修复了该漏洞。

    (5)固定连接设置问题,默认配置下查看附件会出现404,需要在路径前面添加index.php。


漏洞构成思路总结


    首先是一个变量覆盖,将我们需要的../引入数据库;之后是一个剪裁图片功能未对变量内容进行审查造成目录穿越写文件;最后是模板参数处理过程中的一个本地文件包含漏洞,最终构成RCE。每个漏洞独立出来危害都极低,但是组合后却可以导致RCE的出现,这才是大佬们的水平,佩服的五体投地。


文章总结


    本文对该漏洞进行了复现,对于大佬们直接在代码层面进行分析操作,小生水平实在不够,就不在文章中阐述了。如果有对该漏洞感兴趣的,可以参考下面的链接。

参考资料:

https://github.com/brianwrf/WordPress_4.9.8_RCE_POC

https://aluvion.github.io/2019/03/10/Wordpress5-0-RCE-CVE-2019-8942%E5%A4%8D%E7%8E%B0/

https://mp.weixin.qq.com/s/9DMGLOvFJUjq8MaMr9eg6A


 

喜欢别忘了关注我们哦~



学海浩茫,

予以风动,
必降弥天之润!


   弥  天

安全实验室


本文源自微信公众号:弥天安全实验室

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索