利用客户端路径遍历执行跨站请求伪造 - 介绍CSPT2CSRF
为了给用户提供更安全的浏览体验,IETF提案"渐进式改进Cookie"推动了一些重要变更来解决跨站请求伪造和其他客户端问题。随后,Chrome和其他主流浏览器实施了建议的更改并引入了SameSite属性。SameSite有助于缓解CSRF,但这是否意味着CSRF已经消亡?
在审计主要Web应用程序时,我们意识到客户端路径遍历实际上可以被利用来复活CSRF,让所有渗透测试人员感到欣喜。
这篇博客文章是对我研究的简要介绍。详细的研究结果、方法和深入分析可在白皮书中找到。
本研究介绍了客户端路径遍历的基础知识,展示了跨站请求伪造的源和接收器。为了证明我们发现的影响和新颖性,我们在主要Web消息应用程序中展示了漏洞,包括Mattermost和Rocket.Chat等。
最后,我们发布了一个Burp扩展来帮助发现客户端路径遍历的源和接收器。
感谢Mattermost和Rocket.Chat团队的合作和授权分享此内容。
客户端路径遍历
每个安全研究人员都应该知道什么是路径遍历。这种漏洞使攻击者能够使用类似../../../../的有效负载来读取预期目录之外的数据。与从服务器读取文件的服务器端路径遍历攻击不同,客户端路径遍历攻击专注于利用此弱点向非预期的API端点发出请求。
虽然这类漏洞在服务器端非常普遍,但只有少数客户端路径遍历的实例被广泛公开。我们找到的第一个参考是Philippe Harewood在Facebook漏洞赏金计划中报告的错误。从那时起,我们只找到了关于客户端路径遍历的少数参考:
- Sam Curry在2021年的推文
- Johan Carlsson在GitLab中的1-click CSRF
- Medi的CSS注入,入选Portswigger 2022年前10名Web黑客技术
- Erasec的Antoine Roly发现的CSRF
还从OWASP和Soheil Khodayari与Giancarlo Pellegrino的研究论文中找到了一些关于客户端CSRF的其他参考。
客户端路径遍历多年来一直被忽视。虽然被许多人认为是低影响漏洞,但它实际上可以用来强制最终用户在Web应用程序上执行不需要的操作。
利用客户端路径遍历执行跨站请求伪造
这项研究源于在Web安全 engagements 中利用多个客户端路径遍历漏洞的经验。然而,我们意识到缺乏文档和知识来理解使用客户端路径遍历执行CSRF的限制和潜在影响。
源
在研究过程中,我们发现存在一个常见的偏见。研究人员可能认为用户输入必须在前端。但是,与XSS类似,任何用户输入都可能导致CSPT:
- URL片段
- URL查询
- 路径参数
- 注入数据库的数据
在评估源时,您还应考虑是否需要任何操作来触发漏洞,或者是否在页面加载时触发。实际上,这种复杂性将影响漏洞的最终严重性。
接收器
CSPT将重新路由合法的API请求。因此,攻击者可能无法控制HTTP方法、头部和请求体。
所有这些限制都与源相关。实际上,相同的前端可能有执行不同操作的不同源。
每个CSPT2CSRF都需要描述(源和接收器)以识别漏洞的复杂性和严重性。
作为攻击者,我们希望找到共享相同限制的所有有影响的接收器。这可以通过以下方式完成:
- API文档
- 源代码审查
- Semgrep规则
- Burp Suite Bambda过滤器
使用GET接收器的CSPT2CSRF
存在一些利用带有GET接收器的CSPT的场景:
- 使用开放重定向泄漏与源关联的敏感数据
- 使用开放重定向加载恶意数据以触发XSS
然而,开放重定向现在被许多安全研究人员追踪,并且在使用现代框架的前端中找到XSS可能很困难。
也就是说,在我们的研究过程中,即使状态更改操作没有直接通过GET接收器实现,我们也经常能够通过CSPT2CSRF利用它们,而不需要前面两个先决条件。
实际上,通常可以将具有GET接收器的CSPT2CSRF与另一个状态更改的CSPT2CSRF链接起来。
第一个原语:GET CSPT2CSRF:
- 源:查询中的id参数
- 接收器:API上的GET请求
第二个原语:POST CSPT2CSRF:
- 源:JSON数据中的id
- 接收器:API上的POST请求
要链接这些原语,必须找到GET接收器小工具,并且攻击者必须控制返回JSON的id。有时,后端可能直接授权,但我们发现的最常见小工具是滥用文件上传/下载功能。实际上,许多应用程序在API中暴露了文件上传功能。攻击者可以上传带有被操纵id的JSON,并定位此内容以触发具有状态更改操作的CSPT2CSRF。
在白皮书中,我们通过Mattermost中的示例解释了此场景。
与社区分享
这项研究上周由Maxence Schmitt在OWASP Global Appsec Lisbon 2024上展示。幻灯片可以在这里找到。
这篇博客文章只是我们广泛研究的一瞥。要获得全面的理解和技术细节,请参阅白皮书。
除了这份白皮书,我们还发布了一个BURP扩展来查找客户端路径遍历。
结论
我们认为CSPT2CSRF被许多安全研究人员忽视,并且大多数前端开发人员不知道。我们希望这项工作能够突出这类漏洞,并帮助安全研究人员和防御者保护现代应用程序。
更多信息
如果您想了解我们的其他研究,请查看我们的博客,在X上关注我们,或随时通过info@doyensec.com联系我们,了解更多关于我们如何帮助您的组织"安全构建"的信息。