漏洞综述
关于WordPressWordPress是使用PHP语言开发的博客平台,WordPress也是网络上广受欢迎的内容管理系统(CMS)之一,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。
WordPress有许多第三方开发的免费模板,安装方式简单易用,同时WordPress拥有成千上万个各式插件和不计其数的主题模板样式。
漏洞介绍
近日,WordPress发布一个安全升级补丁,修复了一个WordPress核心中的远程代码执行漏洞。据分析该漏洞由目录遍历(CVE-2019-8943)以及本地文件包含(CVE-2019-6977)两部分组成。若攻击者想要利用此漏洞,需要在目标WordPress站点上拥有至少作者权限的账户。根据此漏洞披露者文中所介绍,这个漏洞在WordPress核心中被发现已经超过6年。这里主要分析目录遍历漏洞(CVE-2019-8943)。
漏洞复现
本地搭建WordPress环境,添加个author权限账号,登陆后上传图片,发现图片会被保存至wp-content/uploads目录,与此同时,在wp_postmeta表中仍然会有该图片信息的记录:
在编辑图片时,会发送如下的数据包:
分析此处服务端代码,发现存在如下方法update_post_meta,这个方法的作用是基于POST 的ID更新POST元字段,也就是说通过$post_ID, $field, $value等参数来更新数据库中的信息,在正常的修改图片操作中,$postarr[meta_input]值会为空,但是可以构造payload篡改数据库中对应value。发送payload:
这样$postarr[meta_input]中的key与value被遍历取出,数据库中内容被篡改:
利用存在的目录穿越漏洞(CVE-2019-8943)向其他目录写入这个jpg文件:
目录穿越漏洞位于wp_crop_image方法中, 此方法需要自己构造数据包进行调用如下:
分析这个方法发现会首先调用get_attached_file,该方法通过id寻找数据库中_wp_attached_file字段的value值,而上一步中我们已经通过数据包篡改了这个值为:2019/02/test.jpg?../../shell.jpg,之后get_attached_file方法会将该字段内容拼接作为图片路径返回:
D:/phpstudy/ wordpress/wp-content/uploads/2019/02/test.jpg?../../shell.jpg
在得到了图片地址后,wordpress将会直接加载这个地址,当然文件系统中根本无法找到这个文件。当该方法失败后,WordPress将尝试从自己的服务器下载图像:
http://192.168.50.151/wordpress/wp-content/uploads/2019/02/test.jpg?../../shell.jpg
当http协议解析这个url时,test.jpg后面的内容会被忽略,也就是说,可以正常找到并访问该图, 接下来,wp_coce_Image()方法会将此文件保存,但是在保存时,并没有对传入的参数进行校验,导致了目录穿越的产生。
首先,先通过mkdir建立目录,其次,通过$editor->save将文件保存到生成目录中:
此时我们通过构造的payload修改数据库中内容,使得其如下图形式:
那么最终会在themes\目录中生成我们的jpg,例如cropped-shell.jpg,该图片是通过剪裁后的图片,会有一个cropped前缀。这样可以利用目录穿越向服务器目录下写入了我们的图片文件,但一般情况下图片文件不会以代码执行,这里刚好结合WordPress的本地文件包含漏洞CVE-2019-6977实现代码执行,该包含漏洞的影响范围是WordPress 4.x < 4.9.9 and 5.x < 5.0.1 版本。
WordPress的主题位于wp-content / themes目录中为不同的案例提供模板文件。例如,如果博客的访问者想要查看帖子,WordPress会通过post.php在当前活动主题的目录中查找模板文件,如果找到模板,它将包含它。
正常情况下,是无法通过web方式访问、写入此目录。但是现在通过目录穿越,已经可以将恶意图像文件插入此目录。然后通过加载这个themes,即可执行恶意构造好的图片payload。
影响范围
受影响的版本:
WordPress 5.0.0
WordPress 4.9.8 及之前版本
处置方法
(1)官方补丁
WordPress官方已经在WordPress5.0.1版本中更新了安全补丁, 建议用户立即升级至WordPress5.0.1之后的最新版本。
下载地址:
https://wordpress.org/download/
(2)H3C解决方案
新华三IPS规则库现有规则将在1.0.65版本支持对该漏洞的拦截,建议关注新华三官网及时升级版本并使能相关规则。
声明
本安全公告仅用来描述可能存在的安全问题,未经新华三大安全允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,新华三大安全以及安全公告作者不为此承担任何责任。新华三大安全拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。
关于新华三大安全
新华三集团在安全领域拥有十余年的经验积累,拥有1000多项信息安全领域专利技术,具备业界最全面的安全交付能力,可提供近300款产品和专业的安全咨询评估服务团队,并且具备以客户为导向的需求快速响应能力,从底层信息安全基础设施到顶层设计为国家和企业提供安全可信的防护。