Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析

栏目: 编程工具 · 发布时间: 5年前

内容简介:2019年2月12日,Adobe官方发布了针对Adobe ColdFusion的安全更新补丁,编号为APSB19-10。补丁中包含启明星辰ADLab发现并第一时间提交给官方的Critical(危急)反序列化漏洞,利用该漏洞攻击者可远程执行任意代码。漏洞编号为CVE-2019-7091,如下图所示:本次漏洞为Adobe ColdFusion中FlashGateway服务中的漏洞。Adobe ColdFusion的FlashGateway服务存在反序列化漏洞,未经身份验证的攻击者向目标Adobe ColdFus

漏洞概述

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

Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析

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

漏洞时间轴

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

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

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。

完成序列化过程后,此时ActionContext context中的内容即为输入流中精心构造的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())。

Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析

其中,目标执行方法method通过Method method = this.getMethod(parameters, serviceName, functionName, aClass)得到;方法执行对象service 通过service = aClass.newInstance()得到;方法执行参数parameters.toArray()通过MessageBody得到。

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

整个流程如下图所示:

Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析

漏洞利用效果

Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析

影响版本

ColdFusion 11 Update 15及之前版本

ColdFusion 2016 Update 7及之前版本

ColdFusion 2018 Update 1及之前版本

规避方案

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

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

声明:本文来自ADLab,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如需转载,请联系原作者获取授权。


以上所述就是小编给大家介绍的《Adobe ColdFusion反序列化RCE漏洞(CVE-2019-7091)分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

成功由我

成功由我

刘世英、彭征 / 湖南人民出版社 / 2010-2 / 28.00元

《成功由我:李彦宏快乐成功之道》讲述:他,18岁高分考入北京大学,毕业后到美国名校学习最热门的计算机专业,然后闯荡于华尔街和硅谷这两大金融和技术圣地,31岁回国创立百度……到如今身价数十亿美元,领导的百度发展成为全球第二大搜索引擎,在国内搜索市场占据近八成的市场份额,将有“上帝”之称的Google抛在身后,最近他又掀起了“框计算”风暴,并雄心万丈宣称“未来十年,要让百度在全球一半以上国家成为家喻户......一起来看看 《成功由我》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换