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版本切換
數字越大,優先級越高
執行指令:
修改配置:
檢查一下:
每一個指令都是auto 模式,這樣才會自動選擇優先級高的。為了確定,可以不用管現在的狀态,直接設定一遍這些指令為auto模式。
版本檢查:
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/
2、安裝pip
3、安裝docker-compose
4、啟動靶場環境
可能遇到的問題:卡在了pulling階段
因為docker加速器逾時導緻pull不下來,改成國内鏡像
添加以下内容:
重新開機
5、漏洞版本驗證
進入docker控制台
JDK
04.
利用鍊
利⽤class對象構造利⽤鍊,對Tomcat的日志配置進行修改
然後,向⽇志中寫⼊shell
1、構造payload
2、GET發送
伺服器上驗證,确實已經生成了jsp
3、通路寫入的webshell檔案
4、清空
總體來說,這個漏洞的利用方法會修改目标伺服器配置,導緻目标需要重新開機伺服器才能恢複,實際測試中需要格外注意。
05.
反彈shell
1、用msf生成木馬
Lhost是監聽機器的ip。因為目标機也是公網中的,是以監聽機器也需要是公網IP,這樣才能通路到。
msf生成的shell.elf是在本地的,需要自己想辦法傳到伺服器上。
2、木馬上傳
正常情況下,應該是在公網的vps下面生成elf,然後wget下載下傳。但我這次在本地生成的,是以直接scp拷到伺服器上去。
主控端向docker傳輸檔案
3、賦予木馬權限
4、msf開啟監聽
在公網伺服器上
ubuntu快速安裝msf:Ubuntu快速安裝MSF - tomyyyyy - 部落格園
5、執行木馬
06.
抓包
過濾語句:ip終點選靶機的IP,起點選擇攻擊機的IP。
因為靶場走的8080端口,http協定,是以篩選條件加上http協定。
追随No.1277和1566的http流
07.
特征流量分析
1、pipeline.first.pattern
對get頭進行解碼:
2、pipeline.first.suffix
3、parent.pipeline.first.directory
4、pipeline.first.prefix
5、pipeline.first.fileDateFormat
08.
漏洞規則
規則思路如下:
09.
snort規則驗證
snort的各種配置以及環境,見以前的blog:http://985.so/b0etg
把剛剛抓到的資料包放進snort環境中,把寫好的規則檔案也放進環境中。
1、規則配置
把規則檔案放進規則路徑,并修改snort.conf配置
2、修改snort.conf的内容
設定需要保護的ip位址
在setp6裡,設定輸出
翻到最下面,找到規則集清單。
打開local.rules的注釋,以允許snort裝載個性化規則集。
儲存編輯:wq
3、測試是否能正常工作
4、運作成功
5、規則驗證
10.
修複及防範措施
1、漏洞排查
- JDK版本号排查
在業務系統的運作伺服器上,執行java -version指令檢視運作的JDK版本,如果版本号小于等于8,則不受漏洞影響
- Spring架構使用情況排查
如果業務系統項目以war包形式部署,按照如下步驟進行判斷:
如果業務系統項目以jar包形式直接獨立運作,按照如下步驟進行判斷:
2、漏洞影響
- JDK版本号在9及以上的
- 使用了spring架構或衍生架構
3、漏洞修複建議
4、安全産品部署
該漏洞的防範規則,現已加入六方雲工業網際網路安全産品體系。
- 在網絡出口位置部署六方雲防火牆,并及時更新特征庫;
- 部署六方雲網絡威脅檢測與回溯系統,及時發現未知威脅。
11.
附錄:snort 檔案部署路徑
1、snort安裝包所在路徑、相關文檔
- doc:snort的一些說明文檔所在檔案夾
2、snort規則檔案、配置檔案
3、snort日志檔案
4、snort運作
5、規則路徑
6、配置路徑