Hisiphp2.0.11的文件上传

admin 2024年8月15日14:04:29评论19 views字数 1253阅读4分10秒阅读模式

侵权声明

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

感谢您的理解与支持

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

漏洞原因:

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

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

漏洞的位置

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

Hisiphp2.0.11的文件上传

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

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

文件名的生成:

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

Hisiphp2.0.11的文件上传

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

Hisiphp2.0.11的文件上传

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

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

效果如下
Hisiphp2.0.11的文件上传

Hisiphp2.0.11的文件上传

返回包中的hash值

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

Hisiphp2.0.11的文件上传

文件保存位置的返回

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

Hisiphp2.0.11的文件上传

漏洞复现

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

Hisiphp2.0.11的文件上传

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

Hisiphp2.0.11的文件上传

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

Hisiphp2.0.11的文件上传

5、访问文件

Hisiphp2.0.11的文件上传

总结

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

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

原文始发于微信公众号(菜鸟小新):Hisiphp2.0.11的文件上传

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月15日14:04:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Hisiphp2.0.11的文件上传https://cn-sec.com/archives/3067853.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息