目录穿越漏洞原理

高分请教下,目录穿越漏洞原理
最新回答
山水闲人

2026-10-18 10:53:34

目录穿越漏洞(Directory Traversal)的原理是Web应用程序未对用户输入的文件路径参数进行充分验证,导致攻击者通过构造特殊路径突破服务器根目录限制,访问或操作敏感文件及目录。

1. 漏洞触发条件

Web应用程序通过动态参数(如filename)定位服务器资源时,若未对参数值进行严格校验,攻击者可利用路径操作符(如../)或编码形式修改实际访问路径。例如,正常请求为

http://example.com/loadFile?filename=report.pdf
,若参数未过滤,攻击者可替换为../../etc/passwd,通过逐级返回上级目录访问系统关键文件。

2. 核心攻击机制
  • 目录跳转:攻击者利用操作系统路径解析规则,通过../(Unix/Linux)或..(Windows)返回上级目录。例如,若Web应用预期访问/var/www/files/report.pdf,但参数被篡改为../../../etc/passwd,则可能跳转到系统根目录下的/etc/passwd文件。
  • 绝对路径绕过:直接输入绝对路径(如/etc/passwd)可能绕过部分过滤逻辑,尤其在未限制路径起始字符的情况下。
  • 编码混淆:攻击者可能对路径符号进行URL编码(如%2e%2e%2f)、双重编码(如%252e%252e%252f)或Unicode编码(如..%c0%af),以绕过简单的字符串匹配过滤。
3. 系统访问控制失效

即使操作系统通过文件权限或锁定机制限制访问,Web应用程序的路径解析漏洞仍可能绕过此类控制。例如,某图片查看服务若未限制路径跳转,攻击者通过

http://example.com/viewImage?file=../../../../etc/passwd
请求,可能直接返回系统用户列表,导致敏感信息泄露。

4. 典型影响
  • 信息泄露:访问系统配置文件(如/etc/passwd、Windows注册表文件)获取用户凭证或系统信息。
  • 代码执行:结合文件上传漏洞,可能覆盖关键文件(如Web脚本)实现远程代码执行。
  • 拒绝服务:通过访问大文件或无限递归路径消耗服务器资源。
5. 防御措施
  • 输入验证:严格限制路径参数的字符集(如仅允许字母、数字、下划线),禁止../、..等目录跳转符号。
  • 规范化处理:将用户输入的路径转换为绝对路径,并与预设的安全目录进行比对,确保不超出允许范围。
  • 编码过滤:检测并解码URL编码、双重编码等混淆形式,防止绕过。
  • 最小权限原则:Web应用应以低权限用户运行,限制对系统关键目录的访问。