当前位置: 首页 > article >正文

文件包含与下载漏洞

一、漏洞概述

1. 定义  

  • 文件包含:通过动态变量加载外部文件作为代码执行,常见于PHP的`include()``require()`等函数。  
  • 文件下载:通过程序接口直接获取服务器文件内容,若未校验文件路径,可导致敏感文件泄露。

2. 危害  

  • 代码执行:恶意文件被包含后直接运行(如WebShell)。  
  • 敏感信息泄露:配置文件、数据库凭证等被下载。

二、文件包含分类

 1. 本地包含

无限制包含  

  • 直接指定本地文件路径,无任何过滤  
 #案例:  

    php

    // upload.php

    $filename = $_GET'file';

    include($filename);
  • 访问:http://example.com/upload.php?file=1.txt(1.txt含PHP代码) 

有限制包含  

  • 通过黑名单/白名单过滤文件名,需绕过机制。  
  • 绕过方式:  
  •        00截断:利用`%00`截断文件名(需`magic_quotes_gpc`关闭)。  
http

      http://example.com/upload2.php?filename=1.txt%00
  • 路径长度截断:利用Windows(255字符)或Linux(4096字符)路径限制。  
  • 文件名混淆:添加多余后缀(如`1.txt.php`)或特殊符号(如`1.txt`)。

2. 远程包含

  • 原理:通过`allow_url_include`配置加载远程文件,危害性更高。  
  • 绕过方式:  
  •       文件名伪装:强制服务器解析非预期后缀(如`1.txt.html`改为`1.txt`)。  
  •       协议绕过:使用`data://``php://`等伪协议传输恶意内容。

三、常见脚本协议

PHP支持多种伪协议,用于灵活读取/执行数据
 协议功能示例 
file://直接访问本地文件系统file:///etc/passwd
php://filter读取并过滤文件内容(如Base64编码)

php://filter/read=convert.base64encode/

resource=upload.phpurce=upload.php

php://input读取POST请求原始数据,可执行POST中的PHP代码php://inputPOST_DATA=<?php phpinfo();?>
zip://读取ZIP压缩包内文件zip://file.zip%23shell.php
data://内联数据流,支持Base64编码data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
案例
  • 读取源码:  
http

  http://example.com/?file=php://filter/read=convert.base64-encode/resource=config.php
  • 执行POST代码:  
  http

  http://example.com/?file=php://input
  • POST数据:<?php system('whoami'); ?> 

四、防御策略

1. 输入验证  
  • 白名单过滤文件路径(如仅允许`/uploads/*.jpg`)。  
  • 禁用危险函数(如`eval()``system()`)。
2. 配置调整  
  • 禁用远程文件包含:`allow_url_include = Off`。  
  • 限制文件包含路径:`open_basedir`指定允许目录。
3. 文件处理安全  
  • 上传后重命名文件,避免保留原始扩展名。  
  • 对包含文件进行内容校验(如检测PHP标签)。

五、文件下载漏洞

  • 原理:未校验文件路径或后缀,允许下载任意文件。  
案例  
  1. Pikachu靶场:  
 http

     http://pikachu.com/download.php?file=../../../../etc/passwd
  2. Java反序列化漏洞:  
  • 下载`WEB-INF/web.xml`等敏感配置文件。

 修复建议  

  • 严格校验下载路径(如禁止`../`跳转)。  
  • 限制可下载文件类型(如仅允许`.pdf``.docx`)。

六、总结

  •          文件包含与下载漏洞的核心在于动态变量可控和路径过滤不足。防御需结合输入验证、配置加固及安全编码实践。实战中需关注协议特性(如`00截断``伪协议`)及绕过技巧。

注:实验环境搭建推荐使用Vulhub或本地靶场(如DVWA、Pikachu),所有操作应在授权范围内进行。


http://www.kler.cn/a/590635.html

相关文章:

  • JavaScript 元编程革命:Proxy 如何重塑语言本质
  • LLM对齐方法作用:主要解决大型语言模型(LLMs)输出与人类价值观、需求和安全规范不一致的问题
  • 【华为OD机考真题】- 用户调度问题(Java)
  • 使用zenodo-upload进行zenodo大文件上传
  • 【力扣】2666. 只允许一次函数调用——认识高阶函数
  • CellOracle|基因扰动研究基因功能|基因调控网络+虚拟干预
  • 大模型推理:LM Studio在Mac上部署Deepseek-R1模型
  • Windows安卓子系统WSA安装面具Root
  • LabVIEW旋转设备状态在线监测系统
  • 域渗透—哈希传递攻击(PTH)学习
  • 攻克 PDF 发票打印难题,提升财务效率
  • 开发者部署工具PasteSpiderV5版本更新杂谈
  • AI幻觉时代:避坑指南与技术反思
  • 基于SpringBoot+Vue的电商应用系统的设计与实现(代码+数据库+LW)
  • 【项目管理git】git学习
  • Spring IOC(五个类注解)
  • Node.js入门指南:初探JavaScript的后端世界
  • LuaJIT 学习(5)—— string.buffer 库
  • Apifox使用总结
  • 力扣Hot100——169. 多数元素