1. 首页
  2. 网络安全

WordPress <= 4.6.1 使用语言文件任意代码执行漏洞

一、漏洞概述

WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统,近日在github 上爆出这样一个漏洞,在其<=4.6.1版本中,如果网站使用攻击者提前构造好的语言文件来对网站、主题、插件等等来进行翻译的话,就可以执行任意代码。

二、漏洞影响及利用条件

任意代码执行,但有以下两个前提:

1、攻击者可以上传自己构造的语言文件,或者含有该语言文件的主题、插件等文件夹
2、网站使用攻击者构造好的语言文件来对网站、主题、插件等进行翻译
这里举一个真实场景中的例子:攻击者更改了某个插件中的语言文件,并更改了插件代码使插件初始化时使用恶意语言文件对插件进行翻译,然后攻击者通过诱导管理员安装此插件来触发漏洞。

三、WordPress收到影响的版本

影响版本:<= 4.6.1

四、漏洞复现利用

1. 环境搭建

搭建WordPress版本为4.6.1版本。修改字体,正常的字体文件zh_CN.mo,其中有这么一段:

Wordpress <= 4.6.1 使用语言文件任意代码执行漏洞

Plural-Froms这个header就是上面的函数所需要处理的,其中nplurals的值即为$nplurals的值,而plural的值正是我们需要的$expression的值。所以我们将字体文件进行如下改动:

Wordpress <= 4.6.1 使用语言文件任意代码执行漏洞

然后我们在后台重新加载这个字体文件,同时进行动态调试,可以看到如下情景:

Wordpress <= 4.6.1 使用语言文件任意代码执行漏洞

我们payload中的)首先闭合了前面的(,然后;结束前面的语句,接着是我们的一句话木马,然后用/*将后面不必要的部分注释掉,通过这样,我们就将payload完整的传入了create_function,在其创建函数时我们的payload就会被执行,由于访问每个文件时都要用这个对字体文件解析的结果对文件进行翻译,所以我们访问任何文件都可以触发这payload

 

2、函数漏洞利用

访问本地搭建的环境,http://localhost/create_function.php?id=1;}phpinfo();/* 。通过访问我们可以看到下图实例测试图。就可以让phpinfo()函数执行了!

Wordpress <= 4.6.1 使用语言文件任意代码执行漏洞

由于访问每个文件时都要用这个对字体文件解析的结果对文件进行翻译,所以我们访问任何文件都可以触发这个payload。

 

 

原创文章,作者:lichun,如若转载,请注明出处:http://www.lichunseo.com/wlaq/1694.html