【文件包含】任意文件包含的理解

谈谈任意文件包含的理解

1.漏洞描述

  • 攻击者可以利用任意文件包含漏洞,读取文件,执行代码,对服务器造成危害。
  • 程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。
  • 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用(包含),但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。
  • 几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在PHP 的Web 应用中居多,在JSP/ASP/ASP.NET 程序中比较少。

2.漏洞原理

        PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,Web 应用没有进行严格的校验,浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。

  • 动态包含
  • 被包含文件路径可控

特点:

  • 读取文件
  • 执行代码

3.漏洞场景

  • 类似于metinfo_5.0.4 实现了动态包含,有存在文件包含漏洞的风险。
  • 类似于文件读取的URL,可能存在文件包含。

4.漏洞评级

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐        高危

5.漏洞危害

攻击者利用文件包含漏洞,可以:

  • 读取文件
  • 执行PHP 代码
  • 直接获取网站后门
  • 控制网站
  • 控制服务器

6.漏洞验证

?filepath=./a.jpg

7.漏洞利用

  • 包含图片木马

        菜刀直接链接。

  • 读取敏感文件

利用文件包含漏洞,也可以读取敏感文件。
前提条件:
目标文件存在(已知目标文件路径);
具有文件可读权限。

  • 读取 PHP 源码

利用php://fileter 读取。

  • 执行 PHP 命令

利用条件:

  • 利用 php://input 执行PHP 命令;
  • 远程文件包含开启。
  • 包含图片马写 shell

条件:

  • 确定文件包含漏洞存在;
  • 菜刀不能直接连接。

写Shell:

  • 包含日志

Apache 日志:

  • 访问日志
  • 错误日志

Nginx 日志:

  • 访问日志
  • 错误日志

SSH 日志
邮件日志

8.防御方案

  • 尽量少的使用动态包含。
  • 严格过滤被包含文件的路径。
  • 将参数 allow_url_include 设置为 Off。
  • 使用参数 open_basedir 限定文件访问范围。
  • open_basedir = c:\phpstudy_2016\www\

9.典型案例

metinfo_5.0.4_file-include

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Outlook关闭过去事件的提醒

Outlook关闭过去事件的提醒 故障现象 最近Outlook中推出的新功能让我们可以选择自动关闭过去事件的提醒。 目前这个功能暂时只向当月通道的Office 365 订阅者发布。 这些用户升级到1810版本后,可以在不想收到已发生事件提醒的时候通过下面的步骤自动忽略过去事件…

day22_mysql

今日内容 零、 复习昨日 一、MySQL 一、约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 );1.1 数据类型 其实数据类型…

65.Undertow代替Tomcat

SpringBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升…

在Spring Boot中使用进程内缓存和Cache注解

在Spring Boot中使用内缓存的时候需要预先知道什么是内缓存,使用内缓存的好处。 什么是内缓存 内缓存(也称为进程内缓存或本地缓存)是指将数据存储在应用程序的内存中,以便在需要时快速访问和检索数据,而无需每次都从…

cmmlu数据处理

cmmlu数据处理 数据处理数据地址代码解析数据处理 from glob import glob import pandas as pd from tqdm import tqdmtrain_data_path_list = glob("test/*") val_data_path_list = glob("dev/*") tran_data = pd.<

Jmeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量&#xff0c;相比于并发模式&#xff0c;更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS&#xff0c;我们可以把他理解为我们的TPS&#xff0c;我们就不…

解决Github上的README无法显示图片

首先感谢博主的思路&#xff1a;思路 最近写了点东西提交到git 发现本地能查看md里的图片用的相对路径&#xff0c;提交到github就看不见&#xff0c;并且发现不只是我自己的仓库看不见&#xff0c;其他人的我也看不见。那就有问题了 解决&#xff1a;正常使用相对路径&…

使用Tauri开发桌面应用

本文是对视频 Tauri入门教程[1]的学习与记录 Tauri官网[2] 对 node版本有要求 创建项目及目录介绍: 项目的目录结构如下 可以安装推荐的插件 执行npm run tauri build出错,根据 https://github.com/tauri-apps/tauri/issues/7430 执行 yarn add -D tauri-apps/cli && y…

C#Winform 打开文件浏览器

private void button1_Click(object sender, EventArgs e) {var f new OpenFileDialog();//f.Multiselect true; //多选if (f.ShowDialog() DialogResult.OK) {String filepath f.FileName;//G:\新建文件夹\新建文本文档.txtString filename f.SafeFileName;//新建文本文档…

设计模式 -- 工厂模式(Factory Pattern)

工厂模式&#xff1a;属于 创建型模 式&#xff0c;最常用的设计模式之一&#xff0c;提供了一种创建对象的最佳方式。 介绍 意图&#xff1a;定义一个创建对象的接口&#xff0c;让其子类自己决定实例化哪一个工厂类&#xff0c;工厂模式使其创建过程延迟到子类进行。主要解决…

设计模式:模板模式

目录 一、定义 二、场景 业务场景 Java源码中的应用 三、例子 四、优缺点 优点 缺点 一、定义 模板模式又叫模板方法模式&#xff0c;是指定义一个算法的骨架&#xff0c;也就是执行的步骤模板&#xff0c;然后由子类去实现其中一个或几个步骤。属于行为型设计模式。 二…

论信息系统项目的整体管理

论文题目 项目整体管理包括选择资源分配方案、平衡相互竞争的目标和方案&#xff0c;以及协调项目管理各知识领域之间的依赖关系。 请以“论信息系统项目的整体管理”为题进行论述&#xff1a; 1.概要叙述你参与管理过的信息系统项目 (项目的背景、项目规模、发起单位、…

Flink SQL处理回撤流(Retract Stream)案例

Flink SQL支持处理回撤流&#xff08;Retract Stream&#xff09;&#xff0c;下面是一个使用Flink SQL消费回撤流的案例&#xff1a; 假设有一个数据流&#xff0c;包含用户的姓名和年龄&#xff0c;希望计算每个姓名的年龄总和。 以下是示例代码&#xff1a; // 创建流执行…

华纳云:mysql无法添加或更新子行如何解决

当 MySQL 中出现无法添加或更新子行的问题时&#xff0c;可能有多种原因导致。以下是一些常见的解决方法和可能的原因&#xff1a; 外键约束问题&#xff1a; 如果你的表使用了外键约束&#xff0c;确保子行的引用键(外键)存在于父表中。如果没有&#xff0c;添加或更新子行可能…

js的File对象,Blob和file相互转换

示例 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1" /><title>js的File对象&#xff0c;Blob和file相互转换</title><…

Android BitmapFactory.decodeResource读取原始图片装载成原始宽高Bitmap,Kotlin

Android BitmapFactory.decodeResource读取原始图片装载成原始宽高Bitmap&#xff0c;Kotlin fun getOriginalBitmap(resId: Int): Bitmap {val options BitmapFactory.Options()options.inJustDecodeBounds true //只解析原始图片的宽高&#xff0c;不decode原始文件装载到内…

t-product的matlab实现

t-product是一个比较好的概念&#xff0c;相对应于矩阵中的乘法。 定义如下 这里的 circ(A),MatVec(b) 的定义分别如下 这么定义的原因是为了映射到FFT域里面去&#xff0c;简化计算。 上面的一段摘录说明&#xff1a;直接按照定义来计算&#xff0c;会耗费大量的计算资源。因…

LLm微调使用的数据集

https://baijiahao.baidu.com/s?id=1769124161629981325&wfr=spider&for=pc RefGPT:基于RefGPT生成大量真实和定制的对话数据集地址:https://github.com/ziliwangnlp/RefGPT数据集说明:包括RefGPT-Fact和RefGPT-Code两部分,其中RefGPT-Fact给出了5万中文的关于事实…

ATFX汇市:英国通胀率大降两个百分点,GBPUSD止步近两月高点

ATFX汇市&#xff1a;据英国国家统计局数据&#xff0c;英国10月CPI年率最新值4.6%&#xff0c;远低于前值6.7%&#xff0c;低于预期值4.8%&#xff0c;英国通胀率大降温&#xff0c;降幅高达2.1个百分点&#xff0c;远远超出市场预期。4.6%的通胀率是2021年10月以来最低值。主…