文件包含漏洞

文件包含漏洞允许攻击者通过控制输入参数执行非预期的代码。PHP中的include、require等函数可能导致此类问题。本地文件包含(LFI)可暴露敏感信息,远程文件包含(RFI)则可能执行远程服务器上的代码。绕过限制的方法包括%00截断、路径长度截断、点号截断等。修复措施包括过滤特殊字符,关闭allow_url_fopen和allow_url_include,并设定文件包含白名单。
摘要由CSDN通过智能技术生成

文件包含漏洞

原理

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

在php中,提供了四个文件包含的函数

文件包含函数会将文件包含进去,直接使用包含文件中的代码。

分别为:

include(): include ‘filename’;

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

include_once():

​ 和 include() 语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。

require(): require ‘filename’;

​ require 会生成致命错误(E_COMPILE_ERROR)并停止脚本

require_once():

​ 和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

文件包含危害

危害

1.配合文件上传漏洞Getshell (常见图片马中)
2.可执行任意脚本代码
3.可导致网站源码文件及配置文件泄露
4.远程包含GetShell
5.控制整个网站甚至服务器

文件包含脚本

文件包含各个脚本代码

ASP,PHP,JSP,ASPX等

<!-—#include file="1.asp " -->

<!--#include file="top.aspx"-->

<c:import url="http://lthief.one/1.jsp">

<jsp:include page="head .jsp" / >

<%@ include file="head.jsp" %>

<?php Include ( 'test.php ' ) ?>
  

文件包含类型

LFI:local fileinclude 本地文件包含漏洞,被包含的文件在服务器本地

RFI:remote file include 远程文件包含漏洞,被包含的文件在第三方服务器(如站库分离)

本地包含

本地文件包含就是通过浏览器包含web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格的过滤允许遍历目录的字符注入浏览器并执行。

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

无限制的本地文件包含

本地文件包含脚本

<?php
$filename=$_GET['filename'];
include($filename);
?>

include将filename包含了进去

而filename为用户可以控制的部分

包含实例:

pp.txt文件内容

<?php
 phpinfo(); 
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值