文件包含漏洞

文件包含漏洞概述
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用”包含”函数功能。
比如把一系列功能函数都写进fuction.php中 ,之后当某个文件需要调用的时候就直接在文件头中写上
-句< ?php include fuction.php? >就可以调用函数代码。
但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用
了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击着可以
通过修改包含文件的位置来让后台执行任意文件(代码)。
这种情况我们称为"文件包含漏洞”
文件包含漏洞有"本地文件包含漏洞”和"远程文件包含漏洞”两种情况。
文件包含漏洞过程
网站后台使用包含的方法对目标文件进行包含,同时包含函数包含的目标文件是可以被前端用户控制,前端用户传进,根据后台设置它可以包含function1和function2,由于文件可以被前端用户控制的,前端用户传进来一个其它的文件在include()没有对前端传进来的目标文件做任何控制的话意味着这个包含函数可以将用户前端传进来的其它文件也给包含掉。可以对本地配置的一些文件做包含从而将配置文件的信息暴露出去,称为本地文件包含。也就是说攻击者传入一些后端服务器上配置的文件,让这个包含函数去执行,从而导致导致这个服务器后台的一些本地的文件
被意外的执行,或者说本地配置文件被暴露出去。在PHP里面包含函数除了包含本地的PHP的文件外,还可以包含远程的PHP文件,通过指定的uil去读取远程的PHP文件然后加载到本地执行,攻击者可以在自己的恶意站点上去编写PHP文件,恶意代码可以是任意代码,传入后台,让后台调用恶意站点上的PHP的代码去本地执行。
在这里插入图片描述
本地文件包含漏洞:
通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)。
include和require语句是相同的,除了错误处理方面:
*require会生成致命错误( E_COMPILE_ERROR )并停止脚本
include只生成警告( E_WARNING ) , 并且脚本会继续
Test . php:

<?php $color= '银色的' ; $car= '奔驰轿车'; ?>

Index . html :

欢迎访问我的首页!

<?php include 'test.php'; echo "我有一辆" . $color . $car"。";?> 本地文件包含漏洞操作: pikachu上File Inclusion的File Inclusion(local)——假设其为Linux系统——在地址栏filename=输入.../.../.../.../.../.../etc/password回车——直接把路径的文件传入后台,被后台用对应方法处理,将后台的文件暴露出来。 **远程文件包含漏洞** 远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中,同样是开发人员在后台使用包含函数的时候,没有对它包含的目的地进行相关的安全措施,导致前端传进来的目标地址被包含进去,在本地文件包含漏洞当中,其传进来的只能是本地的文件,只能在本地读取相关路径下的一些文件,在PHP配置里,可以通过一些特殊的配置,允许这个包含函数去通过一些协议,去远程访问远程站点上的代码文件,然后包含到本地来执行,攻击可以通过访问外部地址来加载远程的代码。 远程包含漏洞前提:如果使用的incldue和require,则需要php.ini配置如下( php5.4.34) : allow_uil_fopen=on //默认打开 Allow_uil_include=on /默认关闭(较危险选项)

本地文件包含漏洞是有限的,其只可以读本地一些配置文件,还要去猜测配置文件的路径,相对来说危害较低。远程文件包含漏洞,其可以允许包含函数去读取远程站点上的代码文件,意味着攻击者可以自己搭建一个站点,在站点上放置一个代码,代码文件可由攻击者自己控制,再将该对应路径通过前端传到后台,后台包含函数就会对远程路径下的文件进行加载,危害极大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值