介绍

所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞。例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为“变量”,那么这时程序员就会将该“变量”放在一个文件中,在其他代码中引用该变量文件即可。
当这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校验或者校验被绕过就造成了文件包含漏洞。


脚本利用
我们先创建一个带有文件包含脚本的PHP文件放在服务器上,代码如下

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

这时我又在同一目录下创建了一个a.txt文件
内容就一句:<?php phpinfo();?>

当我在浏览器中访问test.php文件时,里面的变量?filename=a.txt。
可以看出,a.txt里的内容是以PHP脚本执行的。

对文件包含的检测

白盒可以通过代码审计
黑盒可以通过扫描工具扫出、可以利用网上公开的漏洞、还可以手工去尝试包含检测

文件包含类型

分为本地包含远程包含,也可以分为有限制无限制类型
所谓有限制就是在利用该漏洞时有一定的干扰,而无限制则可以直接包含(上面的脚本利用就是无限制)

像这样就是有限制的,这里就只能指向html文件。

但是我们可以通过“%00”去将后面.html代码截断,“a.txt%00”即可正常访问
在PHP中,这个%00的使用有两个条件
1.magic_quotes_gpc=off
2.PHP版本<5.3.4
若不满足这两个条件,则无法使用该截断

还有一种方法,可以利用长度截断
在Windows中文件命令长度256,Linux中文件命名长度4096。
当文件名长度超过服务器命名长度数值,则后面的.html也不会生效。


危险更大的是远程包含
在phpinfo中我们可以查看“allow_url_include”来判定是否有远程包含

状态为“On”的话就可以包含远程服务器的文件去执行了

远程包含如果有限制,我们可以通过在代码后加入相关干扰字符尝试去绕过,如%20、%23、?等

各种协议流玩法

伪协议用法:https://segmentfault.com/a/1190000018991087
php支持的协议和封装协议https://www.php.net/manual/zh/wrappers.php
如果 PHP 的配置选项 allow_url_include、allow_url_fopen 状态为 ON 的话,则include/require 函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞(RFI)

file://+路径:将文件以脚本执行
data://
php://filter 可以在执行代码前将代码换个方式读取出来,只是读取,不需要开启,
读取源代码并进行 base64 编码输出,不然会直接当做 php 代码执行就看不到源代码
内容了
php://input?test=php://input 【post data】<?php phpinfo();?>

春秋靶场web include练习

进入后是这个页面,一串代码加上phpinfo信息

代码分析

<?php
show_source(__FILE__);//文件高亮
if(isset($_REQUEST['path'])){//isset — 检测变量是否已声明并且其值不为 nullinclude($_REQUEST['path']);//包含变量‘path’请求的文件
}else{include('phpinfo.php');//否则展示phpinfo.php这个文件
}

由上可知,存在phpinfo.php这个文件在,所以我们尝试访问下此文件
没问题
既然是文件包含漏洞,我们查看下phpinfo中的allow_url_include是否为On
这样的话我们尝试利用上面说的伪协议,去读取相关信息
用php://input+POST【php脚本】试试
可以看到这里含有三个文件,很明显‘dle345aae.php’这个文件就是我们通过的flag文件
访问它试试

好像什么都没有爆出,不急,看看网页源代码

flag出现了

防御手段

  1. 将包含文件固定,不要设置为变量。
  2. 如果有设置变量的必要,那么最好固定文件后缀,如.html

WEB漏洞—文件包含漏洞相关推荐

  1. 文件上传漏洞_通达OA前台任意文件上传漏洞+文件包含漏洞导致getshell

    点击蓝字|关注我们 通达OA前台任意文件上传漏洞 +文件包含漏洞导致getshell 一.漏洞介绍/Profile/ 通达OA介绍: 通达OA(Office Anywhere网络智能办公系统)是由北京 ...

  2. Web安全——文件包含漏洞

    一.文件包含漏洞 原理     文件包含漏洞是"代码注入"的一种.其原理就是注入一段用户能控制的脚本或代码,并让服务端执行."代码注入"的典型代表就是文件包含. ...

  3. Web安全—文件包含漏洞(RFILFI)

    文件包含函数(RFI&LFI) ASP和JSP只能实现本地文件包含,PHP既可以本地文件包含也可以远程文件包含 1,文件包含漏洞简介: 在日常的应用开发中,开发者会将常用的功能模块单独实现,然 ...

  4. 什么是文件包含漏洞?文件包含漏洞分类!

    网络安全是安全产业的重要组成部分,也是国家高度重视且大力支持的重点方向,在当下十分受关注,正因如此,越来越多的人选择转行学习网络安全.提及网络安全,大家应该都知道网络安全中有很多漏洞,今天这篇文章主要 ...

  5. php文件包含漏洞复现,文件包含漏洞(绕过姿势)

    当你的才华 还撑不起的野心时 那你就应该静下心来学习 目录 文件包含漏洞介绍 特殊姿势 亲测有效 php文件包含漏洞 本地包含漏洞(LFI) 远程包含漏洞 文件包含利用 读取敏感信息 远程包含shel ...

  6. Web安全之文件包含漏洞

    什么是文件包含 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件.而无需再次编写,这种 文件调用的过程一般被称为文件包含. 例如:include "conn ...

  7. test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  8. Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    Web安全:文件包含漏洞测试. 文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , ...

  9. 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bz ...

最新文章

  1. Windows Vista正版光碟上面的隐藏人像
  2. git放弃修改放弃增加文件
  3. SDR、DDR、QDR存储器的比较
  4. [LintCode] Wildcard Matching
  5. weblogic自带的jdk是在工程的包部署后编译使用
  6. springboot+thymeleaf+jpa博客多级评论展示案例
  7. PouchContainer 富容器技术解析
  8. 深度解读!时序数据库HiTSDB:分布式流式聚合引擎
  9. html5media使用
  10. wordpress rest api 登录_Python构建RESTful网络服务[Django篇:生成API文档]
  11. 中国未来5年IP地址需求总量高达345亿
  12. python 新式类和旧式类
  13. java 事务级别_java事务隔离级别
  14. python+基于Python的资产管理系统 毕业设计-附源码201117
  15. oracle中vim设置行号,vim的常用操作
  16. PDF文档免费转成Word文档,不限页数。
  17. pdf文档打不开是怎么回事?
  18. Java生鲜电商平台-异常模块的设计与架构
  19. 【JavaEE】进入Web开发的世界-CSS
  20. ecshop被加入了黑链

热门文章

  1. 【C++】C++库nlohmann / json的使用
  2. 电路课组(一)电路原理 Part 2 求解电路的一般方法(1) 基本元件特性
  3. pmp直方图与帕累托图的区别_PMP第八章“项目质量管理”常用工具
  4. webeditor漏洞基础知识
  5. k210实现麦克风阵列声源定位
  6. 浪潮天梭服务器装系统步骤,浪潮天梭TS10000高性能主机系统配置方案.DOC
  7. 国内外安全网站网址大集合
  8. 各个版本 Windows 10 的名称、完整版本号、开发代号和系统自带的 .NET Framework 版本
  9. 【面试】面(考)试(前)小(重)抄(点)_持续更新
  10. springboot中的@Conditional注解