文件包含漏洞

本文详细介绍了文件包含漏洞的概念、原因,以及本地文件包含(LFI)和远程文件包含(RFI)的区别。特别关注了PHP配置中的allow_url_include和allow_url_fopen对漏洞的影响,以及PHP伪协议的应用实例。
摘要由CSDN通过智能技术生成

文件包含漏洞

什么是文件包含漏洞:

文件包含漏洞的概念:

文件包含漏洞是一种注入型漏洞,本质上是输入一段用户能够控制的脚本或者代码,并让服务端执行。

为什么有文件包含漏洞:

我们在开发时常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

由于网站功能需求,用户可以选择要包含的文件,而开发者没有对包含的文件进行安全考虑,导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

文件包含函数;

include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile

  • include():找不到被包含的文件只会产生警告,脚本继续执行。载入成功,返回1,否则返回false
  • require():找不到被包含的文件会产生致命错误,并停止脚本运行。载入成功为1,失败则不返回。
  • include_once():如果该文件的代码已经被包含则不会再次包含。
  • require_once():如果该文件的代码已经被包含则不会再次包含。
  • highlight_file():对文件进行语法高亮显示。成功返回true,否则返回false
  • show_source():该函数是highlight_file函数的别名
  • file_get_contents():把整个文件读入一个字符串当中
  • file():把整个文件读入一个数组中,将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行包括换行符在内。失败则返回false

文件漏洞包含:

一、本地文件包含漏洞(LFI)
  • 概念:能够打开并包含本地文件的漏洞

  • 常见的敏感目录信息路径:

    windows:

    C:\boot.ini //查看系统版本
    C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
    C:\windows\repair\sam //存储Windows系统初次安装的密码
    C:\ProgramFiles\mysql\my.ini //Mysql配置
    C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码
    C:\windows\php.ini //php配置信息
    linux:

    /etc/password //账户信息
    /etc/shadow //账户密码信息
    /usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
    /usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
    /usr/local/app/php5/lib/php.ini //PHP相关配置
    /etc/httpd/conf/httpd.conf //Apache配置文件
    /etc/my.conf //mysql配置文件

二、远程文件包含漏洞(RFI)
  • 概念:如果PHP的配置选项allow_url_includeallow_url_fopen状态为ON的话,则include/require函数是可以加载远程文件的

  • allow_url_fopen参数(只影响RFI,不影响LFI)

    简介:是否允许将URL(HTTP,HTTPS等)作为文件打开处理

  • allow_url_include参数(只影响RFI,不影响LFI)

    简介:是否允许includeI()和require()函数包含URL(HTTP,HTTPS)作为文件处理

php伪协议

PHP伪协议事实上就是支持的协议与封装协议

  • file:// 访问本地文件系统
  • http:// 访问 HTTPs 网址
  • ftp:// 访问 ftp URL
  • php:// 访问输入输出流
  • zlib:// 压缩流
  • data:// 数据
  • ssh2:// security shell2
  • expect:// 处理交互式的流
  • glob:// 查找匹配的文件路径

例子

swpuctf 2021新生赛-include

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

base64解码后得出结果

参考文章:

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值