warm-flow SpEL 表达式注入漏洞总结 漏洞概述 漏洞名称:RCE via SpEL Expression Injection in warm-flow Workflow 漏洞类型:SpEL (Spring Expression Language) 表达式注入 受影响组件:warm-flow (轻量级工作流引擎) 漏洞成因:在 方法中使用了未沙箱化的 。该上下文允许访问任意 Java 类型(如 )并调用其方法,且缺乏安全限制,导致攻击者可以注入恶意 SpEL 表达式执行任意系统命令。 影响范围 受影响版本: 触发条件: 1. 目标系统集成了 warm-flow (Spring Boot 模式)。 2. 接口可访问。 3. 攻击者拥有工作流设计权限(可调用 save-json 接口)。 利用路径:存在 4 个独立的利用路径,均可触发 RCE: 1. (节点创建/更新事件) 2. (定义级别创建/更新事件) 3. (排他网关条件评估) 4. (处理程序变量解析) 修复方案 升级版本:升级 warm-flow 至 或更高版本。 POC 代码与利用示例 1. 恶意工作流定义 JSON (Payload) 以下 JSON 包含 SpEL 注入载荷,用于执行命令 : 2. 利用步骤 (Steps to Reproduce) Step 1: 保存恶意工作流定义 通过 POST 请求调用 接口提交上述 JSON 载荷: Step 2: 发布并启动工作流以触发 RCE 通过业务系统 API 发布并启动工作流实例,SpEL 表达式将在监听器触发时自动执行。 Step 3: 验证命令执行 检查目标服务器上的文件 是否存在,以确认命令执行成功: 3. 验证结果摘要 所有 4 条利用链均被验证成功: Chain 1: Node listener (listenerPath) SUCCESS Chain 2: Definition listener (listenerPath) SUCCESS Chain 3: Gateway condition (skipCondition) SUCCESS Chain 4: Handler variable (permissionFlag) SUCCESS