当前位置: 首页 > news >正文

CVE-2024-0352 likeshop v2.5.7文件上传漏洞分析

本次的漏洞研究基于thinkPHP开发开的一款项目.....

漏洞描述

Likeshop是Likeshop开源的一个社交商务策略的完整解决方案,开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞,该漏洞源于文件server/application/api/controller/File.php的参数file会导致不受限制的上传。

fofa查询语句

icon_hash="874152924" && body="/pc/"

环境搭建

下载https://github.com/likeshop-github/likeshop/releases/tag/2.5.7

漏洞代码审计

server\application\api\controller的File.php文件,路由/api/file/formimage

进入userFormImage方法,FileServer::userFormImages()

107行 创建实例StorageDriver 后调用setUploadFile方法,跟过去

其实调用的是引擎的setUplloadFile方法,是那个引擎呢!

分别为阿里云存储引擎 (OSS) 本地文件驱动 腾讯云存储引擎 (COS) 七牛云存储引擎 存储引擎抽象类(那三个全部继承这个类)

setUploadFile方法只在存储引擎抽象类中存在,因此分析server.php下的setUploadFile方法

我们重点关注上传文件名,文件内容。代码中没有任何过滤的函数,

查看109行 StorageDriver->upload 方法

我们挨个分析这几个引擎类对upload的实现

local类,直接move 没有任何过滤

Aliyun类

剩下的引擎类就不分析了,基本都没有做文件名的后缀检测。

文件上传漏洞可成功利用

后续修复

在修复的版本中,Server.php中进行了文件名的限制

这里校验文件处new了一个Upload对象,该对象内容如下

漏洞复现

进入环境页面设置好sql连接

 等待安装

注册一个账号

登录账号后点击我的 设置自己信息

这里其实是有头像的,点击上传头像

抓包改变content-type 打入payload

实际测试没有cookie 没有token也可成功访问该接口

访问payload文件

payload成功执行 , 漏洞复现成功

附赠payload

POST /api/file/formimage HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: multipart/form-data; boundary=---------------------------348900489633202294591557761619
Content-Length: 248

-----------------------------348900489633202294591557761619
Content-Disposition: form-data; name="file"; filename="b.php"
Content-Type: application/octet-stream

<?php phpinfo(); ?>
-----------------------------348900489633202294591557761619--

http://www.lryc.cn/news/292093.html

相关文章:

  • JAVA处理类似饼状图占比和100%问题,采用最大余额法
  • MATLAB矩阵的操作(第一部分)
  • 全面掌握Django的web框架Django Rest_Framework(一)
  • AOP+Redisson 延时队列,实现缓存延时双删策略
  • Hive中left join 中的where 和 on的区别
  • LaTeX教程(001)-LaTeX文档结构(01)
  • SV-7041T 多媒体教学广播IP网络有源音箱
  • Linux文本三剑客awk经典案例
  • 如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图三
  • 考研经验总结——政治篇
  • 春招秋招,在线测评到底难不难?
  • 数学建模比赛中,使用大语言模型如chatgpt、文心一言该如何写Prompt(提示)?
  • tcpdump 抓包无法落盘
  • 【网站项目】066农家乐信息平台
  • idea/webstorm 创建Vue实例 Unresolved type Vue 处理方法
  • C++ 11新特性之语法甜点2
  • 【芯片设计- RTL 数字逻辑设计入门 番外篇 8.1 -- memory repair 详细介绍】
  • 2023强网杯复现
  • IP代理协议有哪些?爬虫代理如何被合理使用?
  • Vue学习笔记(二)快速入门
  • 在Vue中@click方法不起效
  • 服装行业ERP系统解决方案
  • AI绘画探索人工智能的未来
  • Java 的 Map 與 List
  • C++从零开始的打怪升级之路(day24)
  • 用 CanvasKit 实现超级丝滑的原神地图(已开源)!!!
  • MySQL原理(三)锁定机制(2)表锁行锁与页锁
  • 设计模式⑩ :用类来实现
  • Flutter 解决ExpansionTile上下分割线问题,以及title撑满问题
  • 数据可视化 pycharts实现时间数据可视化