文章目录

  • 一、实验目的:
  • 二、实验环境:
  • 三、防御说明:
  • 四、防御措施:
    • 1. 设置白名单:
    • 2. 过滤危险字符:
    • 3. 设置文件目录(配置php.ini):
    • 4. 关闭危险配置(配置php.ini):
  • 五、防御总结:

一、实验目的:

1、通过本次学习,掌握文件包含的过滤验证方式。
2、学习在修复文件包含漏洞的方法。

二、实验环境:

靶 机: windows10虚拟机:192.168.100.150
      phpstudy2018_Apache集成环境

三、防御说明:

文件包含漏洞防御:
  在PHP开发中文件包含漏洞常出现在Incbude/Require系列语言结构上,由于需要包含的文件是可以被用户设置的,从而导致包含任意文件及代码执行。通常在开发中需要设置白名单过滤危险字符设置文件目录关闭危险配置等操作来避免漏洞的发生。

四、防御措施:

1. 设置白名单:

代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

验证源码示例:

<?php
$file_list=[                       //声明一个变量,用于存放白名单;'framework/init.php','framework/route.php','framework/event.php',
];
$file= $_REQUEST['file'];          //声明一个变量,用于接收传递过来的文件信息;
if (in_array($file, $file_list)){  //把传递过来的文件信息和白名单里面的文件进行对比;include "$file";                 //如果传递过来的文件是白名单里面的文件,就对它进行文件包含;
}
?>

2. 过滤危险字符:

  由于Incbude/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini), 在Linux环境中可以通过"../../"的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

验证源码示例:

$pattern= "#^[a-z][a-z0-9+.]*:?//#i";
if(substr($filename,-4)=='.php' && strpos($filename,"..")===false&&!preg_match($pattern, $filename)){include "$file";
}

3. 设置文件目录(配置php.ini):

  PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

4. 关闭危险配置(配置php.ini):

  PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的

五、防御总结:

  任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范; 在代码核心处,对变量进行过滤限制, 设置文件路径或者白名单,避免执行任意文件包含。
  最后,总结一下任意文件包含漏洞的防御方式。任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范:在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。

【文件包含漏洞】——文件包含漏洞防御相关推荐

  1. web常见漏洞解析 注入 xss csrf 文件上传 文件包含 -dvwa演示

    注(以下环境皆是自己在本机搭建,请勿在公网真实操作) 1.注入 1.1 SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶 ...

  2. WEB漏洞—文件包含漏洞

    介绍 所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞.例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为"变量",那么这时程序员就会将该& ...

  3. 文件包含漏洞不能包含php,ThinkPHP5漏洞分析之文件包含

    本系列文章将针对 ThinkPHP 的历史漏洞进行分析,今后爆出的所有 ThinkPHP 漏洞分析,也将更新于 ThinkPHP-Vuln 项目上.本篇文章,将分析 ThinkPHP 中存在的 文件包 ...

  4. php文件包含绕过,文件包含漏洞(绕过姿势) | nmask's Blog

    谁将烟焚散,散了纵横的牵绊 文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件.今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏 ...

  5. 文件包含漏洞 文件伪协议利用

    目录 0x0 文件包含漏洞原理 0x1 检测文件包含漏洞 0x2 文件包含漏洞类型 0x3 文件协议流 0x4 实战 简介 #文件包含漏洞 原理,检测,类型,利用,修复等 #文件包含各个脚本代码 AS ...

  6. 通达OA任意文件上传/文件包含RCE漏洞分析

    通达OA任意文件上传/文件包含RCE漏洞分析 0x01 前提 0x01 漏洞介绍 0x02 漏洞分析 首先下载安装 绕过身份验证文件上传部分 变量传递问题 文件包含部分 0x01 前提 关于这个漏洞的 ...

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

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

  8. WEB攻防-通用漏洞文件包含LFIRFI伪协议编码算法代码审计

    目录 知识概要 1.解释 2.实现漏洞的三种方式 3.本地包含LFI&远程包含RFI-区别 4.各类脚本语言包含代码写法 思路点 黑盒发现 白盒发现 CTF案例演示 CTF-78-php&am ...

  9. 文件上传漏洞之——漏洞进阶(读文件,写文件,包含图片马,包含日志文件,截断包含)

    php协议 PHP带有很多内置URL风格的封装协议,可用于类似fopen().copy(). file_ exists()和filesize()的文件系统函数 file:// 访问本地文件系统 htt ...

  10. 文件操作之文件包含漏洞

    目录 本文仅供参考.交流.学习,如有违法行为后果自负 文件包含类型 原理方面 文件包含漏洞原理案例: 必要条件 那么如何去检测漏洞是否存在该漏洞? 白盒 黑盒 类型 本地文件包含 无限制 有限制 远程 ...

最新文章

  1. buffer cache 深度解析
  2. c语言写贪吃蛇什么水平_C语言实现贪吃蛇游戏(VC6.0)
  3. Opportunity的chance of success determination逻辑
  4. 【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程
  5. java项目:永和大王项目_Java项目:书评
  6. python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景
  7. Mathpix图片转LaTeX,Word快速插入LaTeX公式教程
  8. 常用SQL Server数据修复命令DBCC一览(转载)
  9. POJ1657 Bailian1657 Distance on Chessboard【基础】
  10. JS继承之寄生类继承
  11. 基于 Electron 做视频会议的两种实现方式
  12. 关于304缓存 (转沫鱼的前端世界)
  13. 计算机领域CCF推荐会议列表+
  14. UGMT buildingEXODUS v4.0 WiN32.rar
  15. 度数秒分在线计算机,秒换算(时分秒换算器)
  16. 八国离线谷歌卫星影像地图内网发布
  17. react-redux——使用redux——使用react-redux这个扩展简化操作
  18. 数据库里面date类型时间有时差,时区问题
  19. 计算机软考高级职称论文,关于计算机软考,这里可以解决你所有的问题
  20. CXF之七 传输文件

热门文章

  1. Mac 编译运行ET6.0Demo
  2. Outlook邮箱附件无法打开的解决办法
  3. CSDN待审核文章测试
  4. 从申请到调用:空号检测 API 使用教程
  5. 十大硬盘数据恢复软件简评(转自华军)
  6. 基于8051的电子密码锁程序
  7. 继2021-02-09第一篇博文后
  8. 【概念题】java依赖注入,android开发实战-记账本清风紫雪
  9. 如何在VB.NET中查询所有打印机端口名称,端口号ne
  10. Debug_C++:关于逻辑或在合法性检测中的问题