网安入门14-文件包含(file:// )

什么是文件包含漏洞——来自ChatGPT4

文件包含漏洞是指应用程序在加载文件时,允许用户控制被加载文件的名称,从而导致恶意代码的执行或敏感信息的泄露。文件包含漏洞主要分为两种:

  1. 本地文件包含漏洞(LFI) :攻击者可以包含服务器本地的任意文件,包括系统文件、配置文件、数据库文件等。
  2. 远程文件包含漏洞(RFI):攻击者可以包含远程服务器上的任意文件,包括其他网站的文件、恶意网站的文件等。

文件包含漏洞的危害性很大,攻击者可以利用该漏洞来执行以下操作:

  • 执行任意代码:攻击者可以通过包含恶意的 PHP 脚本或其他可执行文件来执行任意代码,从而控制服务器。
  • 窃取敏感信息:攻击者可以通过包含包含敏感信息的文件来窃取用户的密码、信用卡信息等敏感信息。
  • 植入后门:攻击者可以通过包含包含后门的文件来植入后门,从而方便日后进行攻击。

以下是一些防范文件包含漏洞的措施:

  • 在开发应用程序时,应使用白名单的方式来控制用户输入的文件名称,仅允许包含白名单中指定的文件。
  • 在开发应用程序时,应对用户输入的文件名称进行严格的过滤,确保文件名称不包含任何特殊字符,例如 ../ 等。
  • 关闭不必要的功能,例如远程文件包含功能。

为了防范文件包含漏洞,开发人员应在开发应用程序时严格控制用户输入,对用户输入的文件名称进行严格的过滤,确保只有合法的文件才能被包含。

我的理解

程序员在开发过程中为了方便,在1.php页面中直接使用2.php的内容,形成文件包含,包含后可以直接使用被包含的代码,避免重复造轮子,就造成了漏洞

前提条件介绍

在这里插入图片描述

PHP语言所提供的文件包含功能太强大、太灵活,所以大部分的文件包含的漏洞都出现在PHP的程序中。

  1. 当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。
  2. 当被包含的文件在远程服务器时,就形成的远程文件包含漏洞。

远程包含需要开启php配置的allow_url_include=on

php配置

php.ini里有两个参数
allow_url fopen:允许url里的封装协议访问文件(默认ON)
allow url include:允许包含url里的封装协议包含文件(默认OFF)

本地文件包含漏洞

<?php      #如果这里$GET['filename']攻击者可控,且未经过过滤那么就会导致漏洞。
$filename =$_GET['filename']; 
include($filename);
?>
函数 说明
include 包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。
include_once 与include 不同处在于 include_once 会检查这个文件是否已经被导入,如已导入便不会再导入,直面 once 理解就是只导入一次。
require 包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。
require_once 和 require 类似,不同处在于 require_once 只导入一次。

被以上函数包含的文件一律按.php后缀解析!
这样就可以直接使用图片马了
实战中,黑盒测试看到?file=参数,直接先尝试/etc/passwd

file://协议

条件
  • allow_url_fopen:off/on
  • allow_url_include:off/on
作用

用于访问本地文件系统

说明

用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。

用法
  1. file://[文件的绝对路径和文件名]:?file=file://D:/xxxx/1.txt
    127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt

  2. file=[文件的相对路径和文件名]:?file=./1.txt
    127.0.0.1/include.php?file=./phpinfo.txt

  3. file=[http://网络路径和文件名]:?file=http://127.0.0.1/1.txt
    127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

相关推荐

  1. 防御保护入门

    2024-01-12 13:16:02       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-12 13:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-12 13:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-12 13:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-12 13:16:02       20 阅读

热门阅读

  1. 127. 单词接龙

    2024-01-12 13:16:02       35 阅读
  2. Jenkins

    Jenkins

    2024-01-12 13:16:02      23 阅读
  3. 基于昇腾910B搭建多节点K8s集群

    2024-01-12 13:16:02       29 阅读
  4. docker搭建镜像仓库并设置账密登录

    2024-01-12 13:16:02       37 阅读
  5. Kotlin-数组

    2024-01-12 13:16:02       37 阅读
  6. Spring Boot实现国际化

    2024-01-12 13:16:02       36 阅读