漏洞概述 标题: Security Advisory: Unauthenticated Path Traversal Allows Arbitrary File Read (TinyWeb) 描述: TinyWeb 在构建文件路径时,直接将请求的 URL 路径与 Web 根目录拼接,没有进行规范化处理。远程攻击者可以通过在请求中插入 序列来读取服务器进程可以打开的任何文件,包括 Web 根目录之外的文件。 影响范围 受影响软件: TinyWeb (https://github.com/GeneralSandman/TinyWeb) 版本: TinyWeb/0.0.8 受影响提交: 0a3a9a (2019-01-09),从 (2023-11-22, 最新 master) 开始 修复版本: 无,该项目没有发布任何版本,该范围内的每个发布修订都受影响 分类 CWE-22: 对路径名到受限目录的限制不当(“路径遍历”) CVSS 4.0 基础评分: 8.7 (高) 向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N 威胁模型 未认证的远程攻击者只要能够到达服务器监听端口(默认为 9090),无需凭证、用户交互或先前访问权限,只需一个请求即可。 技术细节 1. 路径拼接: 方法将配置的 Web 根目录与请求的 URL 路径直接拼接。 2. 缺少规范化: 在拼接路径后,没有进行 规范化,也没有检查结果是否仍在 内部。 3. URL 解析: URL 解析器不过滤 ,因此 可以原样传递到 。 概念验证 (POC) 影响 任何远程客户端都可以读取服务器进程允许打开的任何文件。在默认设置下,工作进程以 root 身份运行,因此可以读取 、TLS 私钥、包含凭据的配置文件以及应用程序自身的源代码。 修复方案 1. 规范化路径: 使用 规范化拼接后的路径,并拒绝不在配置 Web 根目录内的请求。 2. 防御性措施: 在 URL 解析期间移除点-段(如 ),并在规范化之前进行百分号解码。