一、 事件背景
ColdFusion,是Adobe旗下的一个动态Web服务器,其CFML(ColdFusionMarkup Language)是一种程序设计语言,类似现在的JSP里的JSTL(JSPStandard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。
今年6月,国家信息安全漏洞共享平台(CNVD)收录了Adobe ColdFusion远程代码执行漏洞(CNVD-2018-11802,对应CVE-2018-4939)。Adobe ColdFusion存在反序列化漏洞,攻击者成功利用漏洞执行任意代码。近日,该漏洞的利用方法在互联网上公布,如果被利用后果严重。
相关链接如下:
http://www.cnvd.org.cn/flaw/show/CNVD-2018-11802
二、 漏洞复现
方法一:利用ysoserial(java反序列化工具)
以上RMI客户端程序的一个demo,它从RMI注册表服务检索ColdFusion DataServicesCFProxy对象,然后使用null参数远程调用count()方法。
count()方法的第二个参数是java.lang.Object数组,这意味着可以在该参数中提供任意对象,并且它们将在服务器上反序列化。可以通过ysoserial来生成任意payload对象并将其传递给count()方法,但是由于serialVersionUID字段不匹配,服务器会报错。这时我们可以按照ColdFusion安装目录中的“libs / rome-cf.jar”重建ysoserial。改写后的程序会根据我们传入的域名,端口,命令生成并传递payload。如下图所示:
方法二:利用BaRMIe(枚举和攻击JavaRMI(远程方法调用)服务的工具)
远程方法调用涉及两个网络服务和两个不同的网络连接。一个网络是用于RMI注册服务,另一个是用于与对象本身通信。在两个网络连接中构建一个代理框架,它的工作原理如下:1、启动RMI注册表代理,该代理将连接转发到目标RMI注册表
2、使用RMI注册表代理的主机和端口调用LocateRegistry.getRegistry(), 而不是 RMI注册表服务的主机和端口
3、通过RMI注册表代理调用Registry.lookup()(将请求转发给真正的RMI注册表服务)以检索远程对象引用
4、当RMI注册表代理检测到返回的远程对象引用时:
A. 它启动一个RMI方法代理,以将连接转发到真正的RMI对象服务
B. 它修改远程对象引用以指向新的RMI方法代理而不是真正的RMI对象服务
5、在远程对象引用上调用某个方法时,连接是RMI方法代理
使用RMI方法代理,可以以正常方式调用远程方法,使用占位符参数而不是payload对象。当方法代理检测到表示该占位符对象的字节时,它可以用表示任意反序列化的payload的字节流替换这些字节
通过代理,便可实现完全控制协议,这时一些Java虚拟机原本会阻止操作将被允许。
三、 漏洞分析及危害
1) 漏洞分析
上图为ColdFusion安装目录中的“libs /cfusion.jar”文件中的coldfusion.flex.rmi.DataServicesCFProxy。
在这个方法中,可以利用任意参数调用,并且无需身份验证即可与此RMI服务进行交互。这时任何人都可以向其提供任意Java对象,以尝试利用Java反序列化攻击。
2) 漏洞危害
远程攻击者可利用该漏洞在应用程序的上下文中执行任意代码,获取敏感信息或通过执行任意命令获取服务器权限。反序列化漏洞在网络中有开源漏洞利用脚本,从最开始只能命令执行和反弹shell,到后来的有回显的命令执行,到最终的代码执行,利用上来是越来越方便,故漏洞危害较大,影响范围较广。
四、 数据分析
1) 世界分布
世界范围内使用Adobe ColdFusion的服务器数量约为6.3万台左右。其中排名前五的国家分别为:中国、美国、澳大利亚、日本、加拿大。
下图为世界范围内使用Adobe ColdFusion的服务器的分布情况:
图1、世界分布图
下图为世界范围内使用Adobe ColdFusion的服务器数量排名前十的国家:
图2、世界统计排名前十
2) 国内分布
中国境内使用Adobe ColdFusion的服务器数量约为2.7万个。其中,排名前五的省份或地区分别为:广东省、香港特别行政区、北京市、台湾省、浙江省。
下图为我国范围内使用Adobe ColdFusion的服务器的分布情况:
图3、国内分布图
下图为我国范围内使用Adobe ColdFusion的服务器数量排名前十的省份或地区:
图4、国内统计排名前十
下图为使用Adobe ColdFusion的服务器的国内运营商排名:
图5、国内运营商排名前十
五、 防范建议
1) 漏洞版本
Adobe ColdFusion (2016 release) <=Update 5
Adobe ColdFusion 11 <=Update 13
2) 漏洞修复建议(或缓解措施):
目前厂商已经发布了升级补丁以修复此安全问题,相关链接如下:
https://helpx.adobe.com/security/products/coldfusion/apsb18-14.html