【漏洞预警】WordPress REST API 内容注入

2017-02-07 9,779

漏洞信息

WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。在4.7.0版本后,REST API插件的功能被集成到WordPress中,由此也引发了一些安全性问题。近日,一个由REST API引起的影响WorePress4.7.0和4.7.1版本的漏洞被披露,该漏洞可以导致WordPress所有文章内容可以未经验证被查看,修改,删除,甚至创建新的文章,危害巨大。

官方公告:https://wordpress.org/news/2017/01/wordpress-4-7-2-security-release/

漏洞影响版本

  • WordPress 4.7.0
  • WordPress 4.7.1

漏洞分析

WordPress REST API 插件在 4.70 集成到 WordPress 中,由于权限控制失效导致内容注入或修改。

参见:https://blog.sucuri.net/2017/02/content-injection-vulnerability-wordpress-rest-api.html

复现环境

  • Apache2.4
  • PHP 7.0
  • WordPress 4.7.1

复现过程

1.安装WordPress并配置REST API

配置Apache+PHP+Mysql的运行环境,下载含有漏洞版本的WordPress(https://wordpress.org/wordpress-4.7.1.tar.gz)并安装。

加载Apache的rewrite模块。

在Apache的配置文件中添加

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

并在主配置文件中设置对应的WEB目录的AllowOverride为All

1

设置WordPress站点为固定链接

在Settings->Permalinks中的Common Settings设置为非Plain模式。例如下图,我们设置为Day and name。

2

2.漏洞复现

根据REST API文档,修改文章内容的数据包构造如下:

3

可以看到,不带任何验证信息会提示不允许编辑文章

构造可利用的数据包:

当url为/wp-json/wp/v2/posts/1?id=1a时,可以看到,已经成功跳过验证看到文章内容了。

4

PoC

  • WordPress 4.7.0/4.7.1 – Unauthenticated Content Injection (Python)

https://www.exploit-db.com/exploits/41223/

  • WordPress 4.7.0/4.7.1 – Unauthenticated Content Injection (Ruby)

https://www.exploit-db.com/exploits/41224/

exploit

https://packetstormsecurity.com/files/140893

修复方案

升级WordPress到最新版(4.7.2)

参考来源

WordPress 4.7.2 Security Release

【本文来源:MottoIN   安全脉搏yuyang小编编整理发布】

本文作者:yuyang

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/55280.html

Tags:
评论  (0)
快来写下你的想法吧!

yuyang

文章数:23 积分: 0

安全脉搏编辑~

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号