『PHP代码审计』CatfishBlog3.9存在文件上传漏洞

前言

作者:Ho1aAs

博客:https://blog.csdn.net/xxy605

一、漏洞演示

进入后台,选择插件

新建一个php文件,写入一句话木马,压缩成zip,点击插件上传

访问http://URL/application/plugins/a.php,上传成功

二、漏洞分析

在上传界面抓个包,提供上传功能在/application/admin/controller/Index.php

public function uploadplugin()
    {
        $this->checkPermissions(3);
        $file = request()->file('file');
        $validate = [
            'ext' => 'zip'
        ];
        $file->validate($validate);
        $tmpdir = ROOT_PATH . 'runtime' . DS . 'plugins';
        $this->delFolder($tmpdir);
        $info = $file->move($tmpdir, '');
        if($info){
            $fileName = $info->getSaveName();
            $tmpFile = $tmpdir . DS . $fileName;
            if(is_file($tmpFile)){
                try{
                    $zip = new \ZipArchive();
                    if($zip->open($tmpFile, \ZipArchive::OVERWRITE || \ZIPARCHIVE::CREATE) === true){
                        $zip->extractTo(APP_PATH . 'plugins');
                        $zip->close();
                        echo 'ok';
                    }
                    else{
                        echo Lang::get('The uploaded zip file is not available');
                    }
                }
                catch(\Exception $e){
                    echo Lang::get('Upload failed');
                }
            }
            if(is_file($tmpFile)){
                @unlink($tmpFile);
            }
        }
        else{
            echo $file->getError();
        }
        exit();
    }

首先确认了是否有上传权限,接着就调用try解压压缩包,这里只对是否是压缩包进行了检测,即检测后缀名,**而未检查其中的内容,**之后就是正常的解压,存入/application/plugins/,访问即可

三、利用

任意文件压缩成zip上传

四、修复

增加对上传非插件文件的处理函数

五、总结

由于以下问题导致该漏洞的产生:

  • 没有对非插件文件的判断
  • 缺失必要的安全过滤

Catfish(鲶鱼) Blog是一款开源的PHP Blog系统,其衍生于优秀的内容管理系统:Catfish(鲶鱼) CMSCatfish(鲶鱼) Blog系统秉承了Catfish(鲶鱼) CMS的先进设计理念,并且专注于个人博客系统。 Catfish(鲶鱼) Blog系统使用十分便捷,便捷到您只需直接开始博客写作就可以了。 全站自适应设计,适用于pc,手机等不同大小屏幕的终端显示,支持手机、微信等小屏幕访问。 您可以随时随地通过手机编写您的博文。 Catfish(鲶鱼) Blog系统特点: 简单方便 Catfish(鲶鱼) Blog安装十分方便,只需输入域名,然后再点两次鼠标,期间填入一些必要的安装信息就可以轻松完成整个安装过程。 使用十分便捷,安装后进后台,直接写博客内容就可以了,无需事先进行任何设置操作。 要进行网站设置也十分简单,几分钟就可以完成。 简洁明了 Catfish(鲶鱼) Blog系统秉承了Catfish(鲶鱼) CMS的设计风格,后台操作简洁明了,功能区块安排合理。 博主只要将主要精力放在写作上就可以了,无需对系统进行复杂配置,只需简单的几个设置就可以了。 开源 Catfish(鲶鱼) Blog系统是100%开源的PHP程序,这保证了系统的代码更健壮和更安全。 支持好 您可以免费下载并使用Catfish(鲶鱼) Blog系统,并且官方会不定期地升级系统,您也可以随时升级您的系统到最新版。 Catfish(鲶鱼) Blog系统特色: 免费 Catfish(鲶鱼) Blog是一款可以完全免费使用的博客系统。 专业化 Catfish(鲶鱼) Blog是一款专业化的博客系统,专注于博客系统本身的优化和不断发展。 版权信息自定义 您可以在系统管理后台方便地修改和定义网站前台页面的版权信息。 多语言支持 目前支持简体中文、繁体中文、俄语、德语、法语、韩语、日语、英语各种语言,并能够自动识别使用者的语言环境,无需手动变更。 简单而又不简单 作为一款专业化的博客系统,Catfish(鲶鱼) Blog是操作最简单的博客系统之一,同时也支持复杂应用以及个性化应用,例如多人编辑文章等。 去除一切繁杂操作 为了保证使用者能专注于网站的内容建设,系统设计从一开始就摒弃了所有繁琐的操作,简单实用是系统最大的特色之一。 系统安装基本要求: PHP >= 5.4.X (注意:PHP5.4dev版本和PHP6均不支持) PDO PHP Extension MBstring PHP Extension CURL PHP Extension 系统安装: 将解压后index.php所在目录的所有文件以及文件夹全部复制到您的WEB运行环境的根目录下。 复制完所有文件后,您可以打开浏览器,然后在浏览器的地址栏输入您站点的域名,系统将自动进入安装页面。例如:如果域名是127.0.0.1,那么只要在浏览器地址栏输入“127.0.0.1”就可以开始安装系统了。记住要换成您自己的域名哦! 如果有任何建议和提议可以到官方网站留言 Catfish(鲶鱼) Blog 更新日志: v2.0.27更新: 插件扩展; 系统加强; 内置jLos。
Catfish(鲶鱼) Blog是一款开源的PHP Blog系统,其衍生于优秀的内容管理系统:Catfish(鲶鱼) CMSCatfish(鲶鱼) Blog系统秉承了Catfish(鲶鱼) CMS的先进设计理念,并且专注于个人博客系统。 Catfish(鲶鱼) Blog系统使用十分便捷,便捷到您只需直接开始博客写作就可以了。 全站自适应设计,适用于pc,手机等不同大小屏幕的终端显示,支持手机、微信等小屏幕访问。 您可以随时随地通过手机编写您的博文。 Catfish(鲶鱼) Blog系统特点: 简单方便 Catfish(鲶鱼) Blog安装十分方便,只需输入域名,然后再点两次鼠标,期间填入一些必要的安装信息就可以轻松完成整个安装过程。 使用十分便捷,安装后进后台,直接写博客内容就可以了,无需事先进行任何设置操作。 要进行网站设置也十分简单,几分钟就可以完成。 简洁明了 Catfish(鲶鱼) Blog系统秉承了Catfish(鲶鱼) CMS的设计风格,后台操作简洁明了,功能区块安排合理。 博主只要将主要精力放在写作上就可以了,无需对系统进行复杂配置,只需简单的几个设置就可以了。 开源 Catfish(鲶鱼) Blog系统是100%开源的PHP程序,这保证了系统的代码更健壮和更安全。 支持好 您可以免费下载并使用Catfish(鲶鱼) Blog系统,并且官方会不定期地升级系统,您也可以随时升级您的系统到最新版。 Catfish(鲶鱼) Blog系统特色: 免费 Catfish(鲶鱼) Blog是一款可以完全免费使用的博客系统。 专业化 Catfish(鲶鱼) Blog是一款专业化的博客系统,专注于博客系统本身的优化和不断发展。 版权信息自定义 您可以在系统管理后台方便地修改和定义网站前台页面的版权信息。 多语言支持 目前支持简体中文、繁体中文、俄语、德语、法语、韩语、日语、英语各种语言,并能够自动识别使用者的语言环境,无需手动变更。 简单而又不简单 作为一款专业化的博客系统,Catfish(鲶鱼) Blog是操作最简单的博客系统之一,同时也支持复杂应用以及个性化应用,例如多人编辑文章等。 去除一切繁杂操作 为了保证使用者能专注于网站的内容建设,系统设计从一开始就摒弃了所有繁琐的操作,简单实用是系统最大的特色之一。 系统安装基本要求: PHP >= 5.4.X (注意:PHP5.4dev版本和PHP6均不支持) PDO PHP Extension MBstring PHP Extension CURL PHP Extension 系统安装: 将解压后index.php所在目录的所有文件以及文件夹全部复制到您的WEB运行环境的根目录下。 复制完所有文件后,您可以打开浏览器,然后在浏览器的地址栏输入您站点的域名,系统将自动进入安装页面。例如:如果域名是127.0.0.1,那么只要在浏览器地址栏输入“127.0.0.1”就可以开始安装系统了。记住要换成您自己的域名哦! 如果有任何建议和提议可以到官方网站留言 Catfish(鲶鱼) Blog 更新日志: v2.0.24更新: 主题扩展; 插件增强; 系统优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值