常见漏洞验证121 条

路径穿越验证

文件名/路径参数拼接进文件操作且未规范化时可读写授权目录之外的文件;验证用无害路径探测与错误差异。

路径穿越是什么

当文件名或路径参数被直接拼接进文件操作、且没有做规范化校验时,可以用相对路径序列跳出授权目录,读取或写入目录之外的文件。验证要用无害路径探测并依靠错误差异判断,全程保持只读——一旦下载到真实敏感文件并留存,就把验证变成了泄密。

基本信息

常见入口下载、导出、预览、模板选择、日志查看
验证方法用相对路径序列尝试读取已知的无害公开文件
判定依据响应内容与错误信息的差异
严格边界只读验证,禁止写入、覆盖与删除
配套要求多级编码变体用于确认过滤强度

典型使用场景

  • 附件下载与在线预览接口的文件名参数
  • 报表导出选择模板文件的接口
  • 日志查看与运维诊断接口的路径参数
  • 头像与图片裁剪服务的文件路径参数
  • 多语言与主题包选择中的文件标识参数

验证步骤

验证步骤
# 1. 定位把路径或文件名作为参数的功能入口
# 2. 用多级相对路径尝试读取一个无害的公开说明文件
# 3. 核对返回内容确为该系统的公开文件(只判断类型,不保存内容)
# 4. 尝试一次与二次编码变体,确认过滤强度
# 5. 记录:参数名、返回值特征、状态码差异(不记录文件内容)

编码变体读法

变体类型作用结果含义
原始相对路径基础探测直接命中说明完全未过滤
一次编码绕过简单字符匹配命中说明只做了字符串级过滤
二次编码绕过只解码一次的场景命中说明解码链路上存在缺口
路径变体写法混淆路径分隔与截断命中说明规范化不完整
修复视角:拼接后做绝对路径规范化并校验前缀,或把文件名映射到固定存储路径,不接受外部传入路径。
验证中如果意外取到真实敏感文件,立即停止、不上传不外传,并书面报告客户。

易错点

  • 下载到真实敏感文件并留存,验证行为变成泄密事件
  • 忽略一次与二次编码变体,导致过滤强度判断失误
  • 把系统正常返回的错误页信息当作路径穿越证据
  • 为验证写入能力尝试上传或覆盖文件,造成业务数据损坏

数据来源与参考

  • OWASP WSTG WSTG-ATHZ-01
  • CWE-22(Path Traversal)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌