当前位置: 首页 > news >正文

【网络安全】本地文件包含及远程文件包含漏洞详解

一、文件包含漏洞概述
1.1 什么是文件包含

开发人员将需要重复调用的函数写入一个文件,对该文件进行包含时产生的操作。这样编写代码能减少冗余,降低代码后期维护难度。

保证网站整体风格统一:导航栏、底部footer栏等,把这些不会变的东西包含在一个文件中,可以保证整体效果的统一和代码量的减少。

1.2 漏洞产生原因

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

1.3 简单例子

上述例子并没有对filename进行过滤,这就导致了可能会上传一些敏感文件,产生文件包含漏洞

1.4 PHP中的文件包含函数

 

二、文件包含漏洞类型及利用

2.1 本地文件包含

本地文件包含(Local File Inclusion,LFI)漏洞是一种常见的安全漏洞,它允许攻击者通过应用程序的输入来包含服务器上的本地文件。这种漏洞通常发生在应用程序未能正确地清理或验证用户输入时,导致攻击者能够访问服务器上的敏感文件,如配置文件、源代码文件等。

2.2 本地文件漏洞包含利用方式:
  1. 直接文件路径引用:通过在URL或表单输入中直接指定文件路径,尝试访问如/etc/passwd等敏感文件。
  2. 利用“.”或“..”:通过使用“..”来遍历目录,访问上级目录中的文件。
  3. 利用空字节:在某些情况下,通过在文件名中插入空字节(%00或\x00),可以绕过对文件名的某些检查。
  4. 利用URL编码:通过URL编码特殊字符,如将../编码为%2e%2e/,来绕过简单的输入过滤。
  5. 利用PHP伪协议:在PHP中,可以通过伪协议(如php://filter)来读取文件内容。
  6. 利用服务器配置:如果服务器配置不当,可能允许执行某些特殊的文件操作,如通过expect://伪协议来执行程序。
  7. 利用文件包含漏洞读取远程文件:如果本地文件包含漏洞被限制为只允许包含本地文件,尝试利用远程文件包含(Remote File Inclusion,RFI)的技巧来间接包含远程文件。
2.3 远程文件包含漏洞

远程文件包含(Remote File Include, RFI)漏洞允许攻击者包含一个远程服务器上的文件,这通常是由于Web应用程序对用户输入过滤不严导致的。

2.4 远程文件包含漏洞利用方式:
  1. 利用不当配置:当服务器的php.ini配置中allow_url_include选项开启时,攻击者可以利用这一点包含远程服务器上的文件。这要求远程文件的后缀不是PHP,以避免解析冲突 7。
  2. 无限制远程文件包含:如果应用程序没有对包含的文件类型或来源进行限制,攻击者可以轻易地包含远程文件,并执行其中的代码 7。
  3. 有限制远程文件包含:在存在一些限制的情况下,例如只允许包含具有特定后缀的文件,攻击者可能需要使用一些技巧来绕过这些限制,例如使用URL编码或特殊字符 7。
  4. 利用PHP伪协议:PHP提供了多种伪协议,如php://inputdata://,这些可以用于读取或执行代码。例如,php://input可以读取POST请求的数据,而data://可以将文本、base64编码的字符串作为数据流 911。
  5. 利用日志文件:如果攻击者能够通过日志文件记录恶意请求,并且应用程序包含这些日志文件,那么攻击者可以执行日志中记录的PHP代码 9。
  6. 利用临时文件:在某些情况下,如果应用程序处理文件上传,攻击者可以利用临时文件的生成和删除之间的时间差来包含这些文件 9。
  7. 利用竞争条件:在某些情况下,如果应用程序在包含文件之前写入临时文件,攻击者可以利用时间差来覆盖该临时文件,从而包含恶意代码 9。
  8. 利用编码和URL技巧:攻击者可以使用URL编码或特殊字符来绕过输入过滤,例如使用%00截断或使用点号(.)进行路径遍历 911。
  9. 利用文件包含与改写文件:在某些情况下,如果攻击者能够控制包含的文件内容,并且应用程序允许写入文件,攻击者可以修改现有文件或创建新文件来包含恶意代码 11。
  10. 利用Session文件:如果应用程序使用Session存储用户信息,并且Session文件可被包含,攻击者可以利用这一点来执行恶意代码
三、文件包含漏洞危害及防御

相关文章:

【网络安全】本地文件包含及远程文件包含漏洞详解

一、文件包含漏洞概述 1.1 什么是文件包含 开发人员将需要重复调用的函数写入一个文件,对该文件进行包含时产生的操作。这样编写代码能减少冗余,降低代码后期维护难度。 保证网站整体风格统一:导航栏、底部footer栏等,把这些不…...

redis启动的三种方式

默认启动: # 默认的启动指令 redis-server 默认启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL C则Redis停止。不推荐使用。 //查看云服务器是否安装过redis redis-server -v//检查安装目录 which redis-server//查看redis进…...

手机怎么远程控制电脑屏幕?手机远程控制电脑方法分享

手机与电脑之间的互联互通变得越来越便捷。 无论是工作还是学习,有时我们需要在手机上远程控制电脑屏幕,以完成一些复杂的操作或查看电脑上的文件。 本文将详细介绍几种实用的手机远程控制电脑屏幕的方法,帮助读者轻松实现这一目标。 一、使…...

NET的全称、主要功能以及在计算机网络中的作用?

.NET是一个广泛的、全方位的平台,应用于开发网站、应用程式、网页应用程式和网络服务。以下是.NET的全称、主要功能以及在计算机网络中的作用: .NET的全称 .NET的全称实际上是Microsoft .NET Framework。它是微软公司推出的一种面向网络的开发框架&…...

LLM - 使用 HuggingFace + Ollama 部署最新大模型 (GGUF 格式 与 Llama 3.1)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141028040 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Ollama…...

如何实现Redis和Mysql中数据双写一致性

在我们的实际开发中,我们用到了redis缓存一些常用的数据(如热点数据)用来提高系统的吞吐量。 但是不可以避免的出现了数据的修改场景,这就导致了数据库中的数据和Redis中出现不一致性的情况。如何保证数据一致性就显得非常重要了&…...

three.js 模型高亮效果实现说明(结合react)

three.js react 实现鼠标移入模型高亮选中效果 使用EffectComposer和其附加的渲染效果Passes(如RenderPass和OutlinePass)来实现高级渲染效果。首先创建EffectComposer实例,并添加RenderPass和OutlinePass,最后在渲染循环中调用…...

入营测评题解

第一题&#xff1a;first 第二题&#xff1a;chengji 打擂台&#xff0c;每个数跟当前最大、最小值比较&#xff0c;维护当前最值即可。 #include<bits/stdc.h> using lllong long; using namespace std;const int N1e610;int n; int x;//1e9, ll最大9e18 ll maxn0,minn…...

制造知识普及(十)-- 常见的工业软件介绍

「 1. ERP」 企业资源计划&#xff08;enterprise resource planning&#xff0c;ERP&#xff09;是制造企业的核心管理软件。ERP系统的基本思想是以销定产&#xff0c;协同管控企业的产、供、销、人、财、物等资源&#xff0c;帮助企业按照销售订单&#xff0c;基于产品的制造…...

Windows系统设置网络IPv4和IPv6优先访问级

Windows系统设置网络IPv4和IPv6优先访问级 资源宝整理分享&#xff1a;www.httple.net 在数字化的世界中&#xff0c;我们离不开互联网&#xff0c;而互联网协议&#xff08;IP协议&#xff09;则扮演着至关重要的角色。IPv4曾是互联网的主要标准&#xff0c;但随着IP地址枯竭问…...

yolov8 剪枝 - DepGraph

2024年8月5 5000张图片&#xff0c;2个类别。 yolov8n 初始&#xff1a; 185 layers, 3151904 parameters, 31936 gradients, 8.7 GFLOPs 经过三次finetune后&#xff1a; 185 layers, 2327024 parameters, 31936 gradients, 6.6 GFLOPs 经过第四次fintune后&#xff1a; …...

【网络】套接字socket编程预备知识

1.源IP地址和目的IP 计算机网络中的源地址和目的地址是用来标识网络中的不同主机的。 源地址是指发送数据包的主机的地址&#xff0c;而目的地址则是指接收数据包的主机的地址&#xff0c;在数据包传输过程中&#xff0c;每经过一个路中器感交换机&#xff0c;都会根据目的地址…...

【学习笔记】Day 8

写在开头&#xff1a; 最近老板突然提出一个全新的组会主题&#xff0c;是关于 “最近我犯的傻”&#xff0c;其目的在于提供乐子的同时引以为戒。本来我还在愁到底去哪里找干的啥事儿&#xff0c;结果今天直接拉了个大的。什么叫无心插柳柳成荫啊&#xff0c;悲。 一…...

springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice

一、 背景 因为项目中需要使用word转pdf功能&#xff0c;因为转换速度原因&#xff0c;最后选用了libreoffice&#xff0c;原因及部署请参考 linux ubuntu环境安装libreoffice&#xff0c;word转pdf 远程调用的话可选docker部署&#xff0c;请看2.3.1 二、springboot整合libr…...

从入门到精通:大学生编程技能提升全攻略

文章目录 每日一句正能量前言编程语言选择编程语言选择&#xff1a;为新手导航Python&#xff1a;初学者的友好伙伴JavaScript&#xff1a;Web开发的核心Java&#xff1a;企业级应用的经典C&#xff1a;系统编程的基石Ruby&#xff1a;优雅高效的编程Swift&#xff1a;iOS开发的…...

C# .NET Framework的特殊委托

C# .NET Framework的特殊委托 .NET Framework中定义了几种特殊的委托类型&#xff0c;以简化委托的使用。以下是一些常用的特殊委托类型&#xff1a; Predicate<T> 这是一个返回布尔值的委托&#xff0c;接受一个类型为T的参数。常用于定义过滤条件。 using System; …...

C# 判断电脑是否联网

项目中连接webAPI需要判断是否联网&#xff0c;故找到这个方法&#xff0c;不需要引用任何dll&#xff0c;代码复制一下&#xff0c;直接使用。wininet.dll是系统自带的 public void Initial(){try{ if (IsNetworkConnected){SvMaster.Log.WriteInfo("网络…...

爬虫解析代码结构

在设计中加入一个顶层接口是有益的&#xff0c;特别是当您希望实现统一的接口来处理所有类型的排行榜数据时。这样做可以提供更好的灵活性和扩展性&#xff0c;同时保持代码的整洁和易于维护。 设计概述 接口: 定义一个 RankingDataCollector 接口&#xff0c;它定义了所有数…...

day 23 进程间通信—管道

注意事项&#xff1a; 1、如果管道中至少有一个写端&#xff1a; 如果管道中有数据,直接读出 如果管道中没有数据&#xff0c;会阻塞等待直到有数据写入后读出 2、如果管道中没有写端&#xff1a; 如果管道中有数据&#xff0c;直接…...

Python酷库之旅-第三方库Pandas(073)

目录 一、用法精讲 296、pandas.Series.dt.as_unit方法 296-1、语法 296-2、参数 296-3、功能 296-4、返回值 296-5、说明 296-6、用法 296-6-1、数据准备 296-6-2、代码示例 296-6-3、结果输出 297、pandas.Series.dt.days属性 297-1、语法 297-2、参数 297-3、…...

如何在3分钟内免费解决Windows查看iPhone照片的终极难题:HEIC缩略图完全指南

如何在3分钟内免费解决Windows查看iPhone照片的终极难题&#xff1a;HEIC缩略图完全指南 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnai…...

抖音音频批量提取:5分钟学会免费下载抖音原声和视频

抖音音频批量提取&#xff1a;5分钟学会免费下载抖音原声和视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

基于Vue3的前端界面开发:FLUX.1-dev图像生成平台搭建

基于Vue3的前端界面开发&#xff1a;FLUX.1-dev图像生成平台搭建 1. 引言 想象一下&#xff0c;你刚拿到一个强大的AI图像生成模型FLUX.1-dev&#xff0c;它能根据文字描述生成高质量图片&#xff0c;还能进行智能编辑。但如何让这个"大脑"拥有一个友好的"面孔…...

卷积神经网络(CNN)特征与大语言模型融合:Phi-4-mini-reasoning的多模态理解案例

卷积神经网络&#xff08;CNN&#xff09;特征与大语言模型融合&#xff1a;Phi-4-mini-reasoning的多模态理解案例 1. 当视觉遇见语言&#xff1a;一种创新的多模态方案 想象一下&#xff0c;当你看到一张照片时&#xff0c;不仅能识别其中的物体&#xff0c;还能推测拍摄场…...

Wan2.2-I2V-A14B部署指南:Docker容器化封装与K8s集群部署思路

Wan2.2-I2V-A14B部署指南&#xff1a;Docker容器化封装与K8s集群部署思路 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像&#xff0c;基于RTX 4090D 24GB显存环境深度调优。这个镜像最大的特点是开箱即用&#xff0c;内置了完整的运行环境…...

AI绘画新手必看:用LiuJuan Z-Image Generator,实时查看GPU占用防卡顿

AI绘画新手必看&#xff1a;用LiuJuan Z-Image Generator&#xff0c;实时查看GPU占用防卡顿 1. 为什么GPU监控对AI绘画如此重要&#xff1f; 想象一下这样的场景&#xff1a;你精心构思了一幅画面&#xff0c;输入了完美的提示词&#xff0c;满怀期待地点击生成按钮&#xf…...

OpenClaw学习助手:千问3.5-9B自动整理学习笔记教程

OpenClaw学习助手&#xff1a;千问3.5-9B自动整理学习笔记教程 1. 为什么需要AI学习助手&#xff1f; 去年备考专业认证时&#xff0c;我每天需要处理上百页PDF资料。手动整理重点不仅耗时&#xff0c;还经常遗漏关键信息。直到发现OpenClaw千问3.5-9B的组合&#xff0c;才真…...

lift off工艺中电子束蒸发镀膜的优势与磁控溅射的局限性对比

1. 电子束蒸发与磁控溅射的基本原理对比 在半导体制造领域&#xff0c;lift off工艺是一种常用的图形化金属层制备方法。简单来说&#xff0c;就是先在晶圆表面涂覆光刻胶并曝光显影形成图案&#xff0c;然后沉积金属薄膜&#xff0c;最后通过化学溶剂剥离光刻胶及附着在其上的…...

2024丨时间序列预测(Time Series Prediction)前沿技术解析与论文精要

1. 2024年时间序列预测技术全景图 时间序列预测就像给数据装上"时光望远镜"&#xff0c;让我们能够窥见未来的趋势和变化。从股票价格到天气变化&#xff0c;从设备故障预警到疫情传播预测&#xff0c;这项技术正在深刻改变各行各业的决策方式。2024年&#xff0c;这…...

PCL快速部署指南:Ubuntu20下APT安装与版本管理技巧

1. 为什么选择APT安装PCL&#xff1f; 第一次接触点云库PCL的朋友&#xff0c;可能会被它的依赖关系吓到。我自己刚开始折腾的时候&#xff0c;光是解决VTK、FLANN这些依赖项的版本冲突就花了两天时间。后来发现&#xff0c;对于大多数应用场景来说&#xff0c;直接用Ubuntu的…...