Hisiphp2.0.11的文件上传

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

侵权声明
本文章中的所有内容(包括但不限于笔墨、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地认可该内容的版权归原作者所有。
如果您是版权持有人,并且认为您的作品被侵占,请通过以下方式与我们接洽: [360619623@qq.com]。我们将在确认后的公道时间内采取适当步伐,包括删除相关内容。
感谢您的理解与支持
靶场安装地点:/index.php/index.html(因为我找了好久才找到)

毛病原因:

以下两句代码将输入进来的压缩包直接解压,当压缩包中存在一个木马或是其他危险文件时就可以getshell
  1. $archive = new PclZip();
  2. $archive->PclZip($file);
复制代码
毛病的位置

毛病地点:/admin.php/system/plugins/import.html
毛病代码路径:hisiphp/application/system/admin/Plugins.php

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

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


文件名的天生:

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

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

最后生存的文件名和位置为将天生的哈希值,前两位分割为一个目次名里面生存上传的文件,后面的所有作为文件名最后再拼接后缀。
  1. $savename = substr($hash, 0, 2) . DIRECTORY_SEPARATOR . substr($hash, 2);
复制代码
效果如下



返回包中的hash值

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


文件生存位置的返回

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


毛病复现

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

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

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

5、访问文件


总结

又是一个危险函数PclZip()还学会了文件名天生的机制
感谢这位大佬的帖子,学到了许多。
https://blog.csdn.net/qq_18193739/article/details/132765176
免责声明
本博客所提供的技能知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技能和信息用于任何非法或不道德的目的。
使用本博客内容而导致的任何违法行为或结果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保服从本地法律法规。
我们鼓励所有读者正当地使用所提供的信息和技能,致力于维护安全和负责任的网络环境。
感谢您的理解与支持。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表