【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中出现即重点测试)
  • 下载: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()

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


六、实战测试思路

  1. 找到文件下载/读取/删除/目录功能
  2. 抓包修改文件名/路径参数
  3. 尝试:
    • 绝对路径 /etc/passwd
    • 穿越路径 ../../../../etc/passwd
  4. 观察是否返回内容、是否删除成功、是否列出目录
  5. 进一步读取配置、数据库信息、系统文件
相关推荐
Eiceblue4 小时前
使用 Python 实现 Excel 行列转置(保留单元格样式)
前端·python·excel
西西学代码4 小时前
像素和颜色之间的转换(Flutter)
前端·javascript·flutter
茶底世界之下4 小时前
羽毛颜色已经很鲜艳,还要继续加色吗?用 Awaking 试一次减饱和
前端·ios·运营
风早爽太4 小时前
Mac 搭建 Vue 开发环境
前端·vue.js
Lank_M4 小时前
Word图片裁剪转HTML失效,转换器各漏读了哪一层
前端
青烟小生4 小时前
前端架构设计实战:从组件思维到系统思维
前端
Amos_Web5 小时前
Rspack 源码解析(二十):Typed Hook 系统如何靠宏生成
前端·rust·前端框架
程序员大阳5 小时前
副队长CSS教程(29)–CSS Grid 实战:实现通用图文混排布局
前端·css·grid·图文混排
对空六课5 小时前
无头浏览器访问对跳出率的过滤规则
服务器·前端·算法·数据分析
小番茄夫斯基5 小时前
Nginx 介绍
前端