首页 » 漏洞 » 正文

Adobe ColdFusion反序列化RCE漏洞分析(CVE-2019-7091)-互联网安全-漏洞

发表于: 知之为知 · 2019-3-14 ·  20 views  ·  0 replies 

一、漏洞描述

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。

*本文作者:ADLab,

本文链接: http://www.znlrs.cn/3181.html
0 like+
«上一篇: :下一篇»

相关文章

WinRAR目录穿越漏洞浅析及复现(CVE-2018-20250)-互联网安全-漏洞

*本文原创作者:ERFZE, 0×00 前言 我是于2月21号...

CVE-2018-18955:较新Linux内核的提权神洞分析-互联网安全-漏洞

*本文作者:0x4d69,本文属 FreeBuf 原创奖励计划,未经许...

Java代码审计之SpEL表达式注入-互联网安全-漏洞

*本文原创作者:Lateink, SpEL 表达式注入 Spring Ex...

挖洞经验 | 看我如何综合利用Self-XSS和OAuth错误配置实现Stored-XSS-互联网安全-漏洞

本文分享的作者是对Self-XSS和OAuth错误配置两个低危漏洞的...

ThinkPHP5核心类Request远程代码漏洞分析-互联网安全-漏洞

一、漏洞介绍 2019年1月11日,ThinkPHP团队发布了一个...

挖洞经验 | Uber第三方应用的开发者密钥等敏感信息泄露漏洞-互联网安全-漏洞

本文分享的漏洞涉及Uber第三方集成服务应用,通过Uber的开...

0 thoughts on “Adobe ColdFusion反序列化RCE漏洞分析(CVE-2019-7091)-互联网安全-漏洞”

  1. 还没有任何评论,你来说两句吧

Leave a reply