问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
OKLite 1.2.25 后台插件安装 任意文件上传
# OKLite 1.2.25 后台插件安装 任意文件上传 ## 漏洞描述 OKLite v1.2.25 后台插件过滤不完善导致可以上传恶意木马文件 ## 漏洞影响 OKLite 1.2.25 ## 漏洞复现 关于执行逻辑...
OKLite 1.2.25 后台插件安装 任意文件上传 =========================== 漏洞描述 ---- OKLite v1.2.25 后台插件过滤不完善导致可以上传恶意木马文件 漏洞影响 ---- OKLite 1.2.25 漏洞复现 ---- 关于执行逻辑参照上一篇`OKLite 1.2.25 后台模块导入 任意文件上传 CVE-2019-16131` 出现漏洞的位置在于`framework/admin/plugin_control.php` ![img](https://shs3.b.qianxin.com/butian_public/f796994c7ef70b8842a83fb9d7f7900a77499cfd1d62c.jpg) ```php public function unzip_f() { $id = $this->get('id','int'); $rs = $this->model('res')->get_one($id); if(!$rs){ $this->json(P_Lang('附件不存在')); } if($rs['ext'] != 'zip'){ $this->json(P_Lang('非ZIP文件不支持在线解压')); } if(!file_exists($this->dir_root.$rs['filename'])){ $this->json(P_Lang('文件不存在')); } $info = $this->lib('phpzip')->zip_info($this->dir_root.$rs['filename']); $info = current($info); if(!$info['filename']){ $this->json(P_Lang('插件有异常')); } $info = explode('/',$info['filename']); if(!$info[0]){ $this->json(P_Lang('插件有异常')); } if(file_exists($this->dir_root.'plugins/'.$info[0])){ $this->json(P_Lang('插件已存在,不允许重复解压')); } if(!$info[1]){ $this->json(P_Lang('插件打包模式有问题')); } $this->lib('phpzip')->unzip($this->dir_root.$rs['filename'],$this->dir_root.'plugins/'); $this->json(true); } ``` 这里可以看到需要上传ZIP压缩包格式的插件,跟进`zip_info`函数 函数位置 `framework/libs/phpzip.php` ![img](https://shs3.b.qianxin.com/butian_public/f595648b37f8dc2742bfc45dc9f103d602e1be579832e.jpg) 这里会返回关于ZIP压缩包的一些信息 往下看关键位置 ```php $info = explode('/',$info['filename']); if(!$info[0]){ $this->json(P_Lang('插件有异常')); } if(file_exists($this->dir_root.'plugins/'.$info[0])){ $this->json(P_Lang('插件已存在,不允许重复解压')); } if(!$info[1]){ $this->json(P_Lang('插件打包模式有问题')); } $this->lib('phpzip')->unzip($this->dir_root.$rs['filename'],$this->dir_root.'plugins/'); $this->json(true); ``` 这里用 explode函数以 `/` 分隔返回两个值,也就是说格式应为 `AAA/BBB`这样的目录格式,直接上传ZIP文件则会报错 `插件打包模式有问题` ![img](https://shs3.b.qianxin.com/butian_public/f7543615ef5775b9ade24826b3b93e464388c72e01a94.jpg) 在这里上传一个ZIP文件,格式要是解压出来为目录,目录中含PHP文件就行了 ```php $this->lib('phpzip')->unzip($this->dir_root.$rs['filename'],$this->dir_root.'plugins/'); $this->json(true); ``` 最后两行告诉了文件解压的位置,上传的文件在 `plugins目录下` ![img](https://shs3.b.qianxin.com/butian_public/f91903178d2965cb94d035171fd7d0206f01b0640bfb8.jpg) 若有收获,就点个赞吧
发表于 2024-07-12 18:43:30
阅读 ( 1037 )
分类:
CMS
0 推荐
收藏
0 条评论
请先
登录
后评论
带头大哥
456 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!