Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >文件包含漏洞原理利用方式及修复

文件包含漏洞原理利用方式及修复

作者头像
黑白天安全
发布于 2020-03-10 10:59:27
发布于 2020-03-10 10:59:27
4.3K00
代码可运行
举报
运行总次数:0
代码可运行

web安全

更新于 2月25日 约 8 分钟

注:本文仅供学习参考

文件包含定义: 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。造成方便的同时,也留下了隐患。

文件包含常用函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require()#函数出现错误的时候,会直接报错并退出程序的执行
require_once()#只包含一次
include()#在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行
include_once()#只包含一次

原理: 在进行文件包含的时候,没有对参数进行严格的过滤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
  $filename = $_GET['filename'];
  include($filename);
?>
如上述例子 在引用filename函数时,没有过滤,直接引用了这个函数

文件包含分类: 本地包含:可以进行一些本地的文件读取 远程包含:可以对外网上的文件进行读取

实战: 留意url,这里我想包含当前目录的1.txt(内容为phpinfo()),发现成功执行php语句

同理读取其他文件可使用../../返回上级目录,就比如我相关读取D盘下的2.txt

思路

有时候当我们发现了一个本地的文件包含漏洞,但我们也仅仅只能去读取一些本地的文件,没有办法去进行更深层次的利用,然后又在这个网站上发现了一个文件上传漏洞,同时这个文件上传漏洞如果单个来看是比较鸡肋的,比如它做了限制,只能发送图片,而这个图片却没有做严格的限制,我们可以通过一些图片木马来绕过上传,而这两个漏洞结合一下的话,就能达到很大效果了 比如我们上传了一个图片木马,没法单独去使用,但我们可以使用文件包含漏洞,去对这个文件进行包含,也就是说两个文件互相结合进行利用

这里提供一个思路getshell:就比如想getshell但又没有上传点,怎么办呢,我们可以把一句话包含进apache日志里(日志位置可以猜测一下),进行getshell。下面来看看实战。

日志位置于../../../../apache/logs/access.log 直接写一句话(注意浏览器会编码,通过burp请求)

这时打开菜刀尝试连接 成功getshell

ps:%00截断 条件:magic_quotes_gpc = Off php版本<5.3.4 比如这种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
  $filename = $_GET['filename'];
  include($filename . ".html");
?>

远程文件包含: PHP的配置文件allow_url_fopen和allow_url_include设置为ON,include/require等包含函数可以加载远程文件,如果远程文件没经过严格的过滤,导致了执行恶意文件的代码,这就是远程文件包含漏洞。

条件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)

了解php伪协议: php伪协议本来是方便使用的,但如果存在包含漏洞,攻击者可以充分利用读取或写入一些文件 这里介绍几个常用的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php://filter(本地磁盘文件进行读取)
php://input
file://伪协议 (读取文件内容)

php://filter用法 ?php://filter/convert.base64-encode/resource=xxx.php 通过Base64解密后

成功读取

file://伪协议 (读取文件内容) 通过file协议可以访问本地文件系统,读取到文件的内容 这里读取我D盘下的2.txt 2.txt的内容为phpinfo();

php://input 可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。enctype=”multipart/form-data” 的时候 php://input 是无效的。 用法:?file=php://input 数据利用POST传过去。

php://input(写入木马) 条件:php配置文件中需同时开启 allow_url_fopen 和 allow_url_include(PHP < 5.3.0),(不开启会报错)就可以造成任意代码执行,在这可以理解成远程文件包含漏洞(RFI),即POST过去PHP代码,即可执行。 如果POST的数据是执行写入一句话木马的PHP代码,就会在当前目录下写入一个木马。

php://input(读取post数据) 碰到file_get_contents()就要想到用php://input绕过,因为php伪协议也是可以利用http协议的,即可以使用POST方式传数据,具体函数意义下一项

php://input(命令执行) 条件:php配置文件中需同时开启 allow_url_fopen 和 allow_url_include(PHP < 5.30),就可以造成任意代码执行,在这可以理解成远程文件包含漏洞(RFI),即POST过去PHP代码,即可执行

修复方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
过滤../ ./
配置php.ini文件
都关闭allow_url_fopen 和 allow_url_include
设置白名单

还有很多协议如data phar zip等等等等 有兴趣的伙伴可以去研究一下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
任意文件包含漏洞(1)
文件包含漏洞:即file inclusion 指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once()),去包含任意文件。此时如果对文件来源不严格过滤审查,就容易包含恶意文件。而攻击者可以通过构造这个恶意文件来达到目的。
宸寰客
2020/08/25
1.3K0
任意文件包含漏洞(1)
【原创】基础篇--文件包含漏洞总结
服务器通过PHP的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到攻击的目的。
用户6343818
2020/05/26
1.9K0
【原创】基础篇--文件包含漏洞总结
一文了解文件包含漏洞
例子_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数攻击者可以修改_GET['filename']的值,执行非预期的操作
中龙技术
2022/09/29
1.7K0
一文了解文件包含漏洞
Web漏洞 | 文件包含漏洞
文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行,代码注入的典型代表就是文件包含File inclusion。文件包含可能会出现在jsp、php、asp等语言中。服务器通过函数去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。常见的文件包含的函数如下 PHP:include() 、include_once()、require()、require_once()、fopen()、readfile() JSP/Servlet:ava.io.file()、java.io.filereader() ASP:include file、include virtual
谢公子
2022/01/19
3K0
cisp-pte学习笔记之文件包含
开发者在开发的过程中,会将可以重复利用的函数或者代码块写入到单个文件当中,当需要实现某些功能,直接调用对应功能的文件即可,无需重复编写,这种调用文件的过程称之为文件包含
cultureSun
2023/07/24
5850
文件包含漏洞
http://vulnerable/fileincl/example1.php?page=intro.php(该php文件包含LFI本地文件上传漏洞)
h3110_w0r1d
2024/02/19
3550
文件包含漏洞
您有一份CTF代码审计文件等待查收
0x01 背景 上周总结了一些文件包含与伪协议结合的利用方法,本周就找一道例题进行演练。题目源自国外某挑战平台,平台上还有许多其他有趣的challenges题目,小伙伴有兴趣也可以上去好好玩耍一番。
漏斗社区
2018/03/28
1K0
您有一份CTF代码审计文件等待查收
任意文件包含漏洞原理解析及演示
本文转自行云博客https://www.xy586.top/ 文章目录 原理 分类 PHP文件包含的函数 伪协议 演示 php://input 伪协议 data://text/plain 伪协议 zip:// 伪协议 原理 文件包含漏洞:即file inclusion,意思是文件包含,是指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once())利用URL去动态包含文件,此时
行云博客
2020/08/24
1.9K0
任意文件包含漏洞原理解析及演示
干货 | 一文了解文件包含漏洞
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。
网络安全自修室
2022/03/30
2.1K0
干货 | 一文了解文件包含漏洞
文件包含漏洞-懒人安全
一.漏洞描述 文件包含漏洞主要是程序员把一些公用的代码写在一个单独的文件中,然后使用其他文件进行包含调用,如果需要包含的文件是使用硬编码的,那么一般是不会出现安全问题,但是有时可能不确定需要包含哪些具体文件,所以就会采用变量的形式来传递需要包含的文件,但是在使用包含文件的过程中,未对包含的变量进行检查及过滤,导致外部提交的恶意数据作为变量进入到了文件包含的过程中,从而导致提交的恶意数据被执行,主要用来绕过waf上传木马文件。 二.漏洞分类 0x01本地文件包含:可以包含本地文件,在条件
奶糖味的代言
2018/04/16
1.6K0
【Pikachu】File Inclusion(文件包含漏洞)
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。
菜菜有点菜
2022/03/17
1.2K0
【Pikachu】File Inclusion(文件包含漏洞)
文件包含漏洞原理浅探
文件包含是指一个文件里面包含另外一个文件;开发过程中,重复使用的函数会写入单独的文件中,需要使用该函数的时候直接从程序中调用该文件即可,这一个过程就是“文件包含”
Mirror王宇阳
2020/11/12
5930
PHP一些常见的漏洞梳理
以下主要是近期对php一些常见漏洞的梳理,包含php文件包含、php反序列化漏洞以及php伪协议。其中 :
天钧
2020/09/14
4.8K0
PHP一些常见的漏洞梳理
文件包含漏洞利用技术总结
开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。
黑战士
2024/04/15
2360
面试中碰到的坑之包含漏洞专题
00x1 包含漏洞的原理 什么是文件包含:包含就是程序人员把重复使用的函数或者函数写到单个文件中,使用函数时直接调用,而无需再次编写,则调用的过程称之为包含。 文件包含漏洞的原理:包含操作,大多数的web脚本语言都会提供的功能,但是php对包含文件所提供的功能太强大,太灵活,所以包含漏洞经常出现在php 语言中,功能越大,漏洞也越多。 php的四个包含函数: include():语句包含并运行指定文件。 include_once():和include语句类似,唯一区别是如果该文件中已经被包含过,则不会再
lonelyvaf
2018/06/07
1.1K0
PHP文件包含漏洞原理分析|美创安全实验室
PHP是目前非常流行的Web开发语言,但是在利用PHP开发Web应用时,如果稍有不注意,就会产生PHP文件包含漏洞。PHP文件包含漏洞是一种常见的漏洞,而通过PHP文件包含漏洞入侵网站,甚至拿到网站的WebShell的案例也是不胜枚举。本期美创安全实验室将带大家了解PHP文件包含漏洞的产生原因和漏洞原理。
数据安全
2020/08/19
1.1K0
PHP文件包含漏洞原理分析|美创安全实验室
php文件包含漏洞分类目录文章标签友情链接联系我们
php文件包含漏洞 基本 相关函数 php中引发文件包含漏洞的通常是以下四个函数: include() include_once() require() require_once() reuqire(
用户1246209
2018/07/18
7530
php伪协议
https://blog.csdn.net/Jeff_12138/article/details/124815370
h3110_w0r1d
2024/02/19
2330
php伪协议
PHP 文件包含漏洞姿势总结
文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
信安之路
2018/08/08
4.4K0
PHP 文件包含漏洞姿势总结
文件包含、PHP伪协议
当使用include()函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。
字节脉搏实验室
2020/12/21
3K0
文件包含、PHP伪协议
相关推荐
任意文件包含漏洞(1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验