文件包含漏洞 の 原理总结及例题

什么是文件包含漏洞:

PHP文件包含漏洞的产生原因:

在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。最常见的就属于本地文件包含(Local File Inclusion)漏洞了。

程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。


程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,
但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。


几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,
而在JSP、ASP、http://ASP.NET程序中却非常少,甚至没有,这是有些语言设计的弊端。
在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。

 

文件包含漏洞有哪几种类型:

1.本地文件包含漏洞

LFI,能够打开并包含本地文件的漏洞

本地包含顾名思义,就是在网站服务器本身存在恶意文件,然后利用本地文件包含使用

2.远程文件包含漏洞

RFI,远程文件包含漏洞

远程文件包含就是调用其他网站的恶意文件进行打开

 

常见的几个文件包含函数:

php:

  1. include()
  2. include_once()
  3. fopen()
  4. require()
  5. require_once()

jsp/Servlet:

  1. ava.io
  2. file()
  3. java.io
  4. filereader()

asp:

  1. include file
  2. include virtual

 

主流文件包含php一些函数的含义:

include() :执行到include()才包含文件,找不到包含文件只会产生警告,还会接着运行后面的脚本

require(): 只要程序一运行就会包含文件,找不到包含文件则会产生致命错误,并且脚本运行终止

include_once()和require_once():如文件包含被运行了,则不会运行第二次

最简单的漏洞代码:

<?php include($_GET[file]);?>

 

php://伪协议 >> 访问各个输入/输出流:

用法:

php://filter/read=convert.base64-encode/resource=[文件路径]

含义:

        php://filter是一种元封装器,设计用于"数据流打开"时的"筛选过滤"应用,对本地磁盘文件进行读写。简单来讲就是可以在执行代码前将代码换个方式读取出来,只是读取,不需要开启 allow_url_include;

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

00X1 本地文件包含 ( 以include()为例 )

首先创建两个文件,1.txt 和 11.php  如下:

创建完后并对  11.php 进行访问,并且传入参数:

输出结果:

看吧,成功了,这就是简单的本地文件包含,但如果将1.txt 内的内容换成一句换木马,再用菜刀连接一下,那是不是就可以获取shell了,这里小编就不演示了,留给你们慢慢琢磨。。。。。。

 
00x2  远程文件包含

要实现远程文件包含则需要 对 php.ini 进行一些配置

即allow_url_fopen和allow_url_include要为On,也就是打开状态。

如下图:

设置成功后记得要保存并且重新启动一下

好了现在可以开始演示远程包含了,其实和文件包含相差无几,只是把包含的换成外网链接一下就好了

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

bugku中文件包含的相关题目de题解

https://blog.csdn.net/dyw_666666/article/details/82389457

https://blog.csdn.net/dyw_666666/article/details/83900349

https://blog.csdn.net/dyw_666666/article/details/83960600

https://blog.csdn.net/dyw_666666/article/details/82390096

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

参考链接

https://blog.csdn.net/qq_42133828/article/details/83927058

https://blog.csdn.net/qq_40424939/article/details/80641480

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值