WordPress REST API漏洞被利用 数万网站被篡改

  • A+
所属分类:信息安全

在WordPress 4.7.0、4.7.1版本中,REST API存在着一个越权漏洞,过去两天,黑客利用 REST API 漏洞对 WordPress 网站发动攻击,纂改了 3.9 万域名的 150 万网页。漏洞允许攻击者发送一个简单的 HTTP 请求,绕过身份验证系统,编辑 WordPress 网页的标题和内容,它只影响 WordPress v4.7.0 和 4.7.1。安全公司 Sucuri 本周一报告,有 6.7 万个 WordPress 网页被利用这种方法涂改,但过去两天被纂改的网页数量出现了爆发式增长,攻击仍然在继续。

该漏洞已在上个月释出的 WordPress v4.7.2 中修复,未避免站点被黑客篡改,堕落的鱼提醒各位站长尽快备份升级Wordpress到最新版本。

WordPress REST API

先来简单介绍下REST API的使用。Wordpress智库给出的介绍如下:

WordPress正在朝着成为一个全堆栈式的应用框架发展,我们需要新的API。于是WordPress JSON REST API 项目诞生了,该项目的目的在于创造一个易于使用,易于理解和经过良好测试的框架来创建这些API,同时也为WordPress核心创建API。

这个插件(WordPress JSON REST API (WP API))提供了一个易于使用的REST API,让我们可以通过HTTP获取简单方便的JSON格式的数据,这些数据包括用户,文章,分类等等。获取或更新数据非常简单,只需要发送一个HTTP请求就可以了。

具体使用详情请参照REST API Handbook

https://developer.wordpress.org/rest-api/

WordPress 4.7.1越权漏洞分析

在使用api对文章进行操作之前,需要对操作进行授权,授权方式有三种:cookie、oauth和简单认证。如果不进行授权直接通过api对文章进行修改操作,会返回一个401,如下图所示

Wordpress  REST API漏洞被利用 数万网站被篡改

如果想成功利用漏洞,必须绕过权限管理,也就是绕过update_item_permissions_check()模块,使其最终return true。

如果我们输入的url是这种形式

http://192.168.3.112/wordpress/index.php/wp-json/wp/v2/posts/1/?id=1grq

get_post()函数返回值一定为null,这样会使得$post值为null,回头来看update_item_permissions_check()函数,这时update_item_permissions_check()函数的返回值竟然为true了!

WordPress 4.7.1越权漏洞利用

目前已经有研究员在GitHub上给出相应的poc,链接如下

https://gist.github.com/leonjza/2244eb15510a0687ed93160c623762ab

WordPress 4.7.1越权漏洞修补

未避免WordPress 4.7.1越权漏洞被利用,请尽快升级到WordPress 4.7.2。Wordpress已在4.7.2版本中完全修复这个漏洞。如果get_post()判定$post结果为 false,则直接返回$post,避免$post进入下层if判定绕过权限检查。

Wordpress  REST API漏洞被利用 数万网站被篡改

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: