zoukankan      html  css  js  c++  java
  • [漏洞分析]phpyun系统重装安全隐患#影响从phpyun4.2部分,4.3到4.5全版本

    0x00
    之前在t00ls上看到的,漏洞原理很简单,但是都是细节问题,很值得去学习。
    感谢bypass师傅。
    也发了邮件给官方,但没有任何回复,估计是漏洞作者bypass师傅报备了吧。
     
    0x01
    经测试该漏洞影响从4.3到 4.5 所有版本,4.2部分版本受影响,4.2最终版本不受影响。具体情况请自行测试。
     
    0x02
    漏洞原理:
    看到install 文件夹里的index.php,这里分php5,php7两种情况进行调用安装。
     
    以php5为例。
    文件 根目录/install/php5/install.php 代码中:
    先判断了是否存在lock文件,存在即退出安装。
     
    其中S_ROOT这个常量是在前面index.php文件中定义的。
    取得是当前文件的绝对路径。拼接起来,检测的lock文件位置应该是 根目录/install/data/phpyun.lock。
     
    这里没什么问题。
     
    按照正常安装走完,看到最后一步
    创建lock文件,这里用的是相对路径。install.php是被index.php 用require的模式调用的。
    取得路径应该是 根目录/install/,按照上图的路径创造的lock文件应该是放至于 根目录/data/phpyun.lock。
     
    创建的lock文件路径是 根目录/data/phpyun.lock,检测的路径却是 根目录/install/data/phpyun.lock
     
    那么一个重装的安全隐患就埋下了。
     
    当用户安装完成之后,是可以被无限重装的,因为这个路径错误问题。
     
    以本地phpyun4.3 已经安装完成系统为例,是可以被重装的。
    最新版phpyun 4.5这里的代码和4.3是一样的。
     
     
    phpyun 4.2 版本
    处理逻辑不一样,这个版本不受影响。
     
    经测试phpyun 4.2某些版本依旧是受影响的。
     
    0x03
    网上一些系统:
    官方测试站,版本phpyun 4.2111:
     
    某招聘网,版本phpyun 4.3
     
    0x04 
    先谈谈修复,修复很简单,已经装了的用户,只需把install目录给删了就行。
     
    还没有安装的新用户,把php7 和php5 下的两个install.php 这一行
    @fopen("../data/phpyun.lock","w+");
    

    改为

    @fopen(S_ROOT."/data/phpyun.lock","w+");
    

    即可。

    总的来说,漏洞影响还是挺大的,无论是漏洞的威力还是广度,
     
    重装可以毁掉数据,也可以getshell。
     
    只是因为一个小点就造成了重大的问题,果真安全无小事,从每一个小地方做起。
  • 相关阅读:
    23.Vue技术栈开发实战-Icon组件
    shell脚本每行后面多了一个^M的原因和解决办法
    mmap概述
    camera otp介绍
    brk实现
    USB技术浅析
    带你遨游USB世界
    echarts 更换主题颜色
    Hive UDAF介绍与开发
    2020湖北高考理科第一名唐楚玥的学习方法演讲
  • 原文地址:https://www.cnblogs.com/r00tuser/p/8533517.html
Copyright © 2011-2022 走看看