Lucene search

K
seebugRootSSV:96979
HistoryDec 12, 2017 - 12:00 a.m.

Apache Synapse远程命令执行漏洞(CVE-2017-15708)

2017-12-1200:00:00
Root
www.seebug.org
147

0.026 Low

EPSS

Percentile

89.2%

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:

现在我们知道,服务启动了RMI,并且默认绑定到0.0.0.0中,完成反序列化漏洞的2个条件之一已经完成。

RMI在传输过程中,必然存在使用序列化和反序列化。在Apache Synapse 3.0.1之前的版本中,默认使用ApacheCommons Collections库。

图 1.1 ApacheSynapse进程

图 1.2 当前系统打开的Collections

图 1.3 存在InvokerTransformer的库

在Apache CommonsCollections小于等于3.2.1版本中,存在反序列化漏洞, Commons Collections漏洞成因本文不再重复累赘。

0X02 利用

由于攻击的两个条件目前我们已经达成,编写payload:

构造恶意Transformer链:

生成Payload,发送RMI反序列数据:

运行结果:

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