利用客户端路径遍历执行 CSRF (CSPT2CSRF)

admin 2024年7月10日12:55:55评论2 views字数 2226阅读7分25秒阅读模式

利用客户端路径遍历执行 CSRF (CSPT2CSRF)

客户端路径遍历 (CSPT)

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

利用客户端路径遍历执行 CSRF (CSPT2CSRF)

虽然这类漏洞在服务器端非常常见,但只有少数客户端路径遍历漏洞被广泛报道。我们发现的第一个参考资料是 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 过滤器

利用客户端路径遍历执行 CSRF (CSPT2CSRF)

带有 GET 接收器的 CSPT2CSRF

存在一些使用 GET 接收器来利用 CSPT 的场景:

  • 使用开放重定向泄露与源相关的敏感数据

  • 使用开放重定向加载恶意数据以触发 XSS

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

也就是说,在我们的研究过程中,即使没有直接使用 GET 接收器实现阶段更改操作,我们也经常能够通过 CSPT2CSRF 利用它们,而无需满足前两个先决条件。

事实上,通常可以将具有 GET 接收器的 CSPT2CSRF 与另一个状态改变的 CSPT2CSRF 链接起来。

利用客户端路径遍历执行 CSRF (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

利用客户端路径遍历执行 CSRF (CSPT2CSRF)

综上所述

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

原文始发于微信公众号(Ots安全):利用客户端路径遍历执行 CSRF (CSPT2CSRF)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月10日12:55:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用客户端路径遍历执行 CSRF (CSPT2CSRF)http://cn-sec.com/archives/2938871.html

发表评论

匿名网友 填写信息