路径遍历(Path Traversal)是Web渗透中最经典、最高频的文件读取漏洞。漏洞本质是攻击者利用可控参数,诱导服务器读取本地任意文件。本文从黑盒实战角度,完整梳理从参数探测、漏洞确认、绕过防御到高价值文件提取的标准化挖掘流程,适合渗透测试人员日常漏洞挖掘与复盘。

阶段一:目标侦察与漏洞端点定位

路径遍历漏洞只出现在具备文件读取、下载、加载、包含功能的接口中。黑盒测试的第一步,就是精准筛选高危参数与请求位置。

1. 高危参数筛选(Burp 历史记录过滤)

在流量记录中重点观察包含文件、路径、加载功能的参数:

文件类:filefilenamedocimagepdf

路径类:pathfolderdirroot

功能类:loadreadimportdownloadtemplate

2. 容易被忽略的隐蔽注入点

不只是普通GET参数,所有可控内容都可能存在漏洞:

REST 路由路径:接口路径末尾的文件名可被替换为遍历Payload。

POST 请求体:JSON、表单中的文件名字段。

HTTP 请求头:Cookie、UA、Referer 若被后台用于日志写入或文件读取,同样可以触发漏洞。

阶段二:建立访问基线,确认文件调用逻辑

在漏洞测试前,必须先明确服务器正常响应和异常响应的区别,避免误报、漏报。

1. 正常基线记录

请求合法文件,记录状态码、返回长度、返回类型,作为参照标准。

2. 异常错误诱导

请求一个不存在的文件,观察是否爆出系统级报错。如果出现文件未找到异常、程序报错堆栈,说明当前参数直接参与服务器文件读取逻辑,大概率存在路径遍历风险,同时可能直接泄露网站物理路径。

阶段三:分层Fuzz测试与主流防御绕过方案

确认存在文件调用逻辑后,按照由浅入深的顺序测试,逐层绕过WAF与代码过滤。

1. 基础明文遍历测试

使用多层上级目录跳转符,适配未知网站目录深度,系统会自动识别根目录,不会因为层数过多报错。

Linux:../../../../../../etc/passwd

Windows:../../../../../../windows/win.ini

2. 绝对路径绕过相对路径拦截

若网站拦截 ../,直接使用系统绝对路径读取文件,绕过目录跳转限制。

Payload:/etc/passwdC:/windows/win.ini

3. 单次替换过滤绕过(嵌套绕过)

很多代码只做一次字符替换,清空 ../,不会循环过滤。利用嵌套字符可以重组出新的跳转路径。

Payload:....//....//etc/passwd

4. 编码差异绕过WAF

网关、WAF解码一次、后端代码再解码一次,双重解码会导致特征失效。

单次编码、双重编码、特殊Unicode编码,均可绕过常规字符拦截。

5. 白名单校验绕过

前缀校验绕过:保留合法目录前缀,后面拼接目录跳转逃逸。

后缀校验绕过:利用空字符截断,后端校验后缀合法,实际读取敏感系统文件。

Payload:../../../etc/passwd%00.png

阶段四:漏洞验证与高价值文件提取

漏洞确认不能只看200状态码,需要通过页面特征内容判断,避免误报。

1. 系统文件验证(漏洞确证)

Linux 经典验证文件:/etc/passwd/etc/issue/proc/version

Windows 经典验证文件:win.iniboot.ini

2. 深度利用:读取配置实现提权

漏洞验证成功后,进一步读取网站核心配置文件,获取账号密码、密钥、数据库配置:

Java/Tomcat:读取 web.xmlapplication.properties

PHP 站点:读取 config.phpwp-config.php

Node 站点:读取 .env 环境配置

服务器高危文件:历史命令记录、SSH私钥,可直接实现服务器横向与权限接管。

总结

路径遍历黑盒挖掘的核心逻辑:找文件功能接口 → 确认文件调用逻辑 → 分层绕过过滤 → 读取系统与配置文件。多数防御仅做简单字符过滤,绕过成本极低。在实战渗透中,该漏洞往往是拿下服务器权限、获取核心凭据的关键入口。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐