Hisiphp2.0.11的文件上传

news/2024/9/17 3:15:29/文章来源:https://www.cnblogs.com/0kooo-yz/p/18326634

侵权声明

本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。

如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [360619623@qq.com]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。

感谢您的理解与支持

靶场安装地址:/index.php/index.html(因为我找了好久才找到)

漏洞原因:

以下两句代码将输入进来的压缩包直接解压,当压缩包中存在一个木马或是其他危险文件时就可以getshell

$archive = new PclZip();
$archive->PclZip($file);

漏洞的位置

漏洞地址:/admin.php/system/plugins/import.html
漏洞代码路径:hisiphp/application/system/admin/Plugins.php

image

起始一个判断是否为post请求的语句
代码块一:
判断是否上传了文件
代码块二:
获取上传文件的绝对路径,如果是根目录的情况,以便在不同的目录结构下,正确地处理文件路径。
代码块三:
判断文件是否存在以达到判断文件是否有效
代码块四:
对文件相对路径并去掉后缀的文件判断其是否为目录,目的是如果该目录已经存在了就不会给目录赋权,否则就是文件因该赋权给他。
代码块五:
将传入的文件解压,事先通过上传点就知道该文件是压缩包。给代码块也是漏洞所在。
该代码块下面的if语句是判断压缩包解压是否成功,参数一制定解压路径,参数二路径,参数三指示在解压缩时,如果目标文件比压缩包中的文件更新,则替换目标文件。如果解压失败就会删除文件。
代码块六:
如果执行完该条语句会报错,因为不存在该目录,除非手动创建。

文件名、哈希值的生成,数据的返回

文件名的生成:

使用md5的哈希算法生成的哈希值

image

哈希算法跟进,可以看到是通过filename生成的哈希值,通过debug可以看到是finename的值是上传文件的临时文件名(如有不对请指出)

image

最后保存的文件名和位置为将生成的哈希值,前两位分割为一个目录名里面保存上传的文件,后面的所有作为文件名最后再拼接后缀。

$savename = substr($hash, 0, 2) . DIRECTORY_SEPARATOR . substr($hash, 2);

效果如下
image

image

返回包中的hash值

也是和生成文件名的hash方法一样,只不过使用方法的默认hash算法sha1并且filename为文件上传后的绝对路径。通过debug可知。

image

文件保存位置的返回

将返回包中的内容全部打包到data数组中返回的后续还有一些返回包的构造。

image

漏洞复现

1、找到插件上传位置
系统 -> 本地插件 -> 导入插件

image

2、打包一句话或其他利用文件

image

3、上传文件并点击开始导入
4、打开bp查看文件上传的位置,其他方式也行。

image

5、访问文件

image

总结

又是一个危险函数PclZip()还学会了文件名生成的机制


感谢这位大佬的帖子,学到了很多。
https://blog.csdn.net/qq_18193739/article/details/132765176


免责声明

本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。

使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。

我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。

感谢您的理解与支持。

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

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

相关文章

直播系统,利用关联规则实现推荐算法

直播系统,利用关联规则实现推荐算法关联规则是以规则的方式呈现直播系统之间的相关性:关联规则(Association Rules)是反映一个事物与其他事物之间的相互依存性和关联性,是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相关关系。关联规则的经典例子是…

项目经理的新伙伴:性能出众的进度管理软件

国内外主流的10款项目进度管理软件对比:PingCode、Worktile、Teambition、石墨文档(Shimo Docs)、Tower、有道云协作、Monday.com、Asana、Airtable、Notion。在管理任何项目时,及时准确地跟踪进度是至关重要的,但在琳琅满目的项目管理软件中找到最合适的一款却常常令人头…

mysqldump: Got error: 1066: Not unique table/alias: act_evt_log when using LOCK TABLES

先说解决办法:执行下面语句 mysqldump -ushooter -p123123 --single-transaction fd>fd.sqllower_case_table_names区分大小写设置 注意:此参数不可以动态修改,必须重启数据库 1 2 3 41、参数含义: lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候…

解决--SecureCRT乱码问题

SecureCRT是一个商业终端连接工具,支持多种自定义设置。默认设置下,通过SecureCRT连接SSH服务器可能出现中文乱码的情况。这是由于SecureCRT字符编码与服务器的字符编码不一致造成的。解决:将SecureCRT字符编码设置成与服务器的字符编码一致即可,将SecureCRT字符编码设置成…

动态内存分配的策略研究

使用Carnegie Mellon University提供的C语言模拟代码为测试,验证多种分配策略的特性,为设计新的更高效的算法进行探路,工程文件附于文章末尾。 基本宏定义 阅读C语言测试模型,得到基本分配块的结构约定。#define ALIGNMENT 8 //校准字长,4或8 #define ALIGN(size…

Naplespu微体系结构内多个插件融合分析(草稿)

Naplespu微体系结构内多个插件融合分析(草稿) http://www.naplespu.com/doc/index.php?title=Detailed_studies 介绍 打算展示替换链是如何相对于L2缓存发生的,观察目录控制器是如何演变以管理此类情况的发生的。主要目的是测试发生L2替换的所有情况,如图所示:目录控制器…

python-if elif嵌套结构

if 条件:if语句块 elif 条件:elif语句块 else:else语句块 示例:

python-换行

a=10+\20+\30 #\是换行符print(a)b=(10+20+30) #括号换行 print(b)

浅谈 I/O 与 I/O 多路复用

1.基础知识网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人聊不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。下面说的都是Linux环境下,跟Windows环境不一样哈☺。1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器…

服务器性能监控系统安装与配置手册

服务器性能监控系统安装与配置手册 1. 前言 本手册旨在指导用户安装与配置服务器性能监控系统,并介绍系统的主要功能及使用方式。 2. 系统概述 本系统采用 [系统名称] 作为核心监控组件,并结合 [其他组件] 实现服务器性能的实时监控、告警和数据分析。 3. 系统架构监控节点: …

Java学习Day3_上 总结

1.算术运算符: %运算: a % b = a - a / b * b 2.关系运算符: 返回值是boolean类型. 3.逻辑运算符: PASS 4.三元运算符: 条件表达式 ? : 表达式1:表达式2; public class ThreeEye {public static void main(String arg[]) {int a = 1, b = 2;int c = a > b ? a : b;System…

太卷了,阿里云免费1个月大模型算力额度,玩转Llama3.1/Qwen2等训练推理

阿里云百炼平台发布推文,提供30天免费算力额度,助力玩转 Llama3.1 训练推理。老牛同学首当其冲,去体验一把,本文详细记录了整个过程,同时给出了老牛同学的一些想法,欢迎交流学习……早上收到朋友转发的阿里云公众号推文,阿里云为用户免费提供 1 个月的训练推理等算力额度…