『PHP代码审计』CatfishBlog3.9存在文件上传漏洞
发布日期:2021-06-28 20:00:37 浏览次数:2 分类:技术文章

本文共 1659 字,大约阅读时间需要 5 分钟。

文章目录

前言

作者: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上传

四、修复

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

五、总结

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

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

转载地址:https://blog.csdn.net/Xxy605/article/details/117887022 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ElasticSearch三:架构原理、工作流程、准实时索引原理、手工控制搜索结果精准度、近似搜索、前缀匹配、短语搜索、权重控制
下一篇:『PHP代码审计』飓风CMS1.10存在SQL注入漏洞

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月26日 21时21分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章