漏洞简介
Openfire 的管理控制台(Admin Console)是一个基于 Web 的应用程序,Openfire Administration console 存在权限绕过漏洞,这允许未经身份验证的用户在已配置的 Openfire 环境中使用未经身份验证的 Openfire 设置环境,以访问为管理用户保留的 Openfire 管理控制台中的受限页面。
影响版本
3.10.0<=Openfire<4.6.8
4.7.0 <=Openfire<4.7.5
环境搭建
利用docker 来搭建环境
docker search openfire
docker pull bunnyfu/openfire
docker run -d -P bunnyfu/openfire
访问 http://127.0.0.1:32789/ 填写相关信息,成功创建 Openfire 服务
漏洞复现
通过访问 http://127.0.0.1:32789/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp
判断是否存在日志信息,存在则证明存在该漏洞
不加 cookie 实现其中的创建用户的操作
提示需要登录
构造 payload 使得不需要登录就可以触发功能
成功添加用户 testa
已经获取了整个网站的权限,后续的利用可以通过上传插件实现命令执行
简单分析
https://github.com/igniterealtime/Openfire/compare/v4.6.7...v4.6.8
利用 github 的对比功能进行比较分析
之前 setup/setup-* 是属于不被校验的
如果匹配到的是setup/setup-*,满足exclude.endsWith("*"),同时url不包含..或者%2e那么就返回true
加上了一层解码操作进行了修复