WebLogic 动态调试环境搭建

背景简介

​WebLogic 是美国Oracle公司出品的一个 application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic 是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将 Java 的动态功能和 Java Enterprise 标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

​近年来,Java 反序列化漏洞爆发,WebLogic 作为一个 Java 应用服务器也深受反序列漏洞的影响。就目前在外有详情和漏洞利用程序的 WebLogic 反序列化漏洞就有不少,CVE-2015-4852,CVE-2016-0638,CVE-2016-3510,CVE-2017-3248,CVE-2018-2628等。本文记录的就是一个搭建 WebLogic 动态调试环境的过程,方便调试 WebLogic 相关漏洞。

工具准备

  • IntelliJ IDEA
  • WebLogic 10.3.6.0
  • 一个可以部署在 WebLogic 上的 web 应用,我用的是jolokia-1.0.0。

下载安装

  1. WebLogic 去 Oracle 官网下载,我下载的是WebLogic 10.3.6.0,点击安装即可。

  2. Web 应用使用的是jolokia-1.0.0,选个能在 WebLogic 上部署的 web 应用就行,要注意的是 jdk 版本问题,我下载的 WebLogic 10.3.6.0 ,它自带的 jdk 版本很低,是1.6.029,可以说非常古老了。所以选择的 web 应用要保证在 jdk 1.6.029 上运行。

  3. 将 web 项目导入到 IntelliJ IDEA 里面。

配置 WebLogic

设置 web 项目 JDK

​ 点击 idea 的 Project Structure,新建一个 jdk,web 项目要使用 WebLogic 自带的jdk,因为调试反序列化漏洞的时候会跟到 jdk 里面的相关函数,所以这里一定要使用 WebLogic 的jdk,这个非常非常重要。

新建 Weblgoic

​ 点击 idea 的Edit Configurations,添加一个本地的 WebLogic。

配置 WebLogic 服务器

​ 新建一个本地 WebLogic 之后,WebLogic server的名字可以自己随意填,要在Application server中配置一个 WebLogic 服务器,也就是将本地安装的 WebLogic 和idea 连通起来。WebLogic Home添加的是 WebLogic 的安装目录。

​ 配置好之后,下面的Domain Path就会自动识别了,这里要填的就是 WebLogic 的管理员的账号密码了,因为要部署 web 应用。

​ 最后在设置一下下Deployment,添加一个Artifacts

​ 添加完之后就ok了,可以跑起来了。

调试 WebLogic

​ 经过上面的步骤,已经可以成功的在 idea 上运行 WebLogic了,接下来的调试也很简单,想调试哪个包,在web 项目的 Libraries 上添加进去,然后下断点就行了。

​ WebLogic 大多数包都是在Middleware\modules,所以我把整个文件夹添加到 web 项目的Libraries

​ 添加完成后,此时就可以在 idea 的 External Libtaries 中看到我们添加的包。

​ 例如,WebLogic 的反序列漏洞大多是通过t3协议来发送 payload,数据流会经过InboundMsgAbbrev这个类,我们就可以在D:\Oracle\Middleware\modules\com.bea.core.WebLogic.rmi.client_1.11.0.0.jar!\WebLogic\rjvm\InboundMsgAbbrev.class上下断点,然后debug启动,用脚本发送payload,可以看到,成功的debug到了。

​ 有一些漏洞触发点在其他的包里面,可以找到位置添加到Libraries里,在里面下断点就可以 debug 了。