CVE-2020-2551 深入 IIOP 检测与 Non-Java(Yak) 利用

背景

Weblogic的7001端口默认支持T3协议和IIOP协议,本文将基于CVE-2020-2551漏洞分析weblogic的IIOP协议与其利用。

与IIOP协议相关的一些名词还有CORBA、IDL、ORB、RMI-IIOP、GIOP、stub、skeleton。简单理解,其实IIOP类似RMI。

名词介绍

用一些自己的理解介绍一些相关名词

IDL

IDL全称(Interface Definition
Language)接口定义语言,它是一种与编程语言无关的接口描述语言,其它编程语言都有针对IDL的编译器,可以将IDL语言编写的文件转为其编程语言的接口或类型。保证了不同语言之间接口的统一,可以跨语言沟通。

ORB

ORB全称(Object Request
Broker)对象请求代理。ORB代理的是服务端的对象,根据客户端的请求,调用相应对象,而客户端不需要关心对象是服务端本地的还是远程的。

GIOP和IIOP

GIOP全称(General Inter-ORB Protocol)通用对象请求协议,IIOP全称(Internet Inter-ORB
Protocol)互联网内部对象请求代理协议,从英文名可以看出,GIOP是通用的Inter-
ORB协议,规定了传输ORB数据时的规范,它针对不同的通信层有不同的具体实现,而针对于TCP/IP层,其实现名为IIOP。

ORB和IIOP关系如图

CORBA

CORBA全称(Common ObjectRequest Broker
Architecture)公共对象请求代理体系结构,也就是通用的ORB体系结构,IDL、ORB和IIOP是CORBA的三个关键模块。按结构可以分成三部分,客户端、服务端、注册中心,和RMI很像,不过RMI不能跨语言。其提出是为了解决不同应用程序间的通信,曾是分布式计算的主流技术。

漏洞复现

漏洞环境使用vulhub的weblogic/CVE-2017-10271,weblogic版本:10.3.6.0,利用工具使用Y4er的CVE-2020-2551:https://github.com/Y4er/CVE-2020-2551

如果weblogic的主机和攻击机不在同一个网络环境下(例如Docker搭建),执行EXP可能就会出现timeout的报错,如图。

原因是第一次LocateRequest请求,返回中会有weblogic主机的ip,下一次的请求会使用weblogic主机的ip,如图,ip是docker的,所以会出现timeout

网络问题解决

  1. 修改官方库

  2. 自己实现iiop协议

方法1简单些,只需要找到发起socket连接的位置,修改ip和端口。

先打开idea,添加异常断点,然后正常运行EXP,出现超时异常时可以看见调用栈如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值