PHP伪协议漏洞详解(附案例讲解)

文章目录

  • 引言
  • 什么是PHP伪协议
  • 常见的PHP伪协议
  • PHP伪协议漏洞原理
  • 实际案例分析
      • 案例一:利用`php://filter`读取敏感文件源码
      • 案例二:利用`zip://`协议执行压缩包中的恶意代码
      • 案例三:利用`data://`协议执行任意代码

引言

PHP伪协议是PHP中一种用于访问和操作不同类型数据资源的特殊机制。这些协议不仅限于文件系统操作,还包括网络流、压缩流等多种类型。然而,在PHP开发中,伪协议若被不当使用,可能会引发严重的安全漏洞,如敏感信息泄露、任意文件包含等。

什么是PHP伪协议

PHP伪协议,也称为封装协议,是PHP定义的一种特殊访问资源的方法。它们允许开发者在不直接操作物理文件的情况下,通过URL或其他标识符来访问和操作数据。这些协议常用于文件操作函数(如fopen(), file_get_contents(), include()等)中,以访问不同类型的资源。

常见的PHP伪协议

PHP支持多种伪协议,常见的包括:

  1. file://: 用于访问本地文件系统。
  2. http://,https://: 用于访问HTTP(s)网址。
  3. ftp://: 用于访问FTP(s) URLs。
  4. php://: 访问各个输入/输出流(I/O streams),包括php://inputphp://filter等。
  5. data://: 数据流封装器,允许将数据作为文件来访问。
  6. zip://,bzip2://,zlib://: 访问压缩文件中的子文件。
  7. phar://: 用于访问PHP归档文件。

PHP伪协议漏洞原理

在PHP开发中,如果开发者没有正确过滤用户输入,攻击者可以利用伪协议构造恶意URL,通过文件包含、文件读取等操作,访问服务器上的敏感文件或执行任意代码。

实际案例分析

案例一:利用php://filter读取敏感文件源码

场景描述
假设有一个Web应用程序中存在一个文件包含漏洞,攻击者可以通过URL参数控制包含的文件。应用程序的源代码可能如下所示:

<?php  
$file = $_GET['page'];  
include($file . '.php');  
?>

攻击方式
攻击者可以构造一个特殊的URL,利用**php://filter**伪协议来读取服务器上的敏感文件源码,而不是直接执行该文件。例如:

http://example.com/vulnerable.php?page=php://filter/read=convert.base64-encode/resource=config

这个请求会导致config.php文件的内容被Base64编码后输出到页面上。攻击者随后可以对编码后的内容进行解码,以获取config.php文件的原始源码。

案例二:利用zip://协议执行压缩包中的恶意代码

场景描述
在某些情况下,Web应用程序可能允许用户上传压缩文件,并在服务器端包含这些文件中的某个脚本执行。如果应用程序没有正确验证上传文件的类型或内容,攻击者可以利用zip://伪协议来执行压缩包中的恶意代码
攻击方式

  1. 攻击者首先创建一个包含恶意PHP代码的ZIP文件,例如malicious.zip,其中包含一个名为shell.php的恶意脚本。
  2. 然后,攻击者将ZIP文件的后缀名更改为允许上传的类型,如.jpg,并上传至服务器。
  3. 一旦文件被上传,攻击者可以构造一个URL,利用zip://伪协议来包含并执行ZIP文件中的恶意脚本。例如:
http://example.com/include.php?file=zip://path/to/malicious.jpg%23shell.php

注意:URL中的%23#字符的URL编码,用于指定ZIP文件内的子文件。

案例三:利用data://协议执行任意代码

场景描述
在某些配置下(即allow_url_fopenallow_url_include均被启用),攻击者可以利用**data://**伪协议来执行任意PHP代码data://伪协议允许将数据作为文件来访问,攻击者可以构造一个包含PHP代码的data URL,并通过文件包含漏洞执行它。
攻击方式
攻击者可以构造一个特殊的URL,如下所示:

http://example.com/vulnerable.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==

这里的Base64编码字符串解码后是<?php phpinfo(); ?>,即执行phpinfo()函数的PHP代码。如果服务器的配置允许,这段代码将被执行,并显示PHP的配置信息。

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

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

相关文章

协作新选择:即时白板在线白板软件分享

在团队合作中&#xff0c;产品经理扮演着至关重要的角色&#xff0c;他们不仅是产品与用户之间的纽带&#xff0c;更是产品性能和用户需求的桥梁。他们需要深入参与产品的研发过程&#xff0c;并与研发团队保持紧密的沟通。因此&#xff0c;产品经理需要一款高效的协作工具来提…

arthas源码刨析:arthas 命令粗谈(3)

文章目录 dashboardwatchretransform 前面介绍了 arthas 启动相关的代码并聊了聊怎么到一个 shellserver 的建立。 本篇我们来探讨一下几个使用频次非常高的命令是如何实现的。 dashboard 想看这个命令的主要原因是编程这些年来从来没有开发过 terminal 的这种比较花哨的界面&a…

SpringBoot集成kafka-获取生产者发送的消息(阻塞式和非阻塞式获取)

说明 CompletableFuture对象需要的SpringBoot版本为3.X.X以上&#xff0c;需要的kafka依赖版本为3.X.X以上&#xff0c;需要的jdk版本17以上。 1、阻塞式&#xff08;等待式&#xff09;获取生产者发送的消息 生产者&#xff1a; package com.power.producer;import org.ap…

【html+css 绚丽Loading】 000014 三元波动盘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

JVM系列--初始JVM

根据《黑马程序员JVM虚拟机入门到实战全套视频教程》整理 1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步…

书生大模型实战营第三期基础岛第二课——8G 显存玩转书生大模型 Demo

8G 显存玩转书生大模型 Demo 基础任务进阶作业一&#xff1a;进阶作业二&#xff1a; 基础任务 使用 Cli Demo 完成 InternLM2-Chat-1.8B 模型的部署&#xff0c;并生成 300 字小故事&#xff0c;记录复现过程并截图。 创建conda环境 # 创建环境 conda create -n demo pytho…

[Meachines] [Easy] Legacy nmap 漏洞扫描脚本深度发现+MS08-067

信息收集 IP AddressOpening Ports10.10.10.4TCP:135,139,445 $ nmap -p- 10.10.10.4 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows n…

Java二十三种设计模式-责任链模式(17/23)

责任链模式&#xff1a;实现请求处理的灵活流转 引言 在这篇博客中&#xff0c;我们深入探讨了责任链模式的精髓&#xff0c;从其定义和用途到实现方法&#xff0c;再到使用场景、优缺点、与其他模式的比较&#xff0c;以及最佳实践和替代方案&#xff0c;旨在指导开发者如何…

SAP BW:QUERY数据结果写入ADSO

作者 idan lian 如需转载备注出处 如果对你有帮助&#xff0c;请点赞收藏~~~ 需求背景 客户基于QUERY进行报表展示&#xff0c;现需迁移到永洪报表平台&#xff0c;query中的变量参数&#xff0c;公式等无法直接生成视图&#xff0c;query相对复杂&#xff0c;不想直接在视图…

笔记mybatisplus

MP入门 Mybatis-Plus&#xff08;简称MP&#xff09;是一个Mybatis的增强工具&#xff0c;在Mybatis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 Mybatis-Plus已经封装好了大量增删改查的方法&#xff0c;程序员只需要继承BaseMapper就可以使用这些方法…

Linux阿里云服务器,利用docker安装EMQX

第一步&#xff0c;给云服务器docker进行加速 阿里云搜索“镜像加速器”&#xff0c;找到下面这个菜单&#xff0c;点进去 然后找到镜像工具下的镜像加速器 把这个加速器地址复制 然后在自己的云服务器中&#xff0c;找到docker的文件夹 点击json配置文件 把地址修改为刚刚…

如何将LaTeX数学公式嵌入到PowerPoint中

如何将LaTeX数学公式嵌入到PowerPoint中 简介 在学术演示或技术报告中&#xff0c;清晰且专业地展示数学公式是至关重要的。PowerPoint虽然提供了一些基本的公式编辑功能&#xff0c;但如果你需要更复杂或格式严格的公式&#xff0c;使用LaTeX生成公式并嵌入到PPT中是一个极佳…

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

目录 一、用法精讲 391、pandas.Series.hist方法 391-1、语法 391-2、参数 391-3、功能 391-4、返回值 391-5、说明 391-6、用法 391-6-1、数据准备 391-6-2、代码示例 391-6-3、结果输出 392、pandas.Series.to_pickle方法 392-1、语法 392-2、参数 392-3、功能…

KT来袭,打造沉浸式体验的聚合性web3应用平台

随着步入 2024&#xff0c;漫长的区块链熊市即将接近尾声。纵观产业发展&#xff0c;逆流而上往往会是彰显品牌市场影响力和技术实力的最佳证明。在这次周期中&#xff0c;一个名为KT的web3.0聚合平台吸引了市场关注&#xff0c;无论在市场层面还是技术层面&#xff0c;都广泛赢…

听劝❗用AI做职场思维导图仅仅需要几秒钟啊

本文由 ChatMoney团队出品 嘿&#xff0c;各位职场朋友们 是不是常常对着密密麻麻的笔记感到焦虑呢&#xff1f; 想整理却无从下手&#xff1f; 别怕&#xff0c;ChatmoneyAI知识库来拯救你的整理困难症啦&#xff01; 咱们都知道&#xff0c;思维导图是职场中必备的神器 …

zoom 会议机器人web例子

一、需要创建zoom app&#xff0c;创建及配置参考&#xff1a;Zoom会议机器人转写例子-CSDN博客 这里直接使用zoom-recall的配置。 二、需要生成签名&#xff0c;参数为&#xff1a;zoom-recall中的Client ID和Client Secret 1、git clone https://github.com/zoom/meetings…

【PHP入门教程】PHPStudy环境搭建+composer创建项目

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 Composer安装 Composer&#xff1a;安装途中报错解决&#xff1a;初始化项目创建文件最终文件目录Compo…

微服务:配置管理和配置热更新

参考&#xff1a;黑马程序员之微服务 &#x1f4a5; 该系列属于【SpringBoot基础】专栏&#xff0c;如您需查看其他SpringBoot相关文章&#xff0c;请您点击左边的连接 目录 一、引言 二、配置共享 1. 添加共享配置到nacos &#xff08;1&#xff09;jdbc的共享配置 shared…

设计模式之Decorator装饰者、Facade外观、Adapter适配器(Java)

装饰者模式 设计模式的基本原则&#xff0c;对内关闭修改。 Decorator Pattern&#xff0c;装饰者模式&#xff0c;也叫包装器模式(Wrapper Pattern)&#xff1a;将一个对象包装起来&#xff0c;增加新的行为和责任。一定是从外部传入&#xff0c;并且可以没有顺序&#xff0…

望繁信科技入选2024年第3批上海市高新技术成果转化项目名单

近日&#xff0c;上海望繁信科技有限公司&#xff08;以下简称“望繁信科技”&#xff09;凭借其自主研发的“数字北极星流程挖掘分析软件”项目&#xff0c;成功入选2024年第3批上海市高新技术成果转化项目名单。这一殊荣根据《上海市高新技术成果转化项目认定办法》&#xff…