【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. 进一步读取配置、数据库信息、系统文件
相关推荐
EnoYao17 小时前
我写了一个团队体检报告 Skill,把摸鱼的同事扒出来了😅
前端·javascript
梁正雄17 小时前
Python前端-2-css练习
前端·css·python
清汤饺子17 小时前
用 Cursor 半年了,效率还是没提升?是因为你没用对这 7 个功能
前端·后端·cursor
蓝莓味的口香糖17 小时前
【vue3】组件的批量全局注册
前端·javascript·vue.js
wefly201717 小时前
开发者效率神器!jsontop.cn一站式工具集,覆盖开发全流程高频需求
前端·后端·python·django·flask·前端开发工具·后端开发工具
独泪了无痕18 小时前
自动导入 AutoImport:告别手动引入依赖,优化Vue3开发体验
前端·vue.js·typescript
GDAL18 小时前
MANIFEST.in简介
linux·服务器·前端·python
XPoet19 小时前
AI 编程工程化:Command——给你的 AI 员工编一套操作手册
前端·后端·ai编程
C_心欲无痕19 小时前
前端实现文件下载的完整流程
前端·状态模式
Fighting_p19 小时前
【element UI】el-select 组件下拉数据某一行文字过多时,文字换行展示,避免el-select下拉框被撑宽,导致页面过丑
前端·javascript