【文件包含漏洞】——文件包含漏洞防御

article/2025/8/5 13:50:03

文章目录

    • 一、实验目的:
    • 二、实验环境:
    • 三、防御说明:
    • 四、防御措施:
      • 1. 设置白名单:
      • 2. 过滤危险字符:
      • 3. 设置文件目录(配置php.ini):
      • 4. 关闭危险配置(配置php.ini):
    • 五、防御总结:

一、实验目的:

1、通过本次学习,掌握文件包含的过滤验证方式。
2、学习在修复文件包含漏洞的方法。

二、实验环境:

靶 机: windows10虚拟机:192.168.100.150
      phpstudy2018_Apache集成环境

三、防御说明:

文件包含漏洞防御:
  在PHP开发中文件包含漏洞常出现在Incbude/Require系列语言结构上,由于需要包含的文件是可以被用户设置的,从而导致包含任意文件及代码执行。通常在开发中需要设置白名单过滤危险字符设置文件目录关闭危险配置等操作来避免漏洞的发生。

四、防御措施:

1. 设置白名单:

代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

验证源码示例:

<?php
$file_list=[                       //声明一个变量,用于存放白名单;'framework/init.php','framework/route.php','framework/event.php',
];
$file= $_REQUEST['file'];          //声明一个变量,用于接收传递过来的文件信息;
if (in_array($file, $file_list)){  //把传递过来的文件信息和白名单里面的文件进行对比;include "$file";                 //如果传递过来的文件是白名单里面的文件,就对它进行文件包含;
}
?>

2. 过滤危险字符:

  由于Incbude/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini), 在Linux环境中可以通过"../../"的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

验证源码示例:

$pattern= "#^[a-z][a-z0-9+.]*:?//#i";
if(substr($filename,-4)=='.php' && strpos($filename,"..")===false&&!preg_match($pattern, $filename)){
include "$file";
}

3. 设置文件目录(配置php.ini):

  PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

4. 关闭危险配置(配置php.ini):

  PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的

五、防御总结:

  任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范; 在代码核心处,对变量进行过滤限制, 设置文件路径或者白名单,避免执行任意文件包含。
  最后,总结一下任意文件包含漏洞的防御方式。任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范:在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。


http://chatgpt.dhexx.cn/article/4u4heXf0.shtml

相关文章

文件包含漏洞-日志注入

文件目录 文件包含漏洞文件包含概述文件包含类型 文件包含-日志注入日志注入概述环境准备配置环境模拟网站环境 日志注入流程 文件包含漏洞 文件包含概述 文件包含漏洞是 Web 应用程序中的一种常见漏洞。当应用程序允许用户控制包含在页面上的文件时&#xff0c;攻击者就可以利…

【异常】BOOT-INF/lib/目录下文件被扫出有漏洞,应该怎么修复?

一、背景说明 客户使用的是阿里云的云服务&#xff0c;阿里云上面的渗透测试扫描会定期对运行在上面的云服务进行漏洞检查&#xff0c;因此没有几轮的漏扫是不会放过你了额。 这次收到了如下的内容 ContainerName:commonprovider, ImageName:commonprovider:V0.2.12_Server_…

自动化批量挖漏洞(edu)

自动化批量挖漏洞 原理是将目标资产让爬虫工具爬取&#xff0c;把数据通过burp发送给xray进行漏洞扫描。 本文使用到的工具 Fofa采集工具&#xff0c;文章用edu举例&#xff0c;大家可以根据自己的目标进行选择。Rad&#xff0c;浏览器爬取工具&#xff0c;github地址: http…

文件包含漏洞总结及工具分享

PHP文件包含漏洞检测利用总结及神器字典工具分享 漏洞原理 像PHP、JSP、ASP、.NET等脚本语言&#xff0c;都提供了一种包含文件的功能&#xff0c;通过这种方式可以达到复用代码的目的。如果包含的文件路径可控&#xff0c;那么就可能存在文件包含漏洞&#xff0c;攻击者可通…

漏洞修复-- Linux kernel 资源管理错误漏洞(CVE-2022-32250)

1. 漏洞描述: Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 5.18.1版本及之前版本存在安全漏洞&#xff0c;该漏洞源于net/netfilter/nf_tables_api.c允许本地用户将权限升级为root用户&#xff0c;攻击者利用该漏洞可导致释放后重用。 2. …

【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

文件包含漏洞的利用 读取敏感文件 我们可以利用文件包含漏洞读取任意文件&#xff0c;读取文件的时候有利用条件 目标主机文件存在(目标文件的路径、绝对路径、相对路径) 具有文件可读权限 提交参数http://localhost/include/include.php?pathC:\windows\system32\drivers\etc…

渗透测试-文件包含漏洞

文件包含漏洞 文章目录 文件包含漏洞前言一、什么是文件包含漏洞二、文件包含漏洞获取shell1.文件包含漏洞的分类2.利用漏洞获取shell 总结 前言 一、什么是文件包含漏洞 服务器通过php的特性&#xff08;函数&#xff09;去包含任意文件时&#xff0c;由于要包含的这个文件来…

Fvuln-自动化web漏洞检测工具

F-vuln介绍: F-vuln&#xff08;全称&#xff1a;Find-Vulnerability&#xff09;是为了自己工作方便专门编写的一款自动化工具&#xff0c;主要适用于日常安全服务、渗透测试人员和RedTeam红队人员&#xff0c;它集合的功能包括&#xff1a;存活IP探测、开放端口探测、web服务…

Log4j2 漏洞检测工具清单

距离Log4j2漏洞公开已经过去一个月了,它所造成的严重影响已经不需要我们重复提及了。随着时间的推移,新的漏洞会不断出现,旧的漏洞会不断消失,而这个Log4j2中的RCE漏洞可能需要好几年的时间才能得到解决。所以,在接下来的一段时间里,这个漏洞依然是我们需要去关注的重点。…

文件包含漏洞——配合日志文件

此实验中用的是phpstudy2018 靶机IP地址&#xff1a;192.168.212.131 一、前提条件 phpstudy中日志功能默认关闭&#xff0c;得手动修改配置文件开启apache日志功能 重启phpstudy&#xff0c;访问日志文件存在 二、文件包含漏洞测试 第一步&#xff1a;输入<?php php…

【文件包含漏洞】

目录 一、前言 二、文件包含漏洞原理 三、利用条件 四、文件包含漏洞利用 实验一&#xff1a;本地包含和远程包含 实验二&#xff1a;利用文件包含漏洞读取Windows系统敏感信息 实验三&#xff1a;本地包含配合文件上传木马图片 实验四&#xff1a;包含apache日志文…

开源组件漏洞检查工具实践分析

文章目录 Murphysec开源组件漏洞检查工具介绍检测原理JetBrains IDE插件MurphySec Code Scan工具使用介绍支持功能插件安装插件配置一键扫描一键修复功能实践测试命令行工具CLI MurphySec功能特性整理MurphySec Code Scan工具集成JenkinsGitLab 代码库检测工具每周报告推送情报…

文件包含漏洞

【文件包含】文件包含漏洞知识总结 一、什么是文件包含漏洞&#xff1f; 1、文件包含概述 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种“注入型漏洞”&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务器端执行。 什么叫包含呢…

Vector关于Apache Log4Shell CVE-2021-45105,CVE-2021-45046,CVE-2021-44228 的安全漏洞配合与修复全面详解

Apache Log4j2 是一个基于 Java 的日志记录开源组件。近日&#xff0c;Log4j2 被爆出现安全漏洞&#xff0c;攻击者可以通过向易受攻击的服务器或应用程序发送操纵请求来利用安全漏洞。Vector 德国PREEvison产品团队已经通过官网和客户管理系统及时通知客户&#xff0c;有关PRE…

Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

摘要&#xff1a;二进制SCA工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率&#xff0c;必须向更细颗粒度的检测维度发展&#xff0c;而不仅仅停留在开源软件的层面&#xff0c;同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。 本文分享自华为云社区…

kali linux渗透测试之漏洞扫描

主题内容就是进行漏洞扫描 文章目录 前言一、Nikto1.Nikto漏洞扫描介绍2.Nikto使用 二、Nessus1.Nessus介绍2.安装nessus3.nessus的简单使用3.nessus扫描之advanced scan 三、 skipfish扫描工具1.介绍2.skipfish的使用3.批量处理4.使用字典5.命令选项6.打开文件 四、 AWVS漏洞扫…

【CVE-2022-0185】Linux kernel [文件系统挂载API] 堆溢出漏洞分析与利用

0x00.一切开始之前 CVE-2022-0185 是 2022 年初爆出来的一个位于 filesystem context 系统中的 fsconfig 系统调用中的一个堆溢出漏洞&#xff0c;对于有着 CAP_SYS_ADMIN 权限&#xff08;或是开启了 unprivileged namespace&#xff09;的攻击者而言其可以利用该漏洞完成本地…

Spring 新版本修复远程命令执行漏洞(CVE-2022-22965),墨菲安全开源工具可应急排查

漏洞简述 3月31日&#xff0c;spring 官方通报了 Spring 相关框架存在远程代码执行漏洞&#xff0c;并在 5.3.18 和 5.2.20.RELEASE 中修复了该漏洞。 漏洞评级&#xff1a;严重 影响组件&#xff1a;org.springframework:spring-beans 影响版本&#xff1a;< 5.3.18 和…

❤️❤️爆肝3万字整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)❤️❤️

小白快速快入门Git 什么是GitSVN VS Git什么是版本控制安装Git谁在操作&#xff1f;Git本地仓库本地仓库构造重点 Git常用基本操作git addgit commitgit diffgit loggit resetgit mvcheckoutgit tagclear Github使用教程什么是Github安装Github添加远程仓库找到key打开Github官…

代码版本管理软件评比

转载的&#xff0c;回头在翻译一下 If you spend time talking to software developers about tools, one of the biggest topics I hear about are version control tools. Once youve got to the point of using version control tools, and any competent developers does,…