weblogic攻击手法有哪些


weblogic攻击手法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。weblogic服务器的特点为架构庞大复杂,蓝队一般很难防御,且多部署于外网。而且weblogic的攻击成本比较低,只要存在漏洞,一般可以直接获取目标服务器的root权限。在攻防演习中被各大攻击队,防守方重点关注。当然,目前网上公开的各种exp程序,当然也包括我自己的工具,或多或少都有点问题。于是近期在朋友的要求下,整理了部分攻击方法以及”完美“利用。红队可以用来完善自己的工具,蓝队可以用来写溯源报告。目前网上公开的资料中,没有一种比较好的方法去判断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.classxmldecoder 黑名单http://192.168.119.130:8088//bea_wls_internal/classes/weblogic/wsee/workarea/WorkContextXmlInputAdapter.classweblogic.rjvm.InternalWebAppListener#contextInitialized处代码,注册处理codebase的代码,也就是请求路径为classes下面我们来看一下weblogic.servlet.ClasspathServlet的处理代码,很简单,就是读取类名然后写入到http响应中。当然,这里是不是也存在任意文件读取漏洞呢?答案是的,只不过有一个黑名单,禁止某些后缀的文件被读取。黑名单列表如下理论上讲,你也可以通过CODEBASE去读取用户的类下载到本地做代码分析。前提是你需要知道用户的类名是什么。当然,也有黑名单,黑名单如下漏洞不做过多介绍,在这里不谈该漏洞的成因原理以及分析。漏洞探测的url/wls-wsat/CoordinatorPortTypeRegistrationPortTypeRPCParticipantPortTypeRegistrationRequesterPortTypeCoordinatorPortType11RegistrationPortTypeRPC11ParticipantPortType11RegistrationRequesterPortType11该漏洞利用的难点我认为有如下几个方面1.网上只有回显代码,没有利用代码,例如内存马2.写马的话,可能会遇到路径的问题。wenlogic的路径为随机,目前网上公开的解决办法是爆破。3.怎么寻找所有的Context?下面我们来一一解决,以weblogic 10.x的exp为例xmldecoder的xml payload做了以下的工作1.调用weblogic.utils.Hex.fromHexString函数,将hex编码的class文件转换为二进制格式2.调用org.mozilla.classfile.DefiningClassLoader的defineClass方法,将上面的class文件加载到虚拟机中3.调用newInstance方法生成上面被添加至JVM的类的实例4.调用实例的方法以完成攻击payload其实你知道稍微看一下,就知道xmldecoder的写法,这里就不再赘述上面所有的问题,其实都可以归结为一个问题,那就是怎么寻找weblogic下,所有web应用的上下文?在这里我公开一个方法,该方法在weblogic 10/12下经过测试,且不受协议影响,也就是说,你只要能在weblogic里执行代码,我就可以获取weblogic所有的webcontext。 代码如下利用上面的代码,获取到weblogic 加载的所有的web context后,我们可以调用context.getRootTempDir().getAbsolutePath()方法去获取目录的位置,然后写入webshell。我的代码如下截图如下weblogic 12.x 中,没有org.mozilla.classfile.DefiningClassLoader这个类,况且我也不太喜欢这种不灵活的方式去写exp。在这里我换一种方式,那就是通过java调用js。从 JDK 1.8 开始,Nashorn取代Rhino(JDK 1.6, JDK1.7) 成为 Java 的嵌入式 JavaScript 引擎。Nashorn 完全支持 ECMAScript 5.1 规范以及一些扩展。它使用基于 JSR 292 的新语言特性,其中包含在 JDK 7 中引入的 invokedynamic,将 JavaScript 编译成 Java 字节码。注意,不支持1.5以及1.5以下的JVM在java执行js时,可以调用任意java对象,方法,类。需要注意的是,java是强类型语言,而js是弱类型语言,js有的时候可能会代码意想不到的类型转换。这里需要注意只需要将上面加载context的代码,改成js就可以,在这里我贴一张截图在nashorn中,默认最后一个变量作为调用本次js的返回值在这里我推荐一下r4v3zn老哥的weblogic-framework 利用工具, 。当然也有一点点bug,不过这是一款非常好用的工具。工具地址 https://github.com/0nise/weblogic-f免费云主机域名ramework漏洞探测的话,参考前面的黑名单下载方式当然,T3反序列化中也有很多坑,例如 cve-2020-2555 等,无法做到类似于CC链的任意代码执行,目前同行的大部分做法是上传一个jar至tmp目录或者通过urlclassloader去远程加载jar包,部署恶意代码。但是我们依旧可以通过反序列化的链式执行,调用nashorn的方式,间接做到任意代码执行。而我们待执行的js,通过反射调用javaassist包去组装一个ClusterMasterRemote类并绑定JNDI实例以作回显。js代码如下image-20210329124530132当然,corherence gadget处需要修改成如下看完上述内容,你们掌握weblogic攻击手法有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注云编程开发博客行业资讯频道,感谢各位的阅读!

相关推荐: MAC地址格式详解

以太网编址在数据链路层,数据帧通常依赖于MAC地址来进行数据交换,它如同公网IP地址一样要求具有全球唯一性,这样才可以识别每一台主机。那么MAC地址如何做到这点?它的格式又是什么?MAC地址,英文全称Medium Ac免费云主机域名cess Control,直…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/07 11:47
下一篇 02/07 11:51