越权跳转导致的flowable命令执行
字数 1200 2025-08-29 08:32:18

Flowable工作流引擎命令执行漏洞分析与利用

漏洞背景

Flowable是一个轻量级的工作流和业务流程管理(BPM)平台,基于Java开发。在特定配置下,Flowable可能允许攻击者通过Shell任务执行任意系统命令,导致远程代码执行(RCE)漏洞。

漏洞发现过程

  1. 初始访问:通过越权跳转漏洞获取管理员权限

    • 发现系统存在端口跳转功能:http://xxx.com:8092/login?username=xx&token=xxx
    • 将username参数修改为admin后成功以管理员身份进入后台
  2. 功能探索:发现流程模板功能使用Flowable工作流引擎

    • 在后台找到"流程模板"功能点
    • 确认系统使用Flowable作为工作流引擎
  3. 漏洞挖掘:发现Shell任务功能

    • 在Flowable中找到"Shell任务"模块
    • 该模块允许配置并执行系统命令

漏洞利用技术细节

Shell任务配置

Flowable支持通过XML配置Shell任务,关键配置如下:

<serviceTask id="shellEcho" flowable:type="shell">
  <extensionElements>
    <flowable:field name="command" stringValue="cmd" />
    <flowable:field name="arg1" stringValue="/c" />
    <flowable:field name="arg2" stringValue="echo" />
    <flowable:field name="arg3" stringValue="EchoTest" />
    <flowable:field name="arg4" stringValue=">" />
    <flowable:field name="arg5" stringValue="D:\content\sec.txt" />
    <flowable:field name="wait" stringValue="true" />
    <flowable:field name="outputVariable" stringValue="resultVar" />
  </extensionElements>
</serviceTask>

图形化界面配置

在实际利用中,攻击者可以通过图形化界面直接配置上述参数:

  1. 命令(command):指定要执行的程序(如cmd、powershell等)
  2. 参数(arg1-argN):指定命令的参数
  3. 等待(wait):是否等待命令执行完成
  4. 输出变量(outputVariable):存储命令输出的变量名

漏洞利用步骤

  1. 创建恶意流程模板

    • 在图形界面中配置Shell任务
    • 设置要执行的恶意命令(如写入文件、反弹shell等)
  2. 部署流程模板

    • 将创建的恶意模板部署到系统中
    • 确保模板被成功保存并可用
  3. 触发命令执行

    • 发起配置好的流程
    • 系统会自动执行流程中的Shell任务

实际利用案例

  1. 测试写入文件

    • 配置命令:cmd /c echo test > D:\content\sec.txt
    • 成功在目标系统创建文件
  2. 尝试写入JSP Webshell

    • 发现写入的JSP文件被直接下载,无法执行
    • 判断系统可能是JAR包环境,无法直接部署Webshell
  3. 使用PowerShell执行命令

    • 改为使用PowerShell命令
    • 成功执行并获得预期效果

防御措施

  1. 权限控制

    • 严格限制流程模板的创建和修改权限
    • 实施最小权限原则,避免普通用户拥有管理员权限
  2. 输入验证

    • 对Shell任务的配置参数进行严格验证
    • 禁止使用危险命令和特殊字符
  3. 安全配置

    • 禁用或限制Flowable的Shell任务功能
    • 使用安全沙箱限制命令执行环境
  4. 系统加固

    • 定期审计流程定义和模板
    • 监控异常的命令执行行为
  5. 修复越权漏洞

    • 修复初始发现的越权跳转漏洞
    • 实施严格的会话管理和身份验证

总结

该漏洞展示了权限提升与命令执行链式攻击的典型案例。通过初始的越权访问获取管理员权限后,攻击者可以利用Flowable工作流引擎的功能特性实现系统命令执行。这种攻击强调了纵深防御的重要性,需要从多个层面实施安全控制。

Flowable工作流引擎命令执行漏洞分析与利用 漏洞背景 Flowable是一个轻量级的工作流和业务流程管理(BPM)平台,基于Java开发。在特定配置下,Flowable可能允许攻击者通过Shell任务执行任意系统命令,导致远程代码执行(RCE)漏洞。 漏洞发现过程 初始访问 :通过越权跳转漏洞获取管理员权限 发现系统存在端口跳转功能: http://xxx.com:8092/login?username=xx&token=xxx 将username参数修改为admin后成功以管理员身份进入后台 功能探索 :发现流程模板功能使用Flowable工作流引擎 在后台找到"流程模板"功能点 确认系统使用Flowable作为工作流引擎 漏洞挖掘 :发现Shell任务功能 在Flowable中找到"Shell任务"模块 该模块允许配置并执行系统命令 漏洞利用技术细节 Shell任务配置 Flowable支持通过XML配置Shell任务,关键配置如下: 图形化界面配置 在实际利用中,攻击者可以通过图形化界面直接配置上述参数: 命令(command):指定要执行的程序(如cmd、powershell等) 参数(arg1-argN):指定命令的参数 等待(wait):是否等待命令执行完成 输出变量(outputVariable):存储命令输出的变量名 漏洞利用步骤 创建恶意流程模板 在图形界面中配置Shell任务 设置要执行的恶意命令(如写入文件、反弹shell等) 部署流程模板 将创建的恶意模板部署到系统中 确保模板被成功保存并可用 触发命令执行 发起配置好的流程 系统会自动执行流程中的Shell任务 实际利用案例 测试写入文件 配置命令: cmd /c echo test > D:\content\sec.txt 成功在目标系统创建文件 尝试写入JSP Webshell 发现写入的JSP文件被直接下载,无法执行 判断系统可能是JAR包环境,无法直接部署Webshell 使用PowerShell执行命令 改为使用PowerShell命令 成功执行并获得预期效果 防御措施 权限控制 严格限制流程模板的创建和修改权限 实施最小权限原则,避免普通用户拥有管理员权限 输入验证 对Shell任务的配置参数进行严格验证 禁止使用危险命令和特殊字符 安全配置 禁用或限制Flowable的Shell任务功能 使用安全沙箱限制命令执行环境 系统加固 定期审计流程定义和模板 监控异常的命令执行行为 修复越权漏洞 修复初始发现的越权跳转漏洞 实施严格的会话管理和身份验证 总结 该漏洞展示了权限提升与命令执行链式攻击的典型案例。通过初始的越权访问获取管理员权限后,攻击者可以利用Flowable工作流引擎的功能特性实现系统命令执行。这种攻击强调了纵深防御的重要性,需要从多个层面实施安全控制。