1. 威客安全首页
  2. 安全资讯

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

作者: Badcode@知道创宇404实验室 
日期: 2019/07/09


漏洞简介

Adobe ColdFusion 是一个商用的快速开发平台。它可以作为一个开发平台使用,也可以提供Flash远程服务或者作为 Adobe Flex应用的后台服务器 。

2019年06月11日,Adobe 发布安全公告[1],修复了Adobe ColdFusion多个严重漏洞。其中有一个由Moritz Bechler提交的命令注入漏洞(CVE-2019-7839)。

2019年06月26日,Moritz Bechler 在 Bugtraq 上公布了远程代码执行漏洞(CVE-2019-7839)的部分细节[2],由于 JNBridge 组件存在缺陷,而 ColdFusion 默认开启JNBridge组件,导致代码执行漏洞。


漏洞影响

ColdFusion 2018 Update 3 及之前的版本ColdFusion 2018 Update 10 及之前的版本ColdFusion 11 Update 18 及之前的版本<= ColdFusion 9

漏洞分析

根据 Moritz Bechler 披露的部分细节,是由于ColdFusion 默认开启了 JNBridge listener 从而导致了漏洞。

先来了解一下JNBridge。


什么是 JNBridge

JNBridge 是一种领先的JAVA与.NET互操作的的产品,凭借JNBridge技术,Java 和.NET代码无需交叉编译器就可以实现对象共享。所有Java代码运行在JVM上,而.NET代码则运行在CLR上。在该方案下,JVM和CLR可以运 行在不同的机器上,也可以运行在一台机器的不同进程上,甚至还能运行在相同的进程的不同应用程序域上。

下载 JNBridgePro,安装完之后会有demo。试用license

jnbp-eval-v10.0#1899-2367-9451-2280

这里我们尝试使用.net去调用java,跑一下logDemo,了解下大致流程。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


启动 Java 服务端

根据 JNBridge 的安装路径,修改startJava.bat,运行

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

可以看到,JNBridge 服务端 listener 已开启,监听在8085端口。


构建 .Net 客户端

根据 demo的指示文档 logDemo.pdf,一步一步构建 .Net 项目。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


运行

运行 .Net 项目,调用 Java 服务端,成功调用。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


如何执行调用 java.lang.Runtime

之前流程有一步是将 loggerDemo.javaClass转成 logger.dll,试想一下,是否可以将java.lang.Runtime导成dll文件,供 .Net 客户端引用,然后去调用 Java 服务端的java.lang.Runtime

尝试一下

将 rt.jar引入 classpath

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

添加 java.lang.Runtime

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


导出 runtime.dll

引入 .Net 项目中供调用

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

运行

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

成功调用到了 Java 服务端中的java.lang.Runtime,这也是这个漏洞的根源。


ColdFusion 中的 JNBridge

ColdFusion 中是默认运行了 JNBridge listener 的,并且是 Java 服务端,监听端口是 6095(ColdFusion 2018)、6093(ColdFusion 2016)、6085(ColdFusion <=9/11)。

由于 Coldfusion 中带的 JNBridge 版本不同,所以构造 payload 的方式有些差异。


ColdFusion 2016/2018

ColdFusion 2018 中的 JNBridge 版本是 v7.3.1,无法使用上面的的JNBridge v10去构造 payload,在 JNBridge 官网上可以下载一部分历史版本[3],下载 v7.3版本。

编写想要在 Java 服务端执行的代码

String command = "whoami";String [] commandArgs;String os = System.getProperty("os.name");System.out.println(os);if(os.toLowerCase().startsWith("win")){      commandArgs = new String[]{"cmd.exe""/c", command};  }else {      commandArgs = new String[]{"/bin/bash""-c", command};  }
Runtime runtime = Runtime.getRuntime();Process process = runtime.exec(commandArgs);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = br.readLine()) != null)   {       System.out.println(line);   }       br.close();

里面使用到了java.lang.Runtimejava.lang.Processjava.io.BufferedReaderjava.io.InputStreamReaderjava.lang.System,将相关类从rt.jar中导成runtime2.dll,供 .Net 客户端引用。

根据 Java代码重写

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

这里面有个非常重要的 JNBShare.dll,这里使用自己安装的 JNBridge 成功后生成的 JNBShare.dll,无法使用ColdFusion 中 JNBridge 的 JNBShare.dll,会报错。

运行,攻击远程的ColdFusion 2018(Linux平台),成功返回结果。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


ColdFusion 9/11

ColdFusion 9 内部的 JNBridge 版本是 v5.1,监听端口是 6085。由于这个版本比较老了,没找到安装包,现在需要生成供我们引用的runtime2.dll和能用的JNBShare.dllColdFusion 内部的 JNBridge中的jnbproxyGui.exe无法构建 .net -> java项目,也就是说GUI工具用不了,所幸的是命令行工具还可以用。

jnbproxy.exe,看下参数。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

根据参数,生成runtime2.dll

jnbproxy /d C:logDemo /cp C:ColdFusion9jnbridgejrelibrt.jar /host localhost /n runtime2 /nj /pd n2j /port 6085 /pro b /pp C:ColdFusion9lib java.lang.Runtime java.lang.Process java.io.BufferedReader java.io.InputStreamReader java.lang.System

至于 JNBShare.dll,因为内部的无法使用,安装包又下载不到。幸运的是有人收藏了这个JNBShare.dll,谷歌搜索能够找到,并且刚好是v5.1版本的。

运行,攻击远程的 ColdFusion 9(windows平台),返回命令执行结果。

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析


References

[1] 安全公告:

 https://helpx.adobe.com/security/products/coldfusion/apsb19-27.html
[2] 部分细节: 

https://seclists.org/bugtraq/2019/Jun/38
[3] 历史版本: 

https://jnbridge.com/download-back-versions



Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析 

往 期 热 门

(点击图片跳转)

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析



Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析  Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

觉得不错点个“在看”哦Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

原文始发于微信公众号(Seebug漏洞平台):Adobe ColdFusion RCE(CVE-2019-7839) 漏洞分析

本文转为转载文章,本文观点不代表威客安全立场。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

4006-119-120

在线咨询:点击这里给我发消息

邮件:public@jinlongsec.com

工作时间:周一至周五,9:30-18:30,节假日休息

X