WordPress漏洞修复细节全记录

漏洞袭来

今天一登录阿里云控制台时,就看到提示有个严重漏洞需要修复,这还得了,反手就把它补上了

No.1 漏洞基本信息

漏洞名称:     wordpress <= 4.9.6 任意文件删除漏洞
CVSS分值: 6.3      (注: Common Vulnerability Scoring System,通用漏洞评分系统)
披露时间:     2018-06-28
如图所示:
WordPress任意文件删除漏洞警告
WordPress任意文件删除漏洞警告

漏洞简介:

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

漏洞分析:

该漏洞出现的原因是由于在wordpress的wp-includes/post.php文件中wp_delete_attachement()函数
在接收删除文件参数时未进行安全处理,直接进行执行导致。
WordPres任意文件删除漏洞分析
WordPres任意文件删除漏洞分析
如图所示:
wp_delete_attachement()中,unlink()传入的$meta[‘thumb’],未经过任何过滤处理直接被调用。
这段代码的目的是为了在删除图像的同时删除图像的缩略图。
在WordPress中通过媒体管理器上传的图像被表示为附件类型的内容。
$meta[‘thumb’]的值,从数据库中检索,并保存成表示图像的文章自定义字段。
因此,在从数据库检索到unlink()函数调用之间表示缩略图文件名的值没有经过任何检查和过滤。
如果该值在保存到数据库之前也没有经过对过滤不安全内容处理措施,将可能导致出现利用该功能执行任意文件删除。
WordPres任意文件删除漏洞分析
WordPres任意文件删除漏洞分析
如图所示:
在从用户传值并赋给$_POST[‘thumb’]数到保存到数据库wp_update_attachment_metadata()函数执行之间,
没有安全措施来确保这个值为真正是在编辑的附件缩略图。
$_POST[‘thumb’]可以变为任意文件的路径,这个值可以保存到WordPress上传目录的相对路径中,
当附件被删除时,该文件将被删除。攻击者可利用此漏洞进而执行任意代码。

解决方案:

您可以升级到wordpress 4.9.7, 也可以使用下面的两个方法之一, 进行手动修复

方案一:

直接修改wp-includes/post.php文件  (推荐)

vi   wp-includes/post.php

/wp_update_attachment_metadata     (命令作用是: 查找wp_update_attachment_metadata)

添加下面的判断条件:

在post.php中添加代码修复任意文件删除漏洞
在post.php中添加代码修复任意文件删除漏洞

 

最后保存退出即可

:wq               (命令作用:  保存并退出)

 

这时候, 回到阿里云控制台, 再次验证一下, 可以看到漏洞警告已经没有了

WordPress任意文件删除漏洞修补完成
WordPress任意文件删除漏洞修补完成

方案2:

在主题的functions.php文件中, 通过钩子,进行修补(不推荐)

在主题目录下的functions.php文件中通过钩子修补漏洞
在主题目录下的functions.php文件中通过钩子修补漏洞

 

 

 

未完待续,下一章节,つづく