漏洞简介

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

加上了一层解码操作进行了修复

1 个月 后
8 个月 后
说点什么吧...