客户端路径遍历 (CSPT)
每位安全研究人员都应该知道什么是路径遍历。此漏洞使攻击者能够使用有效载荷来../../../../读取目标目录之外的数据。与从服务器读取文件的服务器端路径遍历攻击不同,客户端路径遍历攻击专注于利用此漏洞来向非预期的 API 端点发出请求。
虽然这类漏洞在服务器端非常常见,但只有少数客户端路径遍历漏洞被广泛报道。我们发现的第一个参考资料是 Philippe Harewood 在 Facebook 漏洞赏金计划中报告的一个漏洞。从那时起,我们只发现了一些关于客户端路径遍历的参考资料:
-
Sam Curry 在 2021 年发布的一条推文
https://x.com/samwcyo/status/1437030056627523590
-
Johan Carlsson 在 GitLab 中一键式 CSRF
https://gitlab.com/gitlab-org/gitlab/-/issues/365427
-
Medi 的被提名为2022 年 Portswigger 十大网络黑客技术
https://portswigger.net/research/top-10-web-hacking-techniques-of-2022
-
来自 Erasec 的 Antoine Roly 发起的CSRF
-
在 OWASP 以及 Soheil Khodayari 和 Giancarlo Pellegrino 的这篇研究论文中还发现了一些关于客户端 CSRF 的其他参考资料。
https://www.usenix.org/system/files/sec21-khodayari.pdf
客户端路径遍历漏洞多年来一直被人们忽视。虽然许多人认为这是一个影响较小的漏洞,但它实际上可用于强迫最终用户在 Web 应用程序上执行不必要的操作。
客户端路径遍历执行跨站点请求伪造(CSPT2CSRF)
这项研究源于我们在网络安全工作中利用多个客户端路径遍历漏洞。然而,我们意识到缺乏文档和知识来了解使用客户端路径遍历执行 CSRF(CSPT2CSRF)的限制和潜在影响。
来源
在进行这项研究时,我们发现存在一个常见的偏见。研究人员可能认为用户输入必须在前端。然而,就像 XSS 一样,任何用户输入都可能导致 CSPT(想想 DOM、反射、存储):
-
URL 片段
-
URL 查询
-
路径参数
-
数据注入数据库
在评估漏洞来源时,您还应该考虑是否需要采取任何行动来触发漏洞,或者是否在页面加载时触发漏洞。事实上,这种复杂性将影响漏洞的最终严重程度。
CSPT 将重新路由合法的 API 请求。因此,攻击者可能无法控制 HTTP 方法、标头和正文请求。
所有这些限制都与源相关。事实上,同一个前端可能具有执行不同操作的不同源(例如 GET/POST/PATCH/PUT/DELETE)。
每个 CSPT2CSRF 都需要进行描述(源和接收器),以识别漏洞的复杂性和严重性。
作为攻击者,我们希望找到所有具有相同限制的有影响力的接收器。这可以通过以下方式完成:
-
API 文档
-
源代码审查
-
Semgrep 规则
-
Burp Suite Bambda 过滤器
带有 GET 接收器的 CSPT2CSRF
存在一些使用 GET 接收器来利用 CSPT 的场景:
-
使用开放重定向泄露与源相关的敏感数据
-
使用开放重定向加载恶意数据以触发 XSS
然而,开放重定向现在受到许多安全研究人员的追捕,并且使用现代框架在前端中找到 XSS 可能很困难。
也就是说,在我们的研究过程中,即使没有直接使用 GET 接收器实现阶段更改操作,我们也经常能够通过 CSPT2CSRF 利用它们,而无需满足前两个先决条件。
事实上,通常可以将具有 GET 接收器的 CSPT2CSRF 与另一个状态改变的 CSPT2CSRF 链接起来。
第一个原语:GET CSPT2CSRF:
-
来源:id查询中的参数
-
接收器:API 上的 GET 请求
第二个原语:POST CSPT2CSRF:
-
来源:id来自 JSON 数据
-
接收器:API 上的 POST 请求
要串联这些原语,必须找到一个 GET 接收器小工具,并且攻击者必须控制id返回的 JSON。有时,它可能直接由后端授权,但我们发现最常见的小工具是滥用文件上传/下载功能。事实上,许多应用程序在 API 中公开了文件上传功能。攻击者可以上传带有操纵的 JSONid并针对此内容以通过状态更改操作触发 CSPT2CSRF。
在白皮书中,我们用 Mattermost 中的一个示例解释了这种场景。
与社区共享
该项研究由 Maxence Schmitt( @maxenceschmitt )上周在 OWASP Global Appsec Lisbon 2024 上展示。幻灯片可在此处找到。www.doyensec.com/resources/Doyensec_CSPT2CSRF_OWASP_Appsec_Lisbon.pdf
这篇博文只是我们广泛研究的冰山一角。如需全面了解和详细技术见解,请参阅白皮书www.doyensec.com/resources/Doyensec_CSPT2CSRF_Whitepaper.pdf
随着这份白皮书的发布,我们将发布一个BURP 扩展来查找客户端路径遍历。https://github.com/doyensec/CSPTBurpExtension
综上所述
我们认为 CSPT2CSRF 被许多安全研究人员忽视,并且大多数前端开发人员都不知道。我们希望这项工作能够凸显此类漏洞,并帮助安全研究人员和防御者保护现代应用程序的安全。
原文始发于微信公众号(Ots安全):利用客户端路径遍历执行 CSRF (CSPT2CSRF)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论