文件包含漏洞

文件包含漏洞概述

在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含函数功能。

比如把一系列功能函数写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句话<?php include fuction.php>就可以调用函数代码。

但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。

这种情况我们称为“文件包含漏洞”

文件包含漏洞有“本地文件包含漏洞”和“远程文件包含漏洞”两种情况。

文件包含漏洞攻击topo

image-20211111194722621

包含函数

通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)。

include和require语句是相同的,除了错误处理方面:

· require会生成致命错误(E_COMPILE_ERROR),并且脚本会继续

· include只生成警告(E_WARNING),并且脚本会继续

test.php:

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

Index.html:

 <html>
     <body>
         <h1>
             欢迎访问我的首页!
         </h1>
         <?php include 'test.php';echo "我有一辆" . $color . $car "。";?>
     </body>
 </html>

远程文件包含漏洞

远程文件包含漏洞形式跟文件包含漏洞差不多,在远程包含漏洞中,攻击者可以通过访问外部地址来加载远程的代码。

远程包含漏洞的前提:如果使用include和require,则需要php.ini配置如下(php5.4.34):

allow_url_fopen = on //默认打开

Allow_url_include = on //默认关闭

写入一句话木马

image-20211111200518021

文件上传漏洞的利用

思路:

  1. 制作一个图片木马,通过文件上传漏洞上传;

  2. 通过文件包含漏洞对该图片木马进行“包含”;

  3. 获取执行结果;

常见防范措施

  1. 在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。

  2. 过滤各种../../,http://,https://

  3. 配置php.ini配置文件:

allow_url_fopen = off

Allow_url_include = off

magic_quotes_gpc = on

  1. 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zavier-0.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值