jrmp协议_Weblogic IIOP 协议NAT 网络绕过

本文介绍了在渗透测试中如何绕过NAT网络,针对Weblogic服务器的IIOP协议进行攻击。文章详细讲解了IIOP协议、流程、环境准备和多种绕过方案,包括GIOP协议极简实现、Javassist字节码库的使用以及源代码的直接修改。此外,还提到了相关工具和漏洞CVE-2020-2555的执行链。
摘要由CSDN通过智能技术生成

背景

通常在渗透的过程中会遇到很多 Weblogic 服务器,但通过 IIOP 协议进行发送序列化恶意代码包时,会面临着无法建立通讯请求发送恶意序列化失败。最近参与了一场在成都举办的《FreeTalk 2020 成都站》,有幸分享了关于 Weblogic IIOP 协议 NAT 绕过的几种方式。

PPT 下载地址:https://img.zhiiyun.com/Weblogic_IIOP_NAT.pptx

成果演示

Goby  工具中关于 Weblogic 基本都是用了 IIOP 协议绕过的方案,比较有代表性的漏洞为 CVE-2020-2551 漏洞。

2ecad94e88dcee5191a94db3e91e5520.gif

内部工具 weblogic-framework 使用了多项核心技术来进行优雅的测试 Weblogic,其中也使用了 IIOP 协议的绕过方案。

ddb4dd61c0cb7bd233b83b5abfac3119.gif

协议

在开始之前,非常有比较提及一下以下这些协议相关的内容:

  • RMI:远程方法调用,本质上是 RPC 服务的 JAVA 实现,底层实现是 JRMP 协议,主要场景是分布式系统。

  • CORBA:跨语言(C ++、Java等)的通信体系结构,通常在 IIOP 协议中使用。

  • GIOP:主要提供标准的传输语法以及 ORB 通信的信息格式标准。

  • IIOP:CORBA 对象之间交流的协议,GIOP 的实现。

  • RMI-IIOP:解决 RMI 和 CORBA/IIOP 无法同时使用的技术方案。

  • Weblogic IIOP:Weblogic 自实现的 RMI-IIOP。

  • T3:WebLogic Server 中的 RMI 通信使用 T3 协议传输 WebLogic Server 和其他 Java 程序,包括客户端及其他 WebLogic Server 实例之间 数据。

T3 协议本质上 RMI 中传输数据使用的协议,但通过上面我们看到 RMI-IIOP 是可以兼容 RMI 和 IIOP 的,所以在 Weblogic 中只要可以通过 T3 序列化恶意代码的都可以通过 IIOP 协议进行序列化,正是因为这种情况,我进入 Weblogic 第三季度深度贡献者名单。

a7e4b4441aa61199b46898de0f252e10.png

流程

IIOP 序列化攻击流程

82eb37b7633e0e6900c2744320445218.png

一般 IIOP 序列化攻击的大致流程主要为首先构建恶意序列化代码,然后初始化上下文实例,最后通过 bind/rebind 进行发送恶意序列化代码,下图为关键代码。

ec72e6e8b4f6766be2cdf496ea86a416.png

IIOP 初始化上下文流程

初始化上下文通过攻击流程中的 new InitialContext(env) 进行构建,最终的入口点通过 getInitialContext 方法进行构建,最终是进行流入到 InitialContextFactoryImpl.getInitialContext 进行初始化上下文。

69b147a86e93262489d69f8d8ff5605c.png

在流入 InitialContextFactoryImpl.getInitialContext 之后会通过 obj = ORBHelper.getORBHelper().getORBReference 来进行获取 NameService,然后将获取到的 NameService 进行实例化创建上下文实例,提供后续的执行操作。

19900bbc821910dd47d0a01c24f30a3c.png

rebind 流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值