突破 Next.js 边界与利用 Chrome DevTools 斩获 Root 权限
字数 1731
更新时间 2026-07-12 00:07:15
突破 Next.js 边界与利用 Chrome DevTools 斩获 Root 权限 — 教学文档
一、环境概述
目标IP:10.129.245.214
开放端口:
- 22/tcp — SSH
- 3000/tcp — PPP(实际为Web服务)
二、信息收集
2.1 端口扫描
sudo nmap 10.129.245.214
结果发现目标主机开放22端口(SSH)和3000端口(Web服务)。
2.2 Web指纹识别
访问3000端口,发现是一个名为 ReactorWatch | Core Monitoring System 的核心监控系统。
使用 whatweb 进行指纹探测:
whatweb http://10.129.245.214:3000/
返回关键信息:
- HTTP状态码:200 OK
- 页面标题:ReactorWatch | Core Monitoring System
- 服务器技术:Next.js
- 响应头特征:
X-Powered-By[Next.js] - 特殊头部:
x-nextjs-cache、x-nextjs-prerender、x-nextjs-stale-time
三、漏洞利用 — Next.js RCE
3.1 利用工具
使用开源工具 NextRce 进行漏洞利用:
- GitHub仓库:
https://github.com/ynsmroztas/NextRce
3.2 执行利用
通过 NextRce 工具成功触发远程代码执行,获得初始访问权限。
3.3 反弹Shell
在目标机器上执行反弹Shell命令,建立稳定的交互式会话。
四、横向移动
4.1 发现数据库文件
在当前工作目录下发现一个数据库文件(未明确说明文件名,推测为 SQLite 或其他轻量级数据库文件)。
4.2 连接数据库并查询用户
成功连接数据库后,执行用户表查询操作,获取用户凭证信息。
查询到的用户列表:
| 用户名 | 密码哈希 |
|---|---|
| engineer | reactor1(MD5哈希) |
| admin | 未查到 |
4.3 破解密码哈希
engineer 用户的密码哈希为 MD5 格式,使用在线工具或本地字典进行破解,成功还原明文密码。
4.4 SSH连接
使用 engineer 用户的凭据通过 SSH 登录目标主机:
ssh engineer@10.129.245.214
五、权限提升 — Node Inspect 提权
5.1 进程枚举
在目标主机上执行进程查看命令:
ps aux
发现一个关键服务进程:
- 监听地址:
localhost:9229 - 运行用户:root
- 技术栈:Node.js(可通过
node inspect调试)
5.2 端口转发
由于9229端口只监听本地回环地址,需要将远程端口转发到本地攻击机:
# 示例命令(原文未给出具体参数)
ssh -L 9229:127.0.0.1:9229 engineer@10.129.245.214
5.3 Chrome DevTools 连接
在本地浏览器中打开 Chrome DevTools 调试页面:
chrome://inspect
配置远程目标,连接到转发的 localhost:9229 端口。
5.4 执行任意代码
在 Chrome DevTools 的 Console 面板中,连接到目标 Node.js 调试会话后,执行系统命令:
require('child_process').execSync('id').toString()
返回结果确认已获得 root 权限(uid=0)。
5.5 验证提权结果
执行其他特权命令进一步确认:
require('child_process').execSync('whoami').toString()
// 返回: root
六、攻击链总结
信息收集 → Next.js RCE利用 → 反弹Shell → 数据库凭据提取 → SSH横向移动 → Node Inspect提权 → Root权限
关键技术点
| 阶段 | 关键技术 | 工具/方法 |
|---|---|---|
| 信息收集 | 端口扫描、指纹识别 | nmap、whatweb |
| 初始入侵 | Next.js RCE漏洞 | NextRce工具 |
| 横向移动 | 数据库凭据提取、SSH复用 | SQLite客户端、MD5破解 |
| 权限提升 | Node.js Inspector调试接口 | Chrome DevTools、端口转发 |
防御建议
- 及时更新 Next.js 版本,修复已知RCE漏洞
- 避免以 root 用户运行 Node.js 应用
- 生产环境禁用 Node.js Inspector 调试接口(
--inspect标志) - 数据库密码应使用强哈希算法(如 bcrypt),避免使用 MD5
- 实施最小权限原则,限制数据库文件的可读范围
相似文章
相似文章