1、背景介绍 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行。
2、检测方法 检测用工具 该漏洞的利用方法目前已经有成型的工具,其中包括国外研究者编写的ysoserial,以及国内研究者编写的serial.jar,均可以生成攻击payload。 检测思路 拓扑结构: 由于目前来说暂未发现可直接回显结果的方法,单纯检测包返回结果无法很精确的发现是否存在漏洞,因此我们采用了结合第三方的方式进行批量检查,检测服务器发送payload到受检测主机,受监测主机执行远程命令访问测试服务器打开的Web服务,登录测试服务器查看测试服务器的Web访问日志日志,确认受检测主机IP地址是否在日志文件上,测试服务器日志上存在受监测主机的IP地址,则可以确认受监测主机执行了命令,存在漏洞。 本次测试以使用最多的Weblogic为例,使用工具生成 payload ,payload中执行的命令为 其中x.x.x.x为我们搭建用于接受wget命令的测试服务器的IP 然后利用国外的POC进行修改,在代码后面加入远程读取服务器日志,并匹配日志中是否存在该IP地址,其中读取目标服务器访问日志,我们使用了一个技巧,即将目标服务器的Web访问日志做个硬链接到Web目录下,这样就可以远程直接读取Web日志进行比对,确认该IP是否存在安全漏洞:
运行结果: 在批量检测过程中,我们发现并不是说仅有7001存在该安全漏洞,部分站点80端口也存在该漏洞,因为只要是接受T3协议的端口均会存在该安全漏洞。 检测方法总结 优点: 该检测方法直接通过执行命令方式并查看执行结果的方式进行检测,准确率高。 缺点: (1)若内网防火墙禁止内部主机主动访问外部,则无法成功检测,因此存在漏报的可能。 (2)对于windows下的主机,由于无wget命令,无法使用该方式检测。
3、解决方案 前面检测方法中已经提到问题的根源在于接受T3协议的数据会存在该安全漏洞,所以,我们要做的就是拦截掉T3协议的数据。 - <font face="微软雅黑">local method = nil
- event HTTP_REQUEST {
- method = HTTP.method()
- --LOG.log(LOG.INFO, "method is "..method)
- }
- event HTTP_DISABLED {
- if not method then
- HTTP.close()
- end
- }</font>
复制代码
|