CSV 注入 (CSV Injection)
许多 Web 应用程序允许用户将发票模板或用户设置等内容下载为 CSV 文件。许多用户选择使用 Excel、Libre Office 或 Open Office 打开 CSV 文件。当 Web 应用程序没有正确验证 CSV 文件的内容时,可能会导致单元格中的一个或多个公式被执行。
摘要 (Summary)
方法论 (Methodology)
CSV 注入,也称为公式注入 (Formula Injection),是一种在 CSV 文件中包含不受信任的输入时发生的安全漏洞。任何公式都可以以以下符号开头:
利用 动态数据交换 (Dynamic Data Exchange, DDE) 的基本攻击。
-
弹出计算器 (calc)
-
PowerShell 下载并执行
-
前缀混淆与命令链接
-
使用 rundll32 代替 cmd
-
使用空字符绕过字典过滤器。由于它们不是空格,在执行时会被忽略。
上述 Payload 的技术细节:
cmd是当客户端尝试访问服务器时,服务器可以响应的名称/C calc是文件名,在我们的案例中是 calc(即 calc.exe)!A0是项名称,指定了客户端请求数据时服务器可以响应的数据单元
Google 表格 (Google Sheets)
Google 表格允许一些额外的公式,这些公式能够获取远程 URL:
- IMPORTXML(url, xpath_query, locale)
- IMPORTRANGE(spreadsheet_url, range_string)
- IMPORTHTML(url, query, index)
- IMPORTFEED(url, [query], [headers], [num_items])
- IMPORTDATA(url)
因此,可以使用以下公式测试盲公式注入或潜在的数据外带:
注意:系统会弹出警告,提醒用户某个公式正在尝试联系外部资源,并要求授权。
参考资料 (References)
- CSV Excel 宏注入 - Timo Goosen, Albinowax - 2022年6月21日
- CSV Excel 公式注入 - Google Bug Hunter University - 2022年5月22日
- CSV 注入 – 保护 CSV 文件指南 - Akansha Kesharwani - 2017年11月30日
- 从 CSV 到 Meterpreter - Adam Chester - 2015年11月5日
- 极度被低估的 CSV 注入危险 - George Mauer - 2017年10月7日
- 三种新的 DDE 混淆方法 - ReversingLabs - 2018年9月24日
- 您的 Excel 表格并不安全!如何击败 CSV 注入 - we45 - 2020年10月5日