千家信息网

怎么进行Adobe ColdFusion反序列化RCE漏洞分析

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,怎么进行Adobe ColdFusion反序列化RCE漏洞分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、漏洞描述2019年2月1
千家信息网最后更新 2025年02月01日怎么进行Adobe ColdFusion反序列化RCE漏洞分析

怎么进行Adobe ColdFusion反序列化RCE漏洞分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、漏洞描述

2019年2月12日,Adobe官方发布了针对Adobe ColdFusion的安全更新补丁,编号为APSB19-10。补丁中包含启明星辰ADLab发现并第一时间提交给官方的Critical(危急)反序列化漏洞,利用该漏洞攻击者可远程执行任意代码。

漏洞编号为CVE-2019-7091,如下图所示:

本次漏洞为AdobeColdFusion中FlashGateway服务中的漏洞。Adobe ColdFusion的FlashGateway服务存在反序列化漏洞,未经身份验证的攻击者向目标AdobeColdFusion的FlashGateway服务发送精心构造的恶意数据,经反序列化后可远程执行任意代码。

二、漏洞时间轴

2018年9月21日:将漏洞详情提交给官方;

2018年12月05日:确认漏洞存在并开始修复;

2019年2月12日:官方发布正式补丁。

三、漏洞分析

Adobe ColdFusion的FlashGateway服务允许flash连接到CFML和CFC模板。当攻击者通过HTTP协议向FlashGateway服务POST精心构造的ActionMessage信息后,FlashGateway服务依次通过各种类型的filter进行invoke()操作。在flashgateway.filter.SerializationFilter的invoke方法中,实例化MessageDeserializer类型的反序列工具deserializer并通过deserializer.readMessage(m)方法对精心构造的ActionMessage消息进行反序列化,同时将ActionMessage中的targetURI、data等值赋值给MessageBody。

完成序列化过程后,此时ActionContextcontext中的内容即为输入流中精心构造的ActionMessage信息。在flashgateway.filter.AdapterFilter的invoke方法中,读取ActionContext中的MessageBody信息赋值给serviceName、functionName、parameters等,通过adapter=locateAdapter(context,serviceName, functionName, parameters, serviceType)方法得到flashgateway.adapter.java.JavaBeanAdapter类型的adapter,然后执行JavaBeanAdapter的invokeFunction方法。关键代码如下:

public ActionContext invoke(ActionContext context) throws  Throwable {        ...      //读取MessageBody信息      MessageBody  requestMessageBody = context.getRequestMessageBody();      String serviceName  = requestMessageBody.serviceName;      String  functionName = requestMessageBody.functionName;      List parameters = requestMessageBody.parameters;        ...     if  (context.isDescribeRequest()) {      result = adapter.describeService(context,  serviceName);     } else {  //adapter为JavaBeanAdapter,执行flashgateway.adapter.java.JavaBeanAdapter的invokeFunction方法    result =  adapter.invokeFunction(context, serviceName, functionName, parameters); }

在JavaBeanAdapter的invokeFunction方法中,看到关键代码:method.invoke(service,parameters.toArray())。

其中,目标执行方法method通过Method method =this.getMethod(parameters, serviceName, functionName, aClass)得到;

方法执行对象service 通过service = aClass.newInstance()得到;

方法执行参数parameters.toArray()通过MessageBody得到。

由此可见,method.invoke(service,parameters.toArray())的所用参数都可控,意味着可执行任意方法。

整个流程如下图所示:

四、漏洞利用效果

五、影响版本

ColdFusion 11 Update 15及之前版本

ColdFusion 2016 Update 7及之前版本

ColdFusion 2018 Update 1及之前版本。

六、规避方案

1、修改gateway-config.xml文件的配置,禁止JavaBeanAdapter的使用。

2、升级最新补丁APSB19-10:https://helpx.adobe.com/security/products/coldfusion/apsb19-10.html。

看完上述内容,你们掌握怎么进行Adobe ColdFusion反序列化RCE漏洞分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

漏洞 方法 序列 服务 代码 信息 官方 版本 补丁 漏洞分析 分析 内容 攻击者 类型 攻击 关键 参数 更多 目标 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏设备自动化整合系统软件开发 甘肃省信息基础设施网络安全检查 学校网络技术 数据库原理与技术看什么书 卓岚服务器串口 网络技术社团英文单词 服务器网络存在风险 崩坏三国际服选哪个服务器 信息时代网络安全就是头等大事 恒易贷审核通过了一直显示服务器繁忙 数据库技术及应用填空题 设计网站属于软件开发吗 佛山锐易网络技术公司 软件开发可以做java吗 大学生网络文明与网络安全简报 全国计算机大赛网络技术 自动驾驶智能网络技术 软件开发产品和平台的区别 内部网络安全风险排查什么意思 怎么才能进公司的数据库 软件开发方向包括哪些 嵌入式软件开发相关比赛 服务器连接慢 网络安全等保测评师考试 js绑定数据库字段 数据库管理师考试内容 济南同智软件开发公司 服务器安全防护的小知识 甘肃数据网络技术服务经验丰富 mysql数据库是谁开发的
0