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

server/2024/9/23 10:23:56/
一、文件包含漏洞概述
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文件可被包含,攻击者可以利用这一点来执行恶意代码
三、文件包含漏洞危害及防御


http://www.ppmy.cn/server/99304.html

相关文章

docker容器常用指令,dockerfile

docker:容器,主要是解决环境迁移的问题,将环境放入docker中,打包成镜像。 docker的基本组成:镜像(image),容器(container),仓库(repository)。镜像相当于类,容器相当于类的实例对象…

直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响

目录 直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响 一、Vue 2的底层原理 二、Vue 3的底层原理 三、基础类型性能消耗 四、数据变化比较原理 1、Vue 2 中的引用类型比较 2、Vue 3 中的引用类型比较 3、字符串比较(基础类型比较&#xf…

qt-05停靠窗口QDockWidget

停靠窗口QDockWidget mainwindow.cpp二级目录三级目录 mainwindow.cpp #include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {setWindowTitle(QObject::tr("DOckwindows"));QTextEdit *te new QTextEdit(this);//定义…

[Qt][QWidget]详细讲解

目录 1.概述2.QWidget核心属性1.简介2.核心属性概览 3.QWidget常用属性1.enabled2.geometry1.是什么?2.Window Frame的影响3.相关API4.注意 3.windowTitile4.windowIcon5.windowOpacity6.cursor8.font9.toolTip10.focusPolicy11.styleSheet 1.概述 Widget是Qt中的核…

SpringBoot加载dll文件示例

1、将动态库放在resource文件目录下 2、编写相关加载逻辑 import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap;/*** Description: 加载动态库 .dll文件* author: Be.insighted* c…

Maven学习笔记

Maven 一、Maven简介 1. 什么是Maven ​ maven [ˈmeɪvn] 专家、内行 ​ Apache Maven 是一个软件项目管理和构建工具,可以帮助创建和管理项目 ​ 基于项目对象模型(POM:Project Object Model)的概念,帮助开发者…

AI智能名片小程序源码在付费媒体与企业营销策略中的创新应用

摘要:在数字化浪潮的推动下,付费媒体已成为企业营销战略的核心组成部分。从视频流媒体平台到社交媒体,企业需不断探索新颖且高效的营销手段以吸引目标受众并促进业务增长。AI智能名片小程序源码,作为融合人工智能、小程序技术与传…

git配置忽略文件后未生效

git在.gitignore文件配置 忽略文件后提交未生效 一、确保 .gitignore 文件中包含正确的规则: 忽略文件夹和文件 unpackage/ unpackage/cache/ unpackage/cache/wgt/ unpackage/dist/ 二、Git 缓存可能会导致忽略规则没有即时生效。可以使用以下命令清理缓存 gi…