【漏洞演示视频】WordPress REST API 内容注入漏洞
  

Sangfor_闪电回_朱丽 4574

{{ttag.title}}

【漏洞演示视频】WordPress REST API 内容注入漏洞
以下内容来自  千里目安全实验室


近期,WordPress 被曝出存在内容注入漏洞,攻击者利用此漏洞可越权对网站文章内容进行修改。

为了让大家更直观的了解漏洞造成的危害,千里目安全实验室倾力录制攻击视频供大家观赏。


千里百科

WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站,也可以把 WordPress 当作一个内容管理系统(CMS)来使用。

REST API 是 WordPress 4.7.0 版本开始默认启用的插件,通过 REST API 可对已发布的文章执行多个修改操作,比如修改日期、标题、作者、内容等等。

影响范围

WordPress 是使用最广泛的建站系统之一,此漏洞影响 WordPress 4.7.0-4.7.1版本。

据 Sucuri 最新报道,漏洞被披露后,黑客开始尝试扫描、利用漏洞,并成功入侵了众多 WordPress 网站。其中入侵网站最多的黑客组织是 “w4l3XzY3”。截止到发稿时间,w4l3XzY3 已成功入侵 18.6w 个网站。



漏洞原理

通过对 WordPress 源代码的深入剖析,发现 REST API 文件中的权限检查逻辑可以被绕过,从而形成文章任意内容的修改漏洞。

首先,在文件 /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php 中,看下文章(post)的控制类,注册了文章更新的回调函数update_item 和检查更新权限的回调函数 update_item_permissions_check:




我们跟进检查更新权限的回调函数 update_item_permissions_check:



第一个红框,是根据用户传入的 id 参数,使用 get_post() 函数来查找相应的文章。第二个红框是重点,如果文章存在但是没有权限,会返回没有权限操作(Sorry, you are not allowed to edit this post.)。也就是说,如果文章不存在,则会跳过这部分的判断,执行到最后的 return true,从而完成权限检查。这里的逻辑是合理的,如果用户提供的id没有对应的文章,即使获得了更改权限,也没有可用的文章被修改。但是,这只是权限检查阶段。

如果用户提供一个特殊的 id 参数,使得在权限检查时(update_item_permissions_check 函数)没有对应的文章,从而获得修改权限,但在修改文章内容(update_item 函数)时。又能找到该特殊的 id 对应的文章,那么就可以直接修改文章的内容了。这样的 id 参数需要满足两个条件:

1. 使得 get_post() 函数找不到对应的文章
2. 使得 update_item () 函数能找到对应的文章

这样的 id 参数是否存在呢?

我们先看 get_post() 函数



可以看出,只要我们输入的 id 使得 get_instance() 函数返回 false,我们就会得到一个null的返回,也就是找不到对应的文章。继续根跟进 get_instance() 函数,如下图:



这里可以清楚地看到,只要输入的 id 参数不是纯数字,就会 false,从而就会使得找不到对应的文章。

我们再看下修改文章内容的函数 update_item。



红框中的内容是重点中的重点。这里我们需要 get_post() 函数成功执行,找到对应的文章。而上一行的 $id   = (int) $request['id'];,会把用户输入的id进行整数类型转换,保证了 get_post() 函数能够执行成功。问题就出现在这个类型转换上,只要我们提供的id参数能还换成整数即可,比如 123abc,进行转换后会变成 123。
我们找到了这样的 id 参数,从而可以实现绕过权限检查,修改文章任意内容。

漏洞复现
下图是默认安装的 WordPress4.7.1,第一篇默认文章 Hello World,其文章 id 为 1.



构造数据包如下图,id 参数为 1a,修改标题和内容,都改为 Content Injection Vulnerability in WordPress:



查看返回状态码为 200,说明已经成功修改。刷新页面,可以看到文章已被修改。




修复方案
1、WordPress 4.7.2 版本已修复该漏洞,请前往官网下载升级:https://cn.wordpress.org/

2、某公司下一代防火墙用户,请升级 WAF 规则库到 20170207 及其以上版本,可轻松防御针对此漏洞的攻击。

关注千里目安全实验室,掌握最新行业动态




打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

发表新帖
热门标签
全部标签>
新版本体验
每日一问
产品连连看
安全效果
功能体验
标准化排查
GIF动图学习
【 社区to talk】
纪元平台
信服课堂视频
社区新周刊
安装部署配置
流量管理
畅聊IT
技术笔记
上网策略
每周精选
高手请过招
全能先锋系列
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
每日一记
运维工具
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
2023技术争霸赛专题
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
技术晨报
平台使用
技术盲盒
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
西北区每日一问
升级&主动服务
高频问题集锦
POC测试案例
云化安全能力
专家说
热门活动
产品动态
行业实践
产品解析
关键解决方案

本版达人

SANGFOR...

本周分享达人