文件包含漏洞及防御

news2024/9/22 5:38:22

一,什么是文件包含漏洞

文件包含包括:

  • 内容包含
  • 函数包含

优点:减少代码量;易于维护;

出现的问题:

可能会导致允许访问敏感文件或者执行恶意代 码,造成漏洞;这就被称为文件包含漏洞;

文件包含漏洞是一种常见的Web应用程序漏洞,允许恶意用户通过在URL或表单字段中注入恶意代码来访问和执行服务器上的文件。这种漏洞通常出现在PHP等动态网页语言中,当应用程序使用用户提供的输入直接包含文件时容易发生。

攻击者利用文件包含漏洞可以执行各种恶意操作,比如读取敏感文件、执行系统命令、获取数据库信息等。为了防止文件包含漏洞,开发人员应该避免直接包含用户输入的文件路径,应该对用户输入进行严格的过滤和验证,或者使用白名单来限制可包含的文件。此外,及时更新软件补丁和安全配置也是防范文件包含漏洞的重要措施。

主要分类:

1,本地文件包含(Local file Inclusion)

  • 固定文件名;
  • 通过接口动态包含;
  • 包含恶意代码或者图片马;
  • 包含系统的敏感文件;

2,远程文件包含(Remote file inclusion)

  • 使用远程文件包含来包含本地的一句话木马;

PHP的相关函数;

include()   //用来包含并且运行指定的文件
include_once()   //只包含一次,不重复包含
require()   //同includ(),出错时会停止
require_once()  //只包含一次
fopen()   //打开文件或者url
readfile()   //读取并且输出
highlight_file()   //用语法高亮文件
show_source()   //同highlight_file()
file_get_contents()   //把整个文件读入一个字符串
file()   //把整个文件读入一个数组

PHP的相关伪协议;

在PHP中,伪协议是一种特殊的URL格式,用于访问各种资源而不是普通的HTTP或FTP。以下是一些PHP中常用的伪协议:

  • file://: 用于访问本地文件系统中的文件,例如`file:///path/to/file.txt`。
  • http:// 或 https://: 用于通过HTTP或HTTPS协议访问Web资源,例如`http://example.com`。
  • ftp://: 用于通过FTP协议访问文件,例如`ftp://example.com/file.txt`。
  • php://: 用于访问各种输入/输出流,例如`php://stdin`、`php://stdout`、`php://stderr`等。
  • data://: 用于将数据嵌入到URL中,例如`data:text/plain;base64,SGVsbG8gV29ybGQ=`。

二,DVWA靶场

1,使用medium级别;

首先查看源码:

<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );

?>

可以看出对http://,https://等远程文件包含进行过滤;

对../等本地文件包含也进行了过滤;

所以我们试着采用双写绕过(如下payload):

http://localhost/dvwa/vulnerabilities/fi/?page=..././..././..././phpinfo.php

远程文件包含也可以使用双写绕过;

2,使用high级别;

首先来看源码:

<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}

?> 

使用伪协议(file://);

设置payload:

http://localhost/dvwa/vulnerabilities/fi/?page=file:///"想要访问的文件路径"

三,文件包含的挖掘

可能出现文件包含:

  • 1,url的内容中出现了如file,filename之类的或者include之类的;
  • 2,url中出现xxx.php之类的;
  • 3,对开源的cms(内容管理系统)进行代码审计;

对于文件包含漏洞的利用:

发现漏洞;

上传shell/读取敏感文件;

执行恶意代码;

四,文件包含漏洞的防御

文件包含漏洞是一种常见的Web应用程序漏洞,攻击者可以利用该漏洞来读取系统文件或执行恶意代码。为了防御文件包含漏洞,可以采取以下几种措施:

1. 输入验证:对用户输入的文件路径进行验证,确保用户无法输入恶意文件路径。可以使用白名单机制,只允许访问特定目录下的文件。

2. 输出编码:对输出到页面的文件路径进行编码,以防止攻击者利用路径遍历漏洞读取系统文件。

3. 文件权限设置:确保Web服务器进程没有读取系统敏感文件的权限,避免攻击者通过文件包含漏洞读取系统文件。

4. 使用安全函数:在代码中使用安全的文件包含函数,如include_once()或require_once(),避免使用可变变量作为文件包含的路径。

5. 更新和监控:及时更新Web应用程序和相关组件,以修复已知的文件包含漏洞,并监控系统日志以检测潜在的攻击行为。

6.过滤协议及目录字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OceanBase实践分享:如何用ODC进行历史数据归档,提升性能

作者&#xff1a;洪波&#xff0c;数据库爱好者 最新版 V4.2.2 已上线&#xff0c;其新增的数据生命周期管理功能颇具吸引力。据官方资料显示&#xff0c;ODC现支持将源数据库中的表数据&#xff0c;无论是单次还是周期性地&#xff0c;归档至其它目标数据库。这一设计旨在解决…

R折线图(自备)

目录 折线图基础 创建散点和折线图 复杂折现加图例 折线图柱状图 数据处理 进行差异检验 基础绘图折线 基础绘图箱线 进行合并 双轴柱状与折线图 数据 折线图基础 创建散点和折线图 rm(list ls()) opar <-par(no.readonlyTRUE)##自带orange数据集 par(mfrowc…

【C++】基础:STL容器库

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍STL容器库。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&#x1f95…

【Java程序设计】【C00370】基于(JavaWeb)Springboot的公司进存销管理系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

linux-开发板移植MQTT

将源码复制到共享文件夹 链接&#xff1a;https://pan.baidu.com/s/1kvvO-HhDMDXkQ_wlNtyW_A?pwd332i 提取码&#xff1a;332i 以下步骤教程里都写了&#xff0c;我这里边进行&#xff0c;方便大家对照 pc端 1.进入mqtt_lib, 解压open压缩包 2.按照教程复制这一句并运行&…

稀碎从零算法笔记Day25-LeetCode:数组中的第K个最大元素

题型&#xff1a;排序、堆 链接&#xff1a;215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。&#xff08;降序排列后的第K个元素&#xff0…

蓝桥杯算法 - DP

上一篇&#xff1a;[[蓝桥杯算法-排序、递归、全排列]] 动态规划&#xff08;dp&#xff09; dp即动态规划&#xff0c;常用于&#xff1a;数学&#xff0c;计算机科学&#xff0c;管理学&#xff0c;经济和生物信息学。 dp在生活中也很常见&#xff0c;如&#xff1a;你今天…

vue前端标准

此文档的目的是让前端和产品、服务端开发&#xff0c;相互之间形成一种默契。 比如一些通用设计&#xff0c;不需要产品去说明&#xff0c;我们默认怎么做。 以及&#xff0c;我们开发之间的默契。 期盼大家的补充 开发原则&#xff1a; 感谢各位开发大佬共建原则&#xf…

STM32 ESP8266模块的曲折探索

这是本文的配套资料&#xff0c;最终工程请参考 新_ESP8266资料\stm32f103成功移植的项目 【免费】stm32f103c8t6esp8266资料资源-CSDN文库 一、等到了ready 产品参数 我使用的是ai-thinker的esp8266-01s&#xff0c;以下为产品规格书 引脚定义&#xff1a; 依据引脚定义&…

docker安装redis 6.2.7 并 远程连接

阿里云ecs服务器&#xff0c;docker安装redis 6.2.7 并 远程连接 文章目录 阿里云ecs服务器&#xff0c;docker安装redis 6.2.7 并 远程连接1. 拉取redis镜像2. 查看是否下载成功3. 挂载配置文件4. 下载reids配置文件(redis.conf)5. docker创建redis容器6. 查看redis容器运行状…

JL-34 超声波气象站 可集成多要素 集成度高、颜值高、免安装、免布线

产品概述 超声波气象站是我公司结合多年气象产品开发经验&#xff0c;根据现场实际情况开发的一款多功能自动气象站。该产品集温度、湿度、气压、风速、风向、雨量、大气压力、颗粒物和噪声等要素为一体&#xff0c;该系列产品集成度高、颜值高、免安装、免布线。 功能特点 …

038—pandas 重采样线性插补

前言 在数据处理时&#xff0c;由于采集数据量有限&#xff0c;或者采集数据粒度过小&#xff0c;经常需要对数据重采样。在本例中&#xff0c;我们将实现一个类型超分辨率的操作。 思路&#xff1a; 首先将原始数据长度扩展为 3 倍&#xff0c;可以使用 loc[] 方法对索引扩…

54、Qt/对话框、事件机制相关学习20240325

一、完善对话框&#xff0c;点击登录按钮&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#…

android h5理财(记账)管理系统eclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 android h5理财管理系统是一套完善的WEBandroid设计系统&#xff0c;对理解JSP java&#xff0c;安卓app编程开发语言有帮助&#xff08;系统采用web服务端APP端 综合模式进行设计开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

TCP与UDP:传输层协议对比

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

VMware中添加使用ubuntu

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教。 文章目录 前言一、ubuntu安装二、下载vmwareTool三、解压文件四、解决联网失败五、linux常用命令总结 前言 打破舒适圈 一、ubuntu安装 Vmware安装流程 二、下载vmwareToo…

编程语言|C语言——C语言实现玫瑰花(情人节)

1.说明 在古希腊神话中&#xff0c;玫瑰花集爱与美于一身&#xff0c;既是美神的化身&#xff0c;又溶进了爱神的血液&#xff0c;所以它所代表的含义是爱情。 我们应该用玫瑰花来表达我们的爱意&#xff0c;但是好多的恋人都是因为异地而没有办法去买一束新鲜的玫瑰去送给自己…

Fast-Planner(三)详解后端B-Spline曲线优化

本文上接Fast-Planner的B-spline曲线生成详解&#xff0c;介绍B-spline曲线优化。如有问题&#xff0c;欢迎各位大佬评论指出&#xff0c;带着我一起进步。 三、B样条优化 初始化获得的B样条曲线只是达到了可达性检测&#xff0c;本章介绍为得到更加光滑安全的轨迹&#xff0…

训练自己的分类数据集

文章目录 1.数据集准备2. 数据集划分3.设计模型进行训练1. 随便乱写的网络2. 借鉴优秀的网络模型&#xff08;MobileNetV3&#xff09; 分析&#xff1a;练习&#xff1a; 1.数据集准备 准备你要进行分类的数据集&#xff0c;可以自己拍摄&#xff0c;可以网上进行爬取。 将不…

pdf压缩文件怎么压缩最小?一键压缩PDF

pdf文件压缩是为了减小文件大小&#xff0c;以便更轻松地共享、传输和存储文件&#xff0c;通过压缩pdf文件&#xff0c;可以减少文件占用的存储空间&#xff0c;加快文件的上传和下载速度&#xff0c;并节省带宽和存储成本;在本教程中&#xff0c;我们将介绍一些有效的方法来最…