Pandora Writeup

概述 (Overview)

image

HOST: 10.10.11.136

OS: LINUX

发布时间: 2022-01-09

完成时间: 2022-06-10

机器作者: TheCyberGeek && dmw0ng

困难程度: easy

机器状态: 退休

MACHINE TAGS: #SNMP #SQLi #SUDOExploitation #BufferOverflow #Hijacking

攻击链 (Kiillchain)

使用 Nmap 对目标服务器进行开放端口枚举,发现存在 UDP 161 端口 SNMP 协议。通过该协议的信息泄露得到进程执行命令,该命令中含有 ssh 登录用户名及明文密码。使用该组账号成功 ssh 登录目标服务器,获取初始立足点。

查看 sudo 权限信息发现可以的 SUID 进程,对其进行分析后发现存在 Path Hijacking 风险,使用该风险成功完成权限提升。

枚举(Enumeration)

老样子,开始还是使用 Nmap 对目标服务器开放端口进行扫描:

PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 24:c2:95:a5:c3:0b:3f:f3:17:3c:68:d7:af:2b:53:38 (RSA) | 256 b1:41:77:99:46:9a:6c:5d:d2:98:2f:c0:32:9a:ce:03 (ECDSA) |_ 256 e7:36:43:3b:a9:47:8a:19:01:58:b2:bc:89:f6:51:08 (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) | http-methods: |_ Supported Methods: GET POST OPTIONS HEAD |_http-title: Play | Landing |_http-favicon: Unknown favicon MD5: 115E49F9A03BB97DEB840A3FE185434C |_http-server-header: Apache/2.4.41 (Ubuntu) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

从扫描结果中可以看到对外仅暴漏两个端口,服务器是 Ubuntu,运行着 Apache Web 服务。

Port 80 - panda.htb

站点上没太多内容仅有两个邮件信息:

image

support@panda.htb contact@panda.htb

将域名加入 hosts 文件,随后进行路径枚举、子域名枚举等。

image

长时间等待字典扫描结束,没有获得任何有效内容,看来这条路径是不通的。

立足点(Foothold)

想着会不会开放 UDP 端口,使用 Nmap 快速扫描了一下发现开放了 161 端口。

# nmap -sU -top-ports=100 panda.htb PORT STATE SERVICE 161/udp open snmp

https://book.hacktricks.xyz/network-services-pentesting/pentesting-snmp

结合搜索引擎了解到, 161 端口为简单网络管理协议用于监控网络中不同设备的协议,为确保 SNMP 访问适用于不同制造商和不同的客户端-服务器组合,创建了管理信息库 (MIB) 。MIB是一种独立的存储设备信息的格式,具体可以查看上面引入的链接地址文章。

针对该协议可以使用 snmpwalk 命令进行远程访问,如获取远程主机的所有公共信息:

image

从结果中可以获悉到目标服务器更详细的内容,如 Ubuntu 版本信息、内核版本、网卡地址等等。在其中的进程信息段中,我们发现存在一个 /use/bin/host_check 命令其参数与 ssh 命令的账号密码类似。

image

daniel : HotelBabylon23

使用该组内容成功以 daniel 用户登录服务器,拿到立足点。

image

横向移动(Lateral Movement)

查找 User flag 存放位置发现在 matt 用户下,说明下一步我们还需要进行账号之间的横向。

400

找点之前的 host_check 进程,查看内容字符可以得到一段 curl 请求,url 指向的是本地地址部署的 Web 服务。

image

根据这一内容去 /var/www/ 路径下查看,发现 pandora 文件夹内为本地 Web 服务的源代码。

image

根据源代码内容信息获悉这是 Pandora FMS 服务(Pandora FMS又称 “Pandora Flexible Monitoring System”,是一款用于服务器、网络、应用和虚拟基础设施的监控工具),在根据版本信息进行历史高危漏洞的查找,发现存在 RCE 漏洞但需要具备登录会话。

https://shells.systems/pandorafms-v7-0ng-authenticated-remote-code-execution-cve-2019-20224/

为了操作方便先通过 ssh 服务将端口进行转发:

ssh daniel@10.10.11.136 -L 81:127.0.0.1:80

能在 kali 中访问到说明转发成功。

500

接着在如下文章中找到 SQL 注入漏洞 CVE,随后进行验证获取登录账号。

https://blog.sonarsource.com/pandora-fms-742-critical-code-vulnerabilities-explained/

image
存在 SQL 注入错误回显,直接放 sqlmap 中跑结果就行了。

# sqlmap -u http://127.0.0.1:81/pandora_console/include/chart_generator.php?session_id= -D pandora -T tpassword_history --dump ...snip... Database: pandora Table: tpassword_history [2 entries] +---------+---------+---------------------+----------------------------------+---------------------+ | id_pass | id_user | date_end | password | date_begin | +---------+---------+---------------------+----------------------------------+---------------------+ | 1 | matt | 0000-00-00 00:00:00 | f655f807365b6dc602b31ab3d6d43acc | 2021-06-11 17:28:54 | | 2 | daniel | 0000-00-00 00:00:00 | 76323c174bd49ffbbdedf678f6cc89a6 | 2021-06-17 00:11:54 | +---------+---------+---------------------+----------------------------------+---------------------+

可是得到的 password 散列并不能枚举成明文,换另一种方法。将数据库中存储的管理 session id 导出,随后在浏览器中替换 Cookie id 就可以登录系统后台了。

image

| g4e01qdgk36mfdh90hvcc54umq | id_usuario|s:4:"matt";alert_msg|a:0:{}new_chat|b:0; | 1638796349 |

image

image

接着参考文章中的 exploit 进行构造,成功获取 matt 用户 Shell,完成横向移动。

https://www.coresecurity.com/core-labs/advisories/pandora-fms-community-multiple-vulnerabilities

image

权限提升(Privilege Escalation)

将 kali 的公钥写入 authorized_keys 文件,完成免密登录获取一个完整的 tty 会话 shell。通过 wget 将 LinPEAS 传递至目标服务器,运行该脚本进行深度信息收集。

发现存在一个可疑的 SUID 权限 /usr/bin/pandora_backup 二进制程序,而在 sudo -l 中也能得到,可以免密权限提升运行 pandora_backup 程序。

image

简单执行一下,从名称、命令行显示内容可以得出这是用户站点备份的程序。

image

简单通过 ltrace(没有的话可以用 strace) 命令来跟踪程序在运行时调用的库函数情况。

image

根据代码执行流程,首先获取了执行用户、用户所在组然后通过 system() 函数执行 bash 命令。从结果中可以看到有一段关键的错误信息,提示 matt 用户没有权限读、写 /root/.backup/ 目录。这里最为致命的是 tar ,因为没写绝对路径导致存在 Path Hijacking 漏洞。

Path Hijacking 是一种攻击技术,它利用了操作系统搜索二进制文件的方式。通过将恶意程序放置在用户 PATH 环境变量所指定的目录中(如/bin、/usr/bin等),从而覆盖系统默认的同名命令或程序来实现的。

所以,这里我仅需要将当前目录(包含恶意程序)添加到 PATH 环境变量中最前面,随后 SUDO 执行该二进制程序就完成最终的权限提升。

image

image

参考


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。