某低代码平台代码审计分析
字数 1178 2025-08-19 12:41:52
低代码平台代码审计分析报告
一、权限绕过漏洞分析
1. 第一种绕过方式
- 漏洞位置:SessionFilter
- 绕过方法:添加特定请求头即可绕过权限检查
- 利用方式:在请求中添加头
internalRequestKey: schedule_898901212
2. 第二种绕过方式
- 漏洞原理:类似Shiro的权限绕过
- 绕过方法:使用路径遍历技术
- 利用示例:
static/../je/document/file
二、文件上传漏洞审计
1. 关键接口定位
/je/document/file/je/disk/file
2. 参数分析
- 可控参数:
bucket和dir参数完全可控 - 关键代码路径:
List fileBos = documentBusService.saveFile(fileUploadFiles, userId, metadata, bucket, dir);
3. 文件保存流程分析
-
文件处理入口:
saveFile方法 -
文件唯一标识生成逻辑:
- 如果存在
fileKey则使用原有值 - 否则使用
JEUUID.uuid()生成新标识
- 如果存在
-
文件存储类型判断:
Bucket bucketBO = this.fileManager.findBucket(bucket); -
文件存储路径构造:
FileSaveDTO fileSaveDTO = this.fileManager.saveFile(fileName, contentType, bytes, bucketBO, dir);
4. 文件存储类型分析
-
存储类型枚举:
aliyunDEFAULT(本地存储)tencentmongodb
-
数据库关联:
- 表名:
je_document_bucket - 关键字段:
webroot和disk-oss对应 DEFAULT 类型
- 表名:
5. 文件上传利用条件
-
控制
bucket参数值为webroot -
dir参数:- 可留空(自动生成
/year/yy-mm/格式路径) - 可指定自定义目录
- 可留空(自动生成
-
文件名处理:
- 使用
fileNameGenerator方法生成UUID格式文件名 - 注意:回显的
fileKey并非实际文件名
- 使用
三、SQL注入漏洞
1. 漏洞位置
- 接口:
POST /rbac/im/accessToTeanantInfo - 注入参数:
tenantId
2. 利用方法
- 使用sqlmap进行自动化注入:
sqlmap -r request.txt --level 3 -D "jepaas" -T "je_document_file" --dump --fresh-queries
3. 注意事项
- 数据库名可能不是默认的
jepaas - 需要使用
--fresh-queries参数避免缓存影响
四、关键注意事项
-
数据库配置:
- 默认数据库名可能变化
- 需要确认实际数据库名
-
文件访问限制:
webrootbucket 可被页面解析访问disk-ossbucket 可能无法直接访问- 建议使用
/je/document/file接口(bucket参数可控)
-
访问认证:
- 访问文件时需要携带
internalRequestKey: schedule_898901212头 - 否则无法通过认证
- 访问文件时需要携带
-
时间戳验证:
- 上传时间与实际文件生成时间需对应验证
五、漏洞利用链总结
- 通过权限绕过获取未授权访问
- 利用文件上传接口实现任意文件上传
- 通过SQL注入获取文件存储路径信息
- 结合所有漏洞实现完整的攻击链