Web安全之Openfire的插件脚本上传漏洞复现
字数 927 2025-08-18 11:37:45
Openfire插件脚本上传漏洞复现与分析
1. 漏洞概述
Openfire是基于XMPP协议的即时通讯(IM)服务器实现,存在插件上传漏洞,攻击者可上传恶意插件获取服务器控制权限。
2. 漏洞发现背景
- 某Web服务器被植入挖矿病毒
- 通过D盾查杀发现Openfire目录下的webshell
- 路径中同时存在helloworld.jar恶意插件包
3. Openfire简介
- 基于XMPP协议的IM服务器端实现
- 提供基本功能并支持插件扩展
- 广泛部署于各类组织中
4. 漏洞复现步骤
4.1 环境搭建
- 从官网下载最新版Openfire
- 执行exe安装文件完成安装
- 跳过配置管理员界面(关键漏洞点)
- 使用默认凭证admin/admin登录成功
4.2 漏洞利用
- 进入插件管理界面
- 上传恶意helloworld.jar插件包
- 访问用户接口设置页面
- 触发webshell执行
4.3 权限验证
- 获取的权限为运行Openfire的用户权限
- 通常为SYSTEM或root等高权限
5. 漏洞分析
5.1 恶意插件结构分析
helloworld.jar
├── plugin.xml # 插件配置文件
├── web # Web资源目录
│ ├── WEB-INF
│ │ ├── web.xml # Servlet映射配置
│ │ └── classes # 包含插件主类
│ └── chakan.jsp # 实际执行的恶意JSP
├── sqzr.jsp # 被查杀的webshell文件
└── ... # 其他插件文件
5.2 关键配置文件
plugin.xml:
<plugin>
<name>Hello World Plugin</name>
<description>My first plugin</description>
<author>si1ence</author>
<version>1.0.0</version>
<date>12/04/2018</date>
<url>chakan.jsp</url>
<minServerVersion>3.0.0</minServerVersion>
<licenseType>gpl</licenseType>
<class>com.iteye.redhacker.openfire.plugin.helloWorldPlugin</class>
</plugin>
web.xml:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<jsp-file>/chakan.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
5.3 漏洞成因
- 管理员配置跳过:安装过程中跳过管理员配置步骤,导致使用默认凭证
- 插件上传无验证:插件上传功能未对上传内容进行安全校验
- 权限过高:Openfire服务通常以高权限运行
6. 安全风险
- 服务器完全沦陷(SYSTEM/root权限)
- 可植入挖矿病毒、后门等恶意程序
- 敏感信息泄露(数据库凭证等)
7. 修复建议
- 修改默认凭证:安装后立即修改admin账户密码
- 权限降级:以低权限用户运行Openfire服务
- 插件审核:仅安装可信来源的插件
- 安全加固:
- 限制插件上传功能
- 实现插件签名验证机制
- 日志监控:监控插件上传和安装行为
8. 检测方法
- 检查Openfire目录下是否存在可疑jar包
- 扫描web目录中是否存在异常jsp文件
- 检查数据库中的管理员凭证是否为默认值
9. 总结
该漏洞利用Openfire的以下弱点:
- 默认凭证风险
- 插件机制缺乏安全控制
- 服务运行权限过高
管理员应重视系统安装配置过程中的每个步骤,避免因"跳过"操作导致安全隐患。