『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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月26日 21时21分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
超宽带雷达P440?雷达的快时间慢时间是什么意思?
2019-04-28
教育授权certificate used to sign the license
2019-04-28
java中数组为空和数组长度为0的区别
2019-04-28
SecureCRT连接不上虚拟机
2019-04-28
从100万个数中找出最大的前100个数-最小堆、分块
2019-04-28
并发下的ArrayList、HashMap
2019-04-28
仿牛客社区项目2.2登录模块——开发注册功能
2019-04-28
仿牛客社区项目2.3登录模块——会话管理Cookie、Session
2019-04-28
仿牛客社区项目2.4登录模块——生成验证码
2019-04-28
JDK-JRE-JVM关系、Java语言跨平台
2019-04-28
仿牛客社区项目2.5登录模块———登录退出功能
2019-04-28
仿牛客社区项目3.2——发布帖子(异步通信技术AJAX)
2019-04-28
仿牛客社区项目3.3——帖子详情(普通功能)
2019-04-28
仿牛客社区项目3.5——显示评论(普通功能,Controller层帖子-评论-回复)
2019-04-28
仿牛客社区项目3.6——增加评论,同时更新评论数【事务】
2019-04-28
[golang]-go中字符串格式化与fmt包简介
2019-04-28
[Leet-go]-复杂链表的复制
2019-04-28
五分钟上手ECharts图形报表
2019-04-28