No.24 笔记 | WEB安全 - 任意文件包含漏洞 part 6

在 Web 安全领域中,任意文件包含漏洞是一种较为常见且具有潜在危险性的漏洞类型。本文将详细介绍任意文件包含漏洞的概念、原理、分类、利用方法以及防护措施,帮助新手小白更好地理解和防范这一漏洞。😃

一、概念

  1. 包含的定义
    开发人员为了提高代码的复用性,常常将重复使用的函数写在单个文件中,在需要使用这些函数时,直接调用此文件。这个过程就称为包含。
  2. 文件包含漏洞产生原因
    在通过 PHP 函数引入文件时,如果传入的文件名未经过合理校验,就可能导致操作了预想之外的文件。这种情况下,可能会出现意外的文件泄露,甚至恶意的代码注入。
  3. 漏洞分类
    • 本地文件包含(LFI):包含本地主机上的文件,文件名称可以是相对路径或者绝对路径。
    • 远程文件包含(RFI):包含互联网上的文件,文件名称为 URL 格式。可以通过查看 php.ini 中是否开启allow_url_include来区分,如果开启,则可能包含远程文件。

二、相关函数

  1. include():当代码执行到这个函数时,才将文件包含进来。如果发生错误,只给出一个警告,然后继续向下执行。
  2. include_once():功能和include()相同,但是如果重复调用同一文件,程序只调用一次。
  3. require():程序一执行就立即调用脚本。如果执行发生错误,会输出错误信息并终止脚本运行。
  4. require_once():功能与require()相同,重复调用同一文件时,程序也只调用一次。

三、特征与检测方法

  1. 特征
    常见的包含形式如?page=a.php?home=b.html?file=content等。
  2. 检测方法
    可以尝试访问如?file=../../../../etc/passwd?page=file:///etc/passwd等路径来检测是否存在漏洞。如果能够成功读取到系统文件的内容,那么很可能存在文件包含漏洞。

四、利用方法

  1. 本地文件包含利用
    • 读取系统敏感信息
      • Windows 系统
        如:
        C:\boot.ini(可查看系统版本)
        C:\windows\system32\inetsrv\MetaBase.xml(IS 配置文件)
        C:\windows\repair\sam(windows 初次安装的密码)
        C:\program Files\mysq|\my.ini(Mysql 配置信息)
        C:\program Files\mysq|\data\mysq|\user.MYD(Mysql root)
        C:\windows\php.ini(php 配置信息)
      • Linux 系统
        如:
        /etc/passwd(linux 用户信息)
        /usr/local/app/apache2/conf/httpd.conf(apache2 配置文件)
        /usr/local/app/php5/lib/php.ini(php 配置文件)
        /etc/httpd/conf/httpd.conf(apache 配置文件)
        /etc/my.cnf(Mysql 配置文件)
    • 配合图片马获取 shell:通过文件包含漏洞配合图片马可以获取服务器的 shell,从而进一步控制服务器。
    • 常用文件路径:介绍了 apache + Linux、apache + win2003 等不同环境下的日志默认路径和配置文件路径。
    • 通过绝对路径和相对路径读取配置文件:示例演示了如何使用绝对路径和相对路径读取httpd.conf等配置文件。
  2. 远程文件包含利用
    如果 php.ini 的配置选项allow_url_includeallow_url_fopen都为ON,就可以加载远程文件。攻击者可以利用此漏洞直接执行任意命令。
  3. 伪协议利用
    • file://:用于访问本地文件系统,不受allow_url_fopenallow_ulr_include影响,使用方法为file://绝对路径
    • php://:可以访问各个输入 / 输出流,不受allow_url_fopenallow_url_include影响。通过php://filter参数可读取文件,还介绍了相关的筛选过滤应用和实例。
    • php://input:可以访问请求的原始数据的只读流,将 post 请求中的数据作为 PHP 代码执行,需要开启allow_url_include
    • data://:读取数据流且执行,自 PHP5.2.0 起有效,all_url_fopenallow_url_include需要都开启才能使用。
    • zip://bzip2://zlib://:均属于压缩流,可以访问压缩文件中的子文件,不受all_url_fopenallow_url_inclued影响。

五、防护措施

  1. 包含文件的参数过滤
    • 文件名过滤:可以采用白名单或者黑名单过滤。白名单只允许特定的文件被包含,黑名单则禁止特定的文件被包含。
    • 不使用动态变量进行包含操作,设置字典等静态处理:避免使用用户输入的动态变量进行文件包含操作,而是采用静态的字典或者预定义的文件列表进行处理。
    • 文件名后缀固定:限制被包含文件的后缀,只允许特定类型的文件被包含。
  2. 路径限制
    • 目录限制:在用户提交的变量前增加固定的路径,限制用户可调用的目录范围。
    • 目录回退符过滤:避免回退符生效导致路径变化,防止用户通过回退符访问到不应该被访问的目录。
  3. 中间件的安全配置
    • PHP 版本小于 5.4 在 php.ini 中设置 magic_quotes_gpc=on:开启这个选项可以对用户输入的数据进行一定的过滤和转义,增加安全性。
    • 限制访问区域:通过 php.ini 中设置open_basedir限制用户访问文件的活动范围,apache 也有相关配置。
    • 设置访问权限:限制当前中间件所在用户的访问权限,避免不必要的文件被访问。

总之,任意文件包含漏洞是一种需要引起高度重视的 Web 安全漏洞。开发人员和管理员应该采取有效的防护措施,以确保 Web 应用的安全性。同时,用户也应该提高安全意识,避免在不可信的网站上输入敏感信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

森利威尔SL2516D 耐压60V内置5V功率MOS 支持PWM LED恒流驱动器芯片

一、基本特性 型号:SL2516D封装:ESOP8工作频率:140kHz驱动MOS管:内置 二、电气特性 输入电压范围:8V~100V(注意,虽然问题中提到耐压60V,但根据官方信息,其实际耐压范围…

Vscode配置CC++编程环境的使用体验优化和补充说明

文章目录 快速编译运行👺code runner插件方案Code Runner Configuration 直接配置 相关指令和快捷键默认task配置和取消默认 配置文件补充介绍(可选 推荐阅读)😊使用vscode预置变量和环境变量环境变量的使用使用环境变量的好处环境变量可能引起的问题 检…

Linux中rpm包和yum仓库介绍及入门配置

rpm包概述 RPM Package Manager,RPM包管理器 由红帽公司提出,适用于Rocky Linux、Redhat、SUSE等系列操作系统 建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系 RPM包 文件名特征 软件名-版本信息.操作系统.硬件架/构.r…

L 波段射频信号采集回放系统

L 波段采集回放系统是一套便携式模拟数字采集系统,该系统主要由射频输入模块、中频接收回放模块、FPGA 信号处理单元、服务器系统和存储单元等组成。 L 波段采集回放系统的功能主要用于对 950MHz〜2150MHz 模拟量射频信号的采集、存储记录与回放;采集与…

百度如何打造AI原生研发新范式?

👉点击即可下载《百度AI原生研发新范式实践》资料 2024年10月23-25日,2024 NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。本届大会邀请了工业界和学术界的专家,优秀的工程师和产品经理,以及其它行…

Unity3D 开发教程:从入门到精通

Unity3D 开发教程:从入门到精通 Unity3D 是一款强大的跨平台游戏引擎,广泛应用于游戏开发、虚拟现实、增强现实等领域。本文将详细介绍 Unity3D 的基本概念、开发流程以及一些高级技巧,帮助你从零基础到掌握 Unity3D 开发。 目录 Unity3D…

Vue3和Springboot前后端简单部署

一、Vue3Springboot 的前后端简单部署 (在win下面部署) 1、前端实现部署 思想: 前端打包项目后、放到nginx中进行部署 1、nginx 安装 和 解压 1、下载 nginx.zip win版本 解压就可以 2、解压后、启动程序 3、访问 nginx 欢迎页面 http://localhost/ 80 端口 可以省略 直接访…

中仕公考:2025四川省考今日报名!

2025年四川省考今日开始报名啦!准备参加考试的广大考生们不要错过报名时间哦! 报名时间: 2024年11月1日至7日上午8:00 资格审查: 2024年11月1日至8日上午8:00 确认缴费: 2024年11月9日上午8:00 准考证打印&#xff…

css 同时实现渐变色和文字阴影(Vue 3 + TypeScript)

UI效果 渐变效果 直接添加text-shadow属性&#xff0c;发现阴影覆盖在了字体之上 解决&#xff1a; 利用::after伪类&#xff0c;将字体的阴影加在伪类之上。 <template><div class"app"><h1 ref"h1Ref">{{ title }}</h1></d…

从美颜SDK到实时视频美颜平台:开发美颜系统的技术解析

今天&#xff0c;笔者将围绕美颜SDK的基本功能、实时视频美颜平台的架构设计&#xff0c;以及实现美颜系统的关键技术进行深入解析。 一、美颜SDK的基础功能 美颜SDK&#xff08;Software Development Kit&#xff09;是实现美颜效果的核心工具包&#xff0c;它通常包含一系列…

【Linux】用户权限管理:创建受限用户并配置特定目录访问权限

本文详细介绍了如何在 Linux 系统中创建一个名为 agent 的新用户&#xff0c;并限制其在特定目录下的权限。通过使用 useradd 命令创建用户&#xff0c;并使用 usermod 命令将新用户添加到现有用户组中&#xff0c;确保其具有适当的权限。接着&#xff0c;通过 chown 和 chmod …

获英伟达二次投资!AI制药公司Terray完成1.2亿美元融资,构建全球最大化学数据集

近日&#xff0c;AI 制药公司 Terray Therapeutics 宣布完成 1.2 亿美元 B 轮融资&#xff0c;本轮融资将用于推进其内部免疫学项目的临床试验&#xff0c;并进一步完善公司的生成式 AI 平台 tNova。 据悉&#xff0c;本次 Terray 的融资由英伟达风险投资部门 NVentures 和新投…

LeetCode 热题 100之二叉树

1.二叉树的中序遍历 思路分析1&#xff08;递归&#xff09;&#xff1a;通过一个辅助函数 inorderHelper&#xff0c;递归地访问左子树、根节点和右子树&#xff0c;实现中序遍历。 具体实现代码&#xff08;详解版&#xff09;&#xff1a; class Solution { public:void i…

LLC电路 - 变压器匝比改变时的连锁反应

1.谐振电路等效电阻Rac 等效电阻从负载一侧映射过来&#xff0c;假定负载电阻为R&#xff0c;功率计算公式为U_out^2/R&#xff0c;则理想变压器因为Uin N*Uout&#xff0c;所以等效电阻的阻值变化是平方关系&#xff1a;Rref K*R*N^2.具体的计算公式为&#xff1a; Vp为变压…

Podman+Minikube:MacBook 运行 Kubernetes 最佳实践

简介 在现代软件开发中&#xff0c;Kubernetes作为容器编排的事实标准&#xff0c;已成为云原生应用的核心组成部分。对于开发者来说&#xff0c;在本地环境中搭建和测试Kubernetes集群显得尤为重要。而在这方面&#xff0c;结合MacBook、Podman和Minikube的组合&#xff0c;提…

【制造业&盒子】食品物品检测系统源码&数据集全套:改进yolo11-MultiSEAMHead

改进yolo11-efficientViT等200全套创新点大全&#xff1a;食品物品检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或…

性价比高的宠物净化器推荐!铲屎官们双十一不容错过的必备好物

秋天到了&#xff0c;我家毛孩子又开始爆毛&#xff01;一点都没有夸张&#xff0c;不仅家里到处都是它掉的毛&#xff0c;而且它自己也“膨胀”起来&#xff0c;身上都是脱落的毛发。 有时候没来得及清理&#xff0c;风一吹那些浮毛就飘到空气当中&#xff0c;呼吸的时候都感…

创建线程池时为什么不建议使用Executors进行创建

有没有想过为什么在创建线程池的时候我们一般都是通过ThreadPoolExecutor来创建线程池&#xff0c;很少使用Executors来创建线程池&#xff1f; 实践出真知&#xff0c;让我们具体在代码里面看看是什么原因~ 我们先用Executors来创建一个固定线程的线程池&#xff1a; Testpub…

基于STM32+华为云IOT设计的大棚育苗管理系统

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 模块的技术详情介绍【1】NBIOT-BC26模块【2】MQ135传感器【4】SHT30传感器【5】B1750传感器 二…

树莓集团:智慧园区的绿色生态与可持续发展

智慧园区作为现代信息技术与园区管理深度融合的新兴概念&#xff0c;已然成为当下备受瞩目的发展热点。简单来讲&#xff0c;它借助各类智能技术手段&#xff0c;全方位提升园区的管理、服务效率以及居住体验&#xff0c;绝非仅仅局限于一个物理空间&#xff0c;而是打造出一个…