靶场科普 | 文件包含之编码绕过

发表时间:2022-03-10 11:18

本文由“东塔网络安全学院”总结归纳


靶场介绍:

文件包含之编码绕过


今天,给大家介绍一下“东塔攻防世界”其中的一个靶场:“文件包含之编码绕过”。


一、实验介绍

1.文件包含简介

1)文件包含漏洞是代码注入的一种,其原理就是注入一段用户能控制的脚本或代码,使服务器端执行。至于文件包含,也就是一种“外部数据流包含”,这个外部数据流可以是文件,也可以是POST数据流的形式。
2)原理
程序开发人员会把重复使用的函数写到单个文件中,需要使用某个函数直接调用此文件。而无需再次编写,这种文件调用的过程一般被称为文件包含。

2.漏洞定义

1)通过服务器脚本的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露、恶意代码的注入等。

2)文件包含分为两种,一种为本地文件绕过,一种是远程文件包含,此实验针对的是本地文件包含。本地文件包含(Local File Include),简称LFI。

3.涉及函数

文件包含在php中,涉及到的危险函数有四个,分别是include()、include_once()、require()、 require_ once()。区别如下:

include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。

include_ once: 和include类似,不同处在于include_ _once 会检查这个文件是否E经被导入,如果已导入,下文便不会再导入,直面once理解就是只导入一-次。

require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。

require_ _once: 和require 类似,不同处在于require_ _once 只导入一次。

4.产生场景

开发过程中,多个文件都会用到的代码,通常会放到一个单独的文件中,用到时再包含进来。当把包含的文件写死在程序中时,该漏洞是不存在的,但很多情况都会动态的去包含所需的文件,这时候则会产生文件包含漏洞。


二、实验目的

1.掌握本地文件包含漏洞的原理
2.了解本地文件包含漏洞产生场景
3. 熟悉编码绕过后端文件上传防御


三、实验步骤

1.打开实验连接,查看实验环境。
2.根据解题思路进行实操,做好记录。


四、防御方式

1.尽量不使用动态包含文件,如果可以静态的去包含最好。
2.在使用动态包含时,添加后缀措施的情况下,请保证php版本高于5.3或是最新版,防止截断攻击。
3.对于动态包含的文件可以设置一个白名单, 如果不属于白名单内的文件名,则不包含。
4.可以使用open_ basedir 限制目录项来指定包含的目录范围,防止目录遍历,php.ini 中设置open_ basedir="指定 目录"。
5.对于中间件apache或nginx等,可以使用中间件自身的指定目录范围配置,效果更好。


速度登录https://labs.do-ta.com/ GET起来

现在注册,立得50积分哟 ✌