介绍
路径遍历漏洞在服务器端攻击中已被广泛研究,攻击者可以通过操纵文件路径来访问受限目录并读取敏感文件。然而,存在一种鲜为人知但同样重要的变体——客户端路径遍历 (CSPT)。与服务器端路径遍历不同,CSPT 在浏览器中被利用,可用于操纵从客户端发送到非预期 API 端点的请求。尽管这种攻击媒介可能造成严重的安全隐患,包括身份验证绕过、数据泄露,甚至在现代应用程序中造成类似 CSRF 的攻击,但它仍然在很大程度上被安全研究人员和开发人员忽视。
什么是 CSPT?
客户端路径遍历是一个严重的安全漏洞,当攻击者操纵 Web 应用程序中的文件路径以未经授权访问存储在客户端或服务器端的文件时,就会发生这种情况。与传统的服务器端路径遍历攻击不同,客户端路径遍历利用的是 Web 浏览器、JavaScript 或本地文件访问机制中的漏洞。此漏洞可能导致敏感数据泄露、代码执行和其他安全漏洞。
在 Web 应用程序中,开发人员有时会使用客户端脚本动态访问和操作文件路径。如果用户输入未经过适当的过滤,则可能导致漏洞。当 Web 应用程序允许用户指定未经严格验证的文件路径时,攻击者可以编写恶意输入来访问受限制的文件。
常见技术包括:
- 修改 URL 参数以访问非预期的目录。
- 篡改基于 JavaScript 的文件访问机制。
- 利用浏览器漏洞绕过安全限制。
CSPT 与传统 SSPT 有何不同?
传统的服务器端路径遍历 (SSPT) 攻击利用后端文件系统中的漏洞,允许攻击者访问受限文件(例如 /etc/passwd 文件或应用程序配置文件)。相比之下,客户端路径遍历 (CSPT) 完全在浏览器中运行,利用客户端 JavaScript 代码来修改 API 请求路径。SSPT 专注于未经授权的文件访问,而 CSPT 则操纵前端逻辑,使其与非预期的后端端点进行交互。
CSPT 的关键组成部分:源和汇
CSPT 漏洞由两个基本要素组成:
1. 来源(攻击的入口点)
源是指用户输入在 API 请求中使用之前,被前端接受和处理的位置。如果输入未经过适当的过滤,攻击者可以注入路径遍历序列来操纵请求。
CSPT 的常见来源包括:
- 反射输入:通过查询字符串传递的参数,例如:
https://example.com/profile?id=1234
- 基于 DOM 的输入:存储在浏览器 URL 片段中的值,可通过 JavaScript 访问:
https://example.com/#user=1234
- 存储的输入:从数据库检索的数据,例如在上一个会话中保存的用户 ID。
2. Sink(可利用的 API 端点)
接收器是被操纵请求到达的端点。它根据攻击者可以执行的操作决定漏洞的影响程度。接收器是一个函数或端点,用于处理用户提供的输入并基于该输入执行操作。就 CSPT 而言,如果前端动态构建 API 请求并使用用户控制的输入来构建路径,攻击者可以利用此行为强制执行非预期的请求。如果身份验证和授权检查未得到正确实施,攻击的影响将显著增加。
CSPT 为何危险?
CSPT 经常被低估,因为它不像传统的路径遍历那样直接暴露服务器文件。然而,它的真正威力在于能够绕过安全控制,并以经过身份验证的用户身份执行未经授权的操作。
CSPT 的潜在影响
1.访问非预期的API端点:
攻击者可以检索或修改受限资源,例如管理员设置或用户数据。
2.绕过身份验证机制:
如果 API 端点缺乏适当的授权检查,CSPT 可以允许未经授权的用户访问特权信息。
3.执行未经授权的操作(状态更改请求):
如果状态改变操作(例如 DELETE、PATCH、PUT)被暴露,CSPT 可以修改用户帐户、删除资源或更改安全设置。
利用 CSPT:一个实际的例子
考虑一个 Web 应用程序,用户可以使用以下方式检索他们的个人资料信息:
获取 /api/v1/user/profile? id =1234
如果应用程序根据 id 参数错误地构建 API 调用,攻击者可能会注入:
获取 /api/v1/user/profile? id =../../admin/settings
这可能导致前端发送请求至:
获取 /api/v1/admin/settings
这可能会暴露敏感的配置细节。此外,如果攻击者将此攻击与社会工程技术相结合,他们可以诱骗经过身份验证的用户在不知情的情况下执行此恶意请求。
现实世界的 CSPT 示例
CSPT 已被证实具有多种主要应用,包括:
- Facebook 漏洞赏金报告(作者:未知)—— CSPT 漏洞允许攻击者访问非预期的 API 端点。
- GitLab 1-Click CSRF(Johan Carlsson)——CSPT 用于执行未经授权的状态更改请求。
- Mattermost 和 Rocket.Chat——安全研究人员发现了可用于 API 操纵的 CSPT 漏洞。
CSPT的影响
CSPT 会带来严重风险,尤其是在导致权限提升或未经授权的操作时。由于应用程序越来越依赖客户端 API 调用,无需直接与服务器端逻辑交互即可操纵请求路径的能力,使得 CSPT 成为攻击者极具吸引力的目标。此外,由于缺乏对 CSPT 的广泛讨论和研究,CSPT 也成为许多安全评估的盲点。
原文始发于微信公众号(红云谈安全):客户端路径遍历(CSPT)——深入探究被忽视的漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论