【web安全】——文件包含漏洞

2023-11-06

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:
一切为了她​​​​​​​
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:可后来,除了梦以外的地方,我再也没有见过你

目录

一:初识文件包含漏洞

1.简析文件包含

2.文件包含漏洞

二:常见的文件包含函数

三:文件包含漏洞分类 

1、本地文件包含

2、远程文件包含漏洞

四:通过php伪协议进行包含

1、通过file://包含 

[1]、条件:     

2、通过php://包含

[1]、条件:     

[2]、作用:   

3.通过Zip:// & zlib:// 协议包含 

[1]、条件:  

[2]、作用:   

4.data://协议包含

[1]、条件:     

[2]、作用:

[3]、用法:

 5.phar://协议包含: 

[1]、条件:   


一:初识文件包含漏洞

1.简析文件包含

 在程序员开发过程中,通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需在此编写,这种调用文件的过程一般被称为文件包含

2.文件包含漏洞

 随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过就造成了文件包含漏洞。

二:常见的文件包含函数

1、include()
当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时之给出一个警告,然后继续向下执行。

2、include_once()
功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次

3、require()
Require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。

4、require_once()
功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。

5、highlight_file()、show_source()
函数对文件进行语法高亮显示,通常能看到源代码

6、readfile()、file_get_contents()、
函数读取一个文件,并写入到输出缓冲

7、fopen()
打开一个文件或者url

几乎所有的脚本语言中都提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP\ASP\ASP.NET程序中非常少,甚至没有文件包含漏洞的存在。 

三:文件包含漏洞分类 

1、本地文件包含

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

2、远程文件包含漏洞

本地文件包含和远程文件包含造成漏洞的原因是一样的,

当php.ini 中的配 置选项allow_url_fopen和allow_url_include为ON的话,则包含的文件可以 是第三方服务器中的文件,这样就形成了远程文件包含漏洞。

所以远程文件包含条件:     需要满足两个条件在php.ini中。当php.ini 中的配置选项  

 allow_url_fopen:on   

 allow_url_include:on 

四:通过php伪协议进行包含

PHP伪协议事实上就是PHP支持的协议与封装协议

1、File://          -- 访问本地文件系统 
2、http://          --访问http(s)网址 
3、Phar://           --PHP归档 
4、Php://          --访问各个输入/输出流 
5、Zlib://          --压缩流 
6、Data://          --数据
7、Glob://   		--查找匹配的文件路径模式
8、ftp://   		--访问ftp(s)URLs
9、ssh2:// 		--Secure Shell 2
10、rar:// 		--RAR
11、ogg:// 		--音频流
12、expect:// 		--处理交互式的流

1、通过file://包含 

[1]、条件:     

(1)    allow_url_fopen:off/on 都可以     

(2)     allow_url_include:off/on都可以 [2]、作用:     用于访问本地文件系统,通常用于读取本地文件而且不会收到allow_url_fopen和allow_url_include的影响。     在include()/require()/include_once()/require_once()参数可控的情况下,如果导入非.php的文件,则仍按照php语法进行解析,因为这个是include()函数决定的。 

2、通过php://包含

[1]、条件:     

(1)allow_url_fopen:off/on都可以     

(2)allow_url_include: 仅php://input 、php://stdin php://memory、 php://temp 需要on

[2]、作用:   

 Php://伪协议有很多的用法,常用的就是

php://filter 用于读源码。

Php://input用于执行php代码 

Php://filter参数详解:

该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:

resource=<要过滤的数据流>                  必须项。它指定了你要筛选过滤的数据流。

read=<读链的过滤器>            可选项。可以设定一个或多个过滤器名称,以管道符隔开

write=<写链的过滤器>            可选项。可以设定一个或多个过滤器名称,以管道符隔开

<;两个链的筛选列表>                      任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况                                                    应用于读或写链 

转换过滤器:非常重要

convert.base64-encode
//等同于base64_encode(),base64编码

convert.base64-decode   
//等同于base64_decode(),base64解码

还有很多的过滤器,这里就不多讲了,后期会出一期博客专门来介绍 

  例子:使用php://filter配合转换器读取flag.php文件

php://filter/convert.base64-encode/resource=flag.php

利用php://input :   

 此协议需要allow_url_include为on,可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。 

php://input 是个可以访问请求的原始数据的只读流。 所以enctype="multipart/form-data" 的时候 php://input 是无效的。 

3.通过Zip:// & zlib:// 协议包含 

[1]、条件:  

allow_url_fopen:off/on都可以的   

allow_url_include :off/on都可以的 

[2]、作用:   

 zip:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。 

4.data://协议包含

[1]、条件:     

allow_url_fopen:on  

allow_url_include :on

[2]、作用:

自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

[3]、用法:

Data://text/plain   

Data://text/plain;base64,

 5.phar://协议包含: 

phar://协议与zip://类似,同样可以访问zip格式压缩包内容。

[1]、条件:   

allow_url_fopen:off/on都可以的     

allow_url_include :off/on都可以的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【web安全】——文件包含漏洞 的相关文章

  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • 软件开发和网络安全哪个更好找工作?

    为什么今年应届毕业生找工作这么难 有时间去看看张雪峰今年为什么这么火就明白了 这么多年人才供给和需求错配的问题 在经济下行的今年 集中爆发 供给端 大学生越来越多 需求端 低端工作大家不愿去 高端岗位又太少 很多基础行业 比如机械 土木 所
  • 【网络安全】Web缓存欺骗攻击原理及攻防实战

    Web缓存欺骗是一种新的攻击方式 危害范围可扩大至各种技术及框架 本文仅分享Web缓存攻击知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 文章目录 前言 攻击前提及原理 实例一 ChatGPT帐户接管漏洞 实例二 P
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • Android开发中常见安全问题和解决方案

    前言 开发APP时经常有问到 APP的安全怎么保障 应用程序被PJ了怎么办 手机被人捡去了怎么办 特别在号称 安全第一 风控牛逼 的银行系统内 移动产品安全性仍被持有怀疑态度 那我们来总结下APP安全的方向和具体知识 1 应用程序安全 2
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全

随机推荐

  • Linux下软件安装:Openblas安装

    一 apt安装 sudo apt get install libopenblas dev 二 手动从source安装 1 下载OpenBLAS并编译 1 git clone https github com xianyi OpenBLAS
  • 代码管理平台—GitHub

    1 GitHub介绍 GitHub是一个开源的代码托管平台 使用GitHub可以查看别人的项目 可以建立静态网页 可以管理插件 可以在线编译 可以托管代码等等 1 1 GitHub使用方法 注册用户 网址 https github com
  • C++内存四大区域

    文章目录 前言 所划分的内存区块有 代码区解析 全局区解析 1 全局变量的地址 2 静态变量的地址 3 常量 字符常量及const全局常量 栈区解析 1 普通局部变量 2 const修饰局部变量 3 栈区注意事项 堆区解析 new的用法 1
  • 在 React 中运行 Vue react-vue

    react vue 详细介绍 React Vue旨在连接 React 和 Vue 帮助您在 React 中运行 Vue 用途 使用Vue 的 Reactivity 系统来观察React组件 使用 react vue loader 以在Rea
  • pycharm打开多个项目并存

    问题 有时我们需要打开多个项目 而现在的做法是 原有的a项目不动 新打开一个pycharm来打开b项目 或者 在原有的a项目中打开b项目并覆盖a项目 即a项目与b项目不能共存 需求 有时我们只想打开一个pycharm 但想打开多个项目 方法
  • LSTM多输入多输出解决数据回归预测问题matlab

    文章目录 引言 LSTM 简介 LSTM多输入多输出matlab实现 结论 引言 在许多数据分析和预测问题中 我们需要使用机器学习算法来处理多输入多输出的数据回归预测问题 长短期记忆网络 Long Short Term Memory 简称
  • 国内期货怎么交易?

    国内期货怎么交易 期货市场 是按达成的协议交易并按预定日期交割的金融市场 现货与期货的显著区别是 期货的交割期放在未来 而价格 交货及付款的数量 方式 地点和其他条件是在即期由买卖双方在合同中规定的 商品及证券均可在期货市场上交易 虽然合同
  • Flutter 的键值存储数据库

    Flutter 键值存储数据库 键值存储是开发中十分常见的需求 在Flutter开发中 一般使用 shared preferences 插件来实现 shared preferences 本质上就是将键值对保存到一个XML文件中进行持久化 而
  • Spring Boot请求403 Forbidden错误

    欢迎关注笔者的微信公众号 在项目中引入了Spring Security框架做权限控制 但是出于调试的方便 在开始的时候就禁用了Spring Security 计划到项目后期再专门开发 但是 在调试的过程中发现 Postman发出的请求后台无
  • 语音识别芯片LD3320介绍再续

    语音识别芯片LD3320驱动程序 1 芯片复位 复位就是对LD3320芯片的第47腿 RSTB 发送低电平 然后需要对片选CS做一次拉低 拉 高的操作 以激活内部DSP 按照以下顺序 void LD reset RSTB 1 delay 1
  • Python脚本,实现验证码识别

    别验证码是一个很复杂的任务 需要使用计算机视觉和机器学习算法 这里我只能提供一个大致的思路和代码示例 还需要进行相应的调整和补充 import tensorflow as tf from PIL import Image import nu
  • airtest上的滑动操作swipe

    正常来说 方法一的滑动是生效的 但是在页面有蒙层或是其他怪异的情况下 可能就不生效了 再用方法二 方法一 获取设备的高度和宽度 width height device get current resolution 校准滑动的起点和终点 因为
  • 电容滤波笔记

    电容滤波效果 公式 容抗 F 1000Hz 干扰频率 C 1000uF X C 1 2
  • linux 修改jdk版本 /usr/src/jdk-11.0.11/bin/java: 无法执行二进制文件

    下载的jdk版本与linux匹配不正确 更换成上图中就可以了
  • 关于尚硅谷禹神Vue视频四十二级v-cloak,delay_server服务器服务器的替代方案

    关于四十二级v cloak的替代方案 资料没找到那个delay server服务器 手写了一个替代的代码 有的话发我一下谢谢 吃瓜 原视频链接 http 尚硅谷Vue2 0 Vue3 0全套教程丨vuejs从入门到精通 https www
  • flex 间距_聊一聊Flex布局

    Flex布局目前对于前端来说已经是一个非常熟悉且常用的布局方案了 有了它 我们很大程度上就可以避免原来让人头秃的正常流布局带来的很多IFC inline formatting context 问题 随着浏览器的支持性不断增强 基本上我们日常
  • 双系统下怎么卸载linux系统,双系统怎么卸载其中一个操作系统 双系统卸载其中一个操作系统方法...

    一 WIN7 XP 卸载XP 1 登录win7 放入xp光盘 或者用虚拟光驱加载镜像 2 点击 开始 运行 输入 C boot bootsect exe nt52 all force 这里假设C盘为xp安装盘符 回车运行 3 重启电脑 发现
  • 招聘30000名应届生,研发占80%,秋招之光还得是比亚迪!

    金秋9月 一年一度的 秋招 在互联网大厂中如期打响 在过去的一年 互联网圈子经历了几番 动荡 今年 各大公司在人才储备 岗位设置等方面显现出哪些新动向 整个行业的趋势如何 本篇文章我们来一探究竟 01 超3万名应届生入职 比亚迪成为 秋招之
  • bean的生命周期

    六 bean的生命周期 https liayun blog csdn net article details 110670961 Bean 的初始化和销毁 1 Bean注解中使用init method属性和destroy method属性来
  • 【web安全】——文件包含漏洞

    作者名 Demo不是emo 主页面链接 主页传送门 创作初心 一切为了她 座右铭 不要让时代的悲哀成为你的悲哀专研方向 网络安全 数据结构 每日emo 可后来 除了梦以外的地方 我再也没有见过你 目录 一 初识文件包含漏洞 1 简析文件包含