红蓝必备 你需要了解的weblogic攻击手法
发布日期:2024-05-24 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
文章来源:宽字节安全
简介
weblogic服务器的特点为架构庞大复杂,蓝队一般很难防御,且多部署于外网。而且weblogic的攻击成本比较低,只要存在漏洞,一般可以直接获取目标服务器的root权限。在hw中被各大攻击队,防守方重点关注。
当然,目前网上公开的各种exp程序,当然也包括我自己的工具,或多或少都有点问题。于是近期在朋友的要求下,整理了部分攻击方法以及”完美“利用。红队可以用来完善自己的工具,蓝队可以用来写溯源报告。
1. 探测weblogic是否存在漏洞
目前网上公开的资料中,没有一种比较好的方法去判断weblogic是否存在漏洞。通常各类工具做法是用exp打一遍,如果成功了则自然存在漏洞,如果失败了则不存在漏洞。再或者,通过dnslog的方式去探测。这两种方法受限于各种因素,导致漏报误报的比例很高。还有可能触发蜜罐,waf等等安全设备的规则。
当然在这里我介绍一种更简便的方式去查看是否存在漏洞,那就是利用T3 RMI的CODEBASE功能查看weblogic的黑名单 。
codebase: 简单说,codebase就是远程装载类的路径。当对象发送者序列化对象时,会在序列化流中附加上codebase的信息。这个信息告诉接收方到什么地方寻找该对象的执行代码。
那我们是不是可以发散一下思维,如果这个类是weblogic的黑名单类呢??而且weblogic的codebase利用http协议去传输类。
利用方法如下,使用你的浏览器,确认好对方是weblogic服务器后,url如下
T3反序列化的黑名单http://xx:7001/bea_wls_internal/classes/weblogic/utils/io/oif/WebLogicFilterConfig.class
xmldecoder 黑名单http://192.168.119.130:8088//bea_wls_internal/classes/weblogic/wsee/workarea/WorkContextXmlInputAdapter.class
1.1 T3 codebase分析
在weblogic.rjvm.InternalWebAppListener#contextInitialized处代码,注册处理codebase的代码,也就是请求路径为classes
if (!server.isClasspathServletDisabled()) { servletContext.addServlet("classes", "weblogic.servlet.ClasspathServlet").addMapping(new String[]{"/classes/*"}); }
下面我们来看一下weblogic.servlet.ClasspathServlet的处理代码,很简单,就是读取类名然后写入到http响应中。
当然,这里是不是也存在任意文件读取漏洞呢?答案是的,只不过有一个黑名单,禁止某些后缀的文件被读取。黑名单列表如下
image-20210329120332791
理论上讲,你也可以通过CODEBASE去读取用户的类下载到本地做代码分析。前提是你需要知道用户的类名是什么。当然,也有黑名单,黑名单如下
2. weblogic xmldecoder反序列化漏洞
漏洞不做过多介绍,在这里不谈该漏洞的成因原理以及分析。
漏洞探测的url
/wls-wsat/CoordinatorPortType
RegistrationPortTypeRPC
ParticipantPortType
RegistrationRequesterPortType
CoordinatorPortType11
RegistrationPortTypeRPC11
ParticipantPortType11
RegistrationRequesterPortType11
该漏洞利用的难点我认为有如下几个方面
网上只有回显代码,没有利用代码,例如内存马
写马的话,可能会遇到路径的问题。wenlogic的路径为随机,目前网上公开的解决办法是爆破。
怎么寻找所有的Context?
下面我们来一一解决,以weblogic 10.x的exp为例
xmldecoder的xml payload做了以下的工作
调用weblogic.utils.Hex.fromHexString函数,将hex编码的class文件转换为二进制格式
调用org.mozilla.classfile.DefiningClassLoader的defineClass方法,将上面的class文件加载到虚拟机中
调用newInstance方法生成上面被添加至JVM的类的实例
调用实例的方法以完成攻击
payload其实你知道稍微看一下,就知道xmldecoder的写法,这里就不再赘述
上面所有的问题,其实都可以归结为一个问题,那就是怎么寻找weblogic下,所有web应用的上下文?
在这里我公开一个方法,该方法在weblogic 10/12下经过测试,且不受协议影响,也就是说,你只要能在weblogic里执行代码,我就可以获取weblogic所有的webcontext。代码如下
java.lang.reflect.Method m = Class.forName("weblogic.t3.srvr.ServerRuntime").getDeclaredMethod("theOne"); m.setAccessible(true); ServerRuntime serverRuntime = (ServerRuntime) m.invoke(null); List
- 上一篇:常见网站劫持案例及解析
- 下一篇:蓝队防护手册(精选版)