首页 > 编程语言 >Hisiphp2.0.11的文件上传

Hisiphp2.0.11的文件上传

时间:2024-07-27 09:28:21浏览次数:11  
标签:11 文件 hash 文件名 代码 哈希 上传 Hisiphp2.0

侵权声明

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

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

感谢您的理解与支持

靶场安装地址:/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


免责声明

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

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

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

感谢您的理解与支持。

标签:11,文件,hash,文件名,代码,哈希,上传,Hisiphp2.0
From: https://www.cnblogs.com/0kooo-yz/p/18326634

相关文章

  • bzt 运行期间 Windows 11 上的 Chrome 驱动程序安装路径差异
    我在bzt运行期间遇到Chromedriver安装问题。下载zip文件后,系统似乎在以下路径中查找它:15:23:03ERROR:FileNotFoundError:[WinError3]系统找不到指定的路径:'系统找不到指定的路径:'C:\Users\sunimali\.bzt\selenium-taurus\tools\drivers\chromedriver\127.0.......
  • (BS ISO 11898-1:2015)CAN_FD 总线协议详解5- MAC子层描述1
    目录5.MAC子层描述5.1总则5.2MAC子层的服务5.2.1服务描述5.2.2服务原语规范5.2.2.1概述5.2.2.2MA_Data.Request5.2.2.3MA_Data.Indication功能MA_Data.Indication 原始的语义收到原始的效果5.2.2.4MA_Data.Confirm功能MA_Data.Confirm 原始的语义5.2.......
  • 【瑞芯微RV1126(板端摄像头图像数据采集)】②使用v4l2视频设备驱动框架采集图像数据
    RV1126开发板:使用v4l2视频设备驱动框架采集图像数据前言一、按键二、LCD显示三、V4L2摄像头应用编程四、完整代码前言本系列的目的是,不仅仅将能够进行图片推理的模型部署于板端,还提供了两种摄像头数据采集的方法,集成到自己的深度学习推理代码之后,可以根据应用场景......
  • C++11 emplace系列函数:性能提升的秘密武器
    C++11引入的emplace系列函数(如emplace_back、emplace、emplace_hint等)为STL容器提供了一种更高效的元素插入方式。这些函数不仅可以提高代码的性能,还能让我们的代码更加简洁优雅。今天,我们将深入探讨emplace函数的优势,并通过实例来展示它们的强大之处。emplace函数的主要优势......
  • window系统使用经验:新买的window11初始化时最好要选择用Microsoft账户激活,而不要用loc
    Windows系统初始化时有两种类型的账户可以选择,一种时Microsoft账户,一种时local账户,Microsoft账户需要联网初始化,而local账户则和传统的初始化方式一致,即账号信息保存在本地而不和云端的Microsoft服务器上的信息同步。即使是使用local账户激活后也可以在进入系统后通过关联Micro......
  • 11、Git之自建项目托管平台(GitLab)
    11.1、简介Github是国外的项目托管平台,由于网络问题,在国内访问和使用不是很方便。Gitee是国内的项目托管平台,虽然在访问和使用上挺方便的,但依然让人担忧项目代码可能会被泄露。因此,从企业或机构的角度出发,是倾向于在内部自建一个项目托管平台,将绝对管理权控制在自己手中的。......
  • 【漏洞复现】用友 NC FileReceiveServlet 任意文件上传漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......
  • Windows11重置后出现Windows.old文件夹无法删除,报错C:\Windows.old\WINDOWS\System
    问题:Windows11重置后出现Windows.old文件夹无法删除,报错C:\Windows.old\WINDOWS\System32\WDI-目录不是空的。网上的各种方法均不奏效:https://baike.baidu.com/item/windows.old/2431751?fr=ge_ala最终的解决方法:发现在WDI文件夹下是空的,于是在这个文件夹下面建立了......
  • uniapp 手写签名上传服务器
    用的框架是yinghuo,上传用了封装的上传<template><viewclass="container"><jp-signatureref="signatureRef":openSmooth="true"></jp-signature><viewclass="dis-flexm-top20"&......
  • L1-11-第五单元-for循环(25~26课)518: T454429 乘方计算
    初学c++的同学,对乘方运算不熟悉,我也是走过几次弯路才写对程序代码,大伙药注意仔细看程序代码。理解其中的奥妙!题目内容给出一个整数 a 和一个正整数 n,求乘方 an。输入格式一行,包含两个整数 a 和 n。−1000000≤a≤1000000,1≤n≤10000。输出格式一个整数,即乘方结果......