利用客户端路径遍历实现跨站请求伪造 - CSPT2CSRF技术解析

本文深入探讨客户端路径遍历(CSPT)漏洞如何被利用来实现跨站请求伪造(CSRF)攻击,介绍CSPT2CSRF技术原理、攻击场景及实际案例,并发布配套的Burp扩展工具帮助安全研究人员检测此类漏洞。

利用客户端路径遍历执行跨站请求伪造 - 介绍CSPT2CSRF

2024年7月2日 - Maxence Schmitt发布

为了为用户提供更安全的浏览体验,IETF提案"逐步改进的Cookie"推动了一系列重要变更,以解决跨站请求伪造(CSRF)和其他客户端问题。不久后,Chrome和其他主流浏览器实施了建议的更改并引入了SameSite属性。SameSite有助于缓解CSRF,但这是否意味着CSRF已经消亡?

在审计主要Web应用程序时,我们意识到客户端路径遍历(CSPT)实际上可以被利用来"复活"CSRF,这让所有渗透测试人员感到欣喜。

客户端路径遍历(CSPT)

每个安全研究人员都应该了解路径遍历是什么。这种漏洞使攻击者能够使用类似../../../../的有效载荷来读取预期目录之外的数据。与从服务器读取文件的服务器端路径遍历攻击不同,客户端路径遍历攻击专注于利用此弱点向非预期的API端点发出请求。

虽然这类漏洞在服务器端非常常见,但只有少数客户端路径遍历案例被广泛公开。我们发现的首个参考是Philippe Harewood在Facebook漏洞赏金计划中报告的错误。

客户端路径遍历执行跨站请求伪造(CSPT2CSRF)

这项研究源于我们在Web安全评估中利用多个客户端路径遍历漏洞的经验。然而,我们意识到缺乏文档和知识来理解使用客户端路径遍历执行CSRF(CSPT2CSRF)的限制和潜在影响。

来源(Source)

在研究过程中,我们发现存在一个常见的偏见。研究人员可能认为用户输入必须在前端。然而,与XSS类似,任何用户输入都可能导致CSPT(考虑DOM、反射型、存储型):

  • URL片段
  • URL查询参数
  • 路径参数
  • 注入数据库的数据

接收器(Sink)

CSPT将重新路由合法的API请求。因此,攻击者可能无法控制HTTP方法、头部和请求体。

所有这些都是限制都与来源相关。实际上,相同的前端可能有不同的来源执行不同的操作(例如GET/POST/PATCH/PUT/DELETE)。

使用GET接收器的CSPT2CSRF

利用具有GET接收器的CSPT存在一些场景:

  • 使用开放重定向泄漏与来源相关的敏感数据
  • 使用开放重定向加载恶意数据以触发XSS

然而,开放重定向现在被许多安全研究人员追捕,在使用现代框架的前端中找到XSS可能很困难。

与社区分享

这项研究上周由Maxence Schmitt (@maxenceschmitt)在OWASP Global Appsec Lisbon 2024上展示。

除了白皮书,我们还发布了一个BURP扩展来查找客户端路径遍历。

结论

我们认为CSPT2CSRF被许多安全研究人员忽视,并且大多数前端开发人员都不知道。我们希望这项工作能够突出这类漏洞,并帮助安全研究人员和防御者保护现代应用程序的安全。

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