文件包含漏洞

文件包含漏洞概述

什么是文件包含

开发人员将需要重复调用的函数写入一个文件,对该文件进行包含时产生的操作。这样编写代码能减少代码几余,降低代码后期维护难度保证网站整体风格统下:导航栏、底部footer栏等。

漏洞产生原因

文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制包含其他恶意文件,导致了执行非预期代码。
常见漏洞代码:

<?php
$filename=$_GET['filename'];
include($filename);
?>

访问的URL:
http://xxx/xxx.php?filename=show.php
改变filename值即可改变代码中包含的文件

PHP中文件包含函数

1.require组
require : 函数出现错误时,会直接报错并退出程序执行。
require_once : 出错时直接退出; 且仅包含一次。在脚本执行期间同一个文件可能
被多次引用,确保只包含一次以避免函数重定义、变量重新赋值等问题。
2.include组
include : 函数出现错误时,会抛出一个警告,程序继续运行。
include once :函数出现错误时,会抛出警告,且仅包含一次。

文件包含漏洞类型及利用

1.本地文件包含:被包含的文件在服务器本地
利用方式:包含本地敏感文件、上传文件
2.远程文件包含:被包含的文件在远程服务器
利用方式:包含攻击者指定远程url文件
在这里插入图片描述
可以发现点击不同的文件他会跳转到那个文件下并打开文件内容
在这里插入图片描述
在这里插入图片描述
我们找到当前文件夹的文件在里面创建一个info.php 打开这个文件夹
如果是在其他目录下的话距离几个目录就要…/几个
在这里插入图片描述
包含文件的内容摘要符合php语法但能被当成php代码进行解析 无关后缀名是什么
在这里插入图片描述
在这里插入图片描述

敏感文件路径

在这里插入图片描述

本地文件包含配合日志文件

把前面注释去除掉 开启日志功能
在这里插入图片描述
access.log是他的日志文件 如果我们在这里输入这段代码他会写入到日志文件里面 因为日志文件会记录每次的操作所以说会写入进去
如果该网站存在文件包含漏洞 它就会执行这个代码
当我们上传文件包含漏洞
在这里插入图片描述
这里转化为url编码了
可以通过burp修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用file协议

显示本地文件:
page=file://

利用php://filter协议

查看编码 直接包含php文件时会被解析 不能看到源码 故使用filter协议读取
php://filter/convert.base64-encode/resource=include.php
convert.base64-encode:转换器 使用base64编码

利用zip:// bzip2:// zlib://协议

zip:/ bzip2:// zlib://协议利用条件为php版本大于5.3.0,都属于压缩流,可以访压缩文件中的子文件
格式 : zip://[压缩文件绝对路径]#[压缩文件内的子文件名]

利用phar://协议

类似于zip协议 但是可以使用相对路径
格式:phar://[压缩文件绝对/相对路径]/[压缩文件内的子文件名]

包含远程文件

在这里插入图片描述

包含远程shell

在这里插入图片描述

利用php://input协议

主要用来接收post数据,将post请求中的数据作为php代码执行
在这里插入图片描述
访问shell.php文件查看网络200即为成功

data://协议

将原本的include的文件流重定向到了用户可控制的输入流中。必须在双on的情况下才能正常使用。
在这里插入图片描述

本地文件包含绕过方式

#!php
<?php include("inc/".$_GET['file'].".htm");?>

%00截断 :
条件: magic quotes gps=off php版本<5.3.4
?page=…/…/…/…/phpinfo.php%00
php内核由c语言实现,因此使用了c语言中的字符串处理函数,在连接字符串时0字节作为字符串的结束符,%00url解码为0x00,magic quotes _gps开启时会将%00转义为0的两个单体字符,故不具备截断功能。
%00截断目录遍历 :
条件: magic _quotes gps=off unix文件系统,比如FreeBSD,OpenBSDNetBSD,Solaris
?page=…/…/…/…/var/www/%00

远程文件包含绕过方式

<?php
$basePath = $_GET['path'];
require_once $basePath."/action/m_share.php";
?>

在这里插入图片描述

文件包含漏洞危害及防御

危害:
获取敏感信息
执行任意命令
获取服务器权限。
防御:
尽量不使用动态包含,无需情况下设置allow url include和allow url fopen为关闭
对可以包含的文件进行限制:使用白名单的方式,或者设置包含的目录,open basedir
严格检查用户输入,参数中不允许出现…/之类的目录跳转符;严格检查变量是否初始化;
不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行

相关推荐

  1. 文件包含漏洞讲解

    2024-02-15 11:54:03       39 阅读
  2. 文件包含漏洞

    2024-02-15 11:54:03       31 阅读
  3. 初探文件包含漏洞

    2024-02-15 11:54:03       21 阅读
  4. Xss文件包含漏洞

    2024-02-15 11:54:03       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-15 11:54:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-15 11:54:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-15 11:54:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-15 11:54:03       20 阅读

热门阅读

  1. django中配置使用websocket

    2024-02-15 11:54:03       31 阅读
  2. TiDB分布式关系型数据库简介

    2024-02-15 11:54:03       27 阅读
  3. 力扣-125. 验证回文串

    2024-02-15 11:54:03       35 阅读
  4. Vue3之ElementPlus中Table选中数据的获取与清空方法

    2024-02-15 11:54:03       31 阅读
  5. 018_配置测试微服务基本的CRUD功能

    2024-02-15 11:54:03       31 阅读
  6. 设计模式--策略模式(Strategy Pattern)

    2024-02-15 11:54:03       31 阅读
  7. C#面:Static Nested Class 和 Inner Class 有什么不同

    2024-02-15 11:54:03       26 阅读
  8. 【网络层介绍】

    2024-02-15 11:54:03       23 阅读
  9. DS Wannabe之5-AM Project: DS 30day int prep day14

    2024-02-15 11:54:03       31 阅读
  10. 记录 | anaconde conda安装清华源

    2024-02-15 11:54:03       26 阅读