Skip to content

如何检测与利用文件路径穿越(Directory Traversal)漏洞

解决 Web 应用在处理文件读取请求时缺乏输入验证的问题,通过构造 ../ 序列跳出预设目录,读取服务器任意敏感文件或将其升级为远程代码执行(RCE)。

为什么需要这个技能

在许多 Web 应用中,开发者允许用户通过参数(如 ?file=report.pdf)来加载文件。如果程序直接将用户输入拼接进文件系统 API 而未进行严格过滤,攻击者就可以利用 ../(返回上级目录)来访问系统根目录下的敏感文件。

这种漏洞可能导致严重的机密泄露(如 /etc/passwd 或数据库配置文件),在特定条件下,还可以通过日志投毒或 PHP 伪协议将其转化为最高级别的远程代码执行漏洞。

适用场景

  • 安全审计与渗透测试:在获得授权的情况下,对 Web 应用的接口进行鲁棒性测试。
  • 代码安全评审:识别代码中直接拼接路径且未经过 basename() 或路径规范化处理的危险点。
  • 防御验证:验证 WAF 或输入过滤机制是否能有效拦截双重编码、Unicode 编码等绕过技巧。

核心工作流

1. 识别潜在注入点

寻找处理文件操作的参数,常见关键词包括:?file=, ?path=, ?page=, ?template=, ?download= 等。

2. 基础路径探测

尝试使用标准穿越序列读取已知系统文件:

  • Linux: ../../../etc/passwd
  • Windows: ..\..\..\windows\win.ini

3. 绕过过滤机制

如果基础 Payload 被拦截,尝试以下高级技巧:

  • 双重编码:将 ../ 编码为 %252e%252e%252f
  • 嵌套序列:使用 ....//....//etc/passwd 绕过单次字符串替换。
  • 截断与空字节:在旧版 PHP 中使用 %00 截断后缀验证。

4. 敏感文件挖掘

根据目标 OS 提取高价值目标:

  • Linux: /etc/shadow(需权限)、/root/.ssh/id_rsa/var/log/apache2/access.log
  • Windows: C:\boot.iniC:\inetpub\wwwroot\web.config

5. 权限提升(LFI RCE)

尝试将文件读取转化为代码执行:

  • 日志投毒:向 User-Agent 发送 PHP 代码,再通过路径穿越读取 access.log。
  • PHP 伪协议:使用 php://filter 读取源码 Base64 编码,或使用 data:// 执行内联代码。

下载和安装

下载 file-path-traversal 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐