【Web攻防】文件与目录安全漏洞详解:下载/删除/遍历/穿越实操指南

本文内容仅用于授权安全测试与学习,严禁未经许可对目标系统进行测试。

一、核心功能点与漏洞本质

前后台常见高危功能:

  • 文件下载、文件读取
  • 文件删除
  • 目录遍历
  • 目录穿越

这类漏洞本质:用户可控路径 + 服务端校验缺失/不严 = 越权读写删文件


二、文件安全:下载 & 删除 实操原理

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中出现即重点测试)
  • 下载:downloaddownfilereadfileread
  • 删除:deldeleteremove
  • 目录:dirpathfolder
  • 其他:srclangdataurlrealpath
高危参数名
复制代码
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:FileInputStreamFilegetPath()

只要用户输入直接拼接到路径,无白名单、无过滤、无路径限制,即为漏洞。


六、实战测试思路

  1. 找到文件下载/读取/删除/目录功能
  2. 抓包修改文件名/路径参数
  3. 尝试:
    • 绝对路径 /etc/passwd
    • 穿越路径 ../../../../etc/passwd
  4. 观察是否返回内容、是否删除成功、是否列出目录
  5. 进一步读取配置、数据库信息、系统文件
相关推荐
行星飞行3 分钟前
从 cursor 、 Claude code 迁移到 codex,30 分钟快速上手 codex 常用技巧
前端
Pu_Nine_913 分钟前
前端埋点从入门到企业实践:手写一个Demo + 主流方案对比
前端·埋点
ZC跨境爬虫20 分钟前
跟着 MDN 学 HTML day_56:(HTML 表格基础完全指南)
前端·javascript·ui·html·音视频
Dxy123931021626 分钟前
CSS滤镜使用方法完全指南
前端·css
AC赳赳老秦37 分钟前
OpenClaw与WPS宏联动:批量执行WPS复杂操作,解决办公表格批量处理难题
java·前端·数据库·自动化·需求分析·deepseek·openclaw
Larcher1 小时前
# 告别“古法编程”:吴恩达 AI 课程学习笔记与生日贺卡项目实战
前端·github·ai编程
用户852495071841 小时前
# 大二前端新人的AI初体验:跟着吴恩达学“Vibe Coding”,我如何用提示词“指挥”AI写代码?
前端
bupt_011 小时前
Hermes深入理解及源码解析(二):Hermes的记忆机制
java·服务器·前端
飘尘1 小时前
WebAssembly 是什么?它为什么重要?
前端·javascript
情绪总是阴雨天~1 小时前
大模型 Function Call(函数调用)详解:原理、实践与数据库智能查询 Agent
前端·数据库·人工智能