本文内容仅用于授权安全测试与学习,严禁未经许可对目标系统进行测试。
一、核心功能点与漏洞本质
前后台常见高危功能:
- 文件下载、文件读取
- 文件删除
- 目录遍历
- 目录穿越
这类漏洞本质:用户可控路径 + 服务端校验缺失/不严 = 越权读写删文件。
二、文件安全:下载 & 删除 实操原理
1. 文件下载漏洞
原理
文件下载 = 服务端读取文件并返回。
当下载功能通过参数指定文件名/路径,且未做白名单/路径限制时,可直接读取任意敏感文件。
常规安全URL(无直接风险)
http://xxx.com/upload/123.pdf
风险URL(可控参数)
http://xxx.com/down.php?file=123.pdf
典型利用
修改 file 参数读取系统/配置文件:
?file=/etc/passwd
?file=../../etc/my.cnf
?file=../../config/config.php
可直接拿到:数据库账号密码、密钥、源码配置、系统信息。
2. 文件删除漏洞
原理
删除功能未校验:
- 权限
- 文件名/路径合法性
- 操作范围
攻击者可构造路径删除任意文件,导致服务崩溃、程序异常、数据丢失。
常见触发点
后台文件管理、附件删除、图片删除、日志清理等。
典型利用
del.php?filename=1.jpg
→ 改:
del.php?filename=../../config.inc.php
del.php?filename=../../index.php
可直接删配置、删入口、删库备份,造成业务瘫痪。
三、目录安全:遍历 & 穿越 实操原理
1. 目录遍历漏洞
原理
服务端允许列出目录内容,且未限制目录范围。
攻击者可直接获取目录结构、文件名、备份、日志、上传文件清单等信息。
利用价值
- 发现备份文件
*.sql、*.zip - 发现上传目录、后台路径、配置文件
- 为文件读取/删除/上传做信息铺垫
2. 目录穿越漏洞(路径穿越)
原理
通过 ../、..\、%2e%2e/ 等字符,跳出程序设定的业务目录,访问上级乃至根目录。
核心利用字符
../
../../
../../../../
典型场景
后台文件管理、模板读取、头像查看、文件预览等功能。
利用示例
path=upload/
→ 穿越:
path=upload/../../etc/
实现跨目录读取、跨目录删除、跨目录写入文件。
四、黑盒实战:快速定位漏洞
1. 重点功能点
- 文件上传/下载/预览
- 文件删除/编辑
- 后台文件管理器
- 图片/附件/模板加载
2. URL 特征识别
敏感关键词(URL中出现即重点测试)
- 下载:
download、down、file、readfile、read - 删除:
del、delete、remove - 目录:
dir、path、folder - 其他:
src、lang、data、url、realpath
高危参数名
file
path
filepath
realpath
data
url
只要参数可控,优先测试:
- 绝对路径
/etc/passwd - 相对穿越
../../etc/passwd
五、白盒审计:直接锁死漏洞代码
审计时直接搜索以下函数,几乎必出文件/目录漏洞。
PHP 高危函数(最常见)
- 文件读取/下载:
file_get_contents()readfile()fopen()
- 文件删除:
unlink()
- 目录遍历:
opendir()readdir()
- 文件上传:
move_uploaded_file()
其他语言通用逻辑
- Python:
send_file()、open() - Java:
FileInputStream、File、getPath()
只要用户输入直接拼接到路径,无白名单、无过滤、无路径限制,即为漏洞。
六、实战测试思路
- 找到文件下载/读取/删除/目录功能
- 抓包修改文件名/路径参数
- 尝试:
- 绝对路径
/etc/passwd - 穿越路径
../../../../etc/passwd
- 绝对路径
- 观察是否返回内容、是否删除成功、是否列出目录
- 进一步读取配置、数据库信息、系统文件