天天看點

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

作者:數智大号

01.

漏洞詳情

1、漏洞簡介

2022年3月30日,Spring架構曝出RCE 0day漏洞,國家資訊安全漏洞共享平台(CNVD)已收錄了Spring架構遠端指令執行漏洞(CNVD-2022-23942),考慮到Spring架構的廣泛應用,漏洞被評級為危險。

通過該漏洞可寫入webshell以及指令執行。在Spring架構的JDK9版本(及以上版本)中,遠端攻擊者可在滿足特定條件的基礎上,通過架構的參數綁定功能擷取AccessLogValve對象并注入惡意字段值,進而觸發pipeline機制并寫入任意路徑下的檔案。

2、漏洞利用條件

  • Apache Tomcat作為Servlet容器;
  • 使用JDK9及以上版本的Spring MVC架構;
  • Spring架構以及衍生的架構spring-beans-*.jar檔案或者存在

3、漏洞影響範圍

  • JDK JDK 9+
  • Spring Framework 5.3.18+ 5.2.20+

docker已經配置好jdk環境。docker中的環境與主控端jdk環境無關,隻是當時做實驗的時候,剛好也裝了jdk9,記錄了一下安裝過程。

ubuntu下jdk9安裝:

官網下載下傳jdk,放入解壓到路徑/usr/lib/jvm

利用update-alternatives 進行jdk版本切換

數字越大,優先級越高

執行指令:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

修改配置:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

檢查一下:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

每一個指令都是auto 模式,這樣才會自動選擇優先級高的。為了確定,可以不用管現在的狀态,直接設定一遍這些指令為auto模式。

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

版本檢查:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

02.

環境配置

主機系統:Apple M1,macOS Ventura version13.0

虛拟機系統(docker靶場系統):ubuntu 20.04.2 x86 (騰訊雲伺服器)

03.

漏洞複現

靶場項目:https://github.com/vulhub/vulhub

1、ubuntu安裝docker

源:https://lug.ustc.edu.cn/wiki/mirrors/help/docker/

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、安裝pip

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

3、安裝docker-compose

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、啟動靶場環境

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

可能遇到的問題:卡在了pulling階段

因為docker加速器逾時導緻pull不下來,改成國内鏡像

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

添加以下内容:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

重新開機

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

5、漏洞版本驗證

進入docker控制台

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

JDK

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

04.

利用鍊

利⽤class對象構造利⽤鍊,對Tomcat的日志配置進行修改

然後,向⽇志中寫⼊shell

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

1、構造payload

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、GET發送

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

伺服器上驗證,确實已經生成了jsp

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

3、通路寫入的webshell檔案

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、清空

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

總體來說,這個漏洞的利用方法會修改目标伺服器配置,導緻目标需要重新開機伺服器才能恢複,實際測試中需要格外注意。

05.

反彈shell

1、用msf生成木馬

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

Lhost是監聽機器的ip。因為目标機也是公網中的,是以監聽機器也需要是公網IP,這樣才能通路到。

msf生成的shell.elf是在本地的,需要自己想辦法傳到伺服器上。

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、木馬上傳

正常情況下,應該是在公網的vps下面生成elf,然後wget下載下傳。但我這次在本地生成的,是以直接scp拷到伺服器上去。

主控端向docker傳輸檔案

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

3、賦予木馬權限

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、msf開啟監聽

在公網伺服器上

ubuntu快速安裝msf:Ubuntu快速安裝MSF - tomyyyyy - 部落格園

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

5、執行木馬

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

06.

抓包

過濾語句:ip終點選靶機的IP,起點選擇攻擊機的IP。

因為靶場走的8080端口,http協定,是以篩選條件加上http協定。

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

追随No.1277和1566的http流

07.

特征流量分析

1、pipeline.first.pattern

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

對get頭進行解碼:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、pipeline.first.suffix

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

3、parent.pipeline.first.directory

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、pipeline.first.prefix

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

5、pipeline.first.fileDateFormat

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

08.

漏洞規則

規則思路如下:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

09.

snort規則驗證

snort的各種配置以及環境,見以前的blog:http://985.so/b0etg

把剛剛抓到的資料包放進snort環境中,把寫好的規則檔案也放進環境中。

1、規則配置

把規則檔案放進規則路徑,并修改snort.conf配置

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、修改snort.conf的内容

設定需要保護的ip位址

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

在setp6裡,設定輸出

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

翻到最下面,找到規則集清單。

打開local.rules的注釋,以允許snort裝載個性化規則集。

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

儲存編輯:wq

3、測試是否能正常工作

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、運作成功

5、規則驗證

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

10.

修複及防範措施

1、漏洞排查

  • JDK版本号排查

在業務系統的運作伺服器上,執行java -version指令檢視運作的JDK版本,如果版本号小于等于8,則不受漏洞影響

  • Spring架構使用情況排查

如果業務系統項目以war包形式部署,按照如下步驟進行判斷:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

如果業務系統項目以jar包形式直接獨立運作,按照如下步驟進行判斷:

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

2、漏洞影響

  • JDK版本号在9及以上的
  • 使用了spring架構或衍生架構

3、漏洞修複建議

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、安全産品部署

該漏洞的防範規則,現已加入六方雲工業網際網路安全産品體系。

  • 在網絡出口位置部署六方雲防火牆,并及時更新特征庫;
  • 部署六方雲網絡威脅檢測與回溯系統,及時發現未知威脅。

11.

附錄:snort 檔案部署路徑

1、snort安裝包所在路徑、相關文檔

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析
  • doc:snort的一些說明文檔所在檔案夾

2、snort規則檔案、配置檔案

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

3、snort日志檔案

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

4、snort運作

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

5、規則路徑

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析

6、配置路徑

深度解析丨Spring架構遠端指令執行漏洞複現及流量特征分析