某低代码平台代码审计分析
字数 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. 参数分析

  • 可控参数bucketdir 参数完全可控
  • 关键代码路径
    List fileBos = documentBusService.saveFile(fileUploadFiles, userId, metadata, bucket, dir);
    

3. 文件保存流程分析

  1. 文件处理入口:saveFile 方法

  2. 文件唯一标识生成逻辑:

    • 如果存在 fileKey 则使用原有值
    • 否则使用 JEUUID.uuid() 生成新标识
  3. 文件存储类型判断:

    Bucket bucketBO = this.fileManager.findBucket(bucket);
    
  4. 文件存储路径构造:

    FileSaveDTO fileSaveDTO = this.fileManager.saveFile(fileName, contentType, bytes, bucketBO, dir);
    

4. 文件存储类型分析

  • 存储类型枚举

    • aliyun
    • DEFAULT (本地存储)
    • tencent
    • mongodb
  • 数据库关联

    • 表名:je_document_bucket
    • 关键字段:webrootdisk-oss 对应 DEFAULT 类型

5. 文件上传利用条件

  1. 控制 bucket 参数值为 webroot

  2. dir 参数:

    • 可留空(自动生成 /year/yy-mm/ 格式路径)
    • 可指定自定义目录
  3. 文件名处理:

    • 使用 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 参数避免缓存影响

四、关键注意事项

  1. 数据库配置

    • 默认数据库名可能变化
    • 需要确认实际数据库名
  2. 文件访问限制

    • webroot bucket 可被页面解析访问
    • disk-oss bucket 可能无法直接访问
    • 建议使用 /je/document/file 接口(bucket参数可控)
  3. 访问认证

    • 访问文件时需要携带 internalRequestKey: schedule_898901212
    • 否则无法通过认证
  4. 时间戳验证

    • 上传时间与实际文件生成时间需对应验证

五、漏洞利用链总结

  1. 通过权限绕过获取未授权访问
  2. 利用文件上传接口实现任意文件上传
  3. 通过SQL注入获取文件存储路径信息
  4. 结合所有漏洞实现完整的攻击链
低代码平台代码审计分析报告 一、权限绕过漏洞分析 1. 第一种绕过方式 漏洞位置 :SessionFilter 绕过方法 :添加特定请求头即可绕过权限检查 利用方式 :在请求中添加头 internalRequestKey: schedule_898901212 2. 第二种绕过方式 漏洞原理 :类似Shiro的权限绕过 绕过方法 :使用路径遍历技术 利用示例 : static/../je/document/file 二、文件上传漏洞审计 1. 关键接口定位 /je/document/file /je/disk/file 2. 参数分析 可控参数 : bucket 和 dir 参数完全可控 关键代码路径 : 3. 文件保存流程分析 文件处理入口: saveFile 方法 文件唯一标识生成逻辑: 如果存在 fileKey 则使用原有值 否则使用 JEUUID.uuid() 生成新标识 文件存储类型判断: 文件存储路径构造: 4. 文件存储类型分析 存储类型枚举 : aliyun DEFAULT (本地存储) tencent mongodb 数据库关联 : 表名: 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进行自动化注入: 3. 注意事项 数据库名可能不是默认的 jepaas 需要使用 --fresh-queries 参数避免缓存影响 四、关键注意事项 数据库配置 : 默认数据库名可能变化 需要确认实际数据库名 文件访问限制 : webroot bucket 可被页面解析访问 disk-oss bucket 可能无法直接访问 建议使用 /je/document/file 接口(bucket参数可控) 访问认证 : 访问文件时需要携带 internalRequestKey: schedule_898901212 头 否则无法通过认证 时间戳验证 : 上传时间与实际文件生成时间需对应验证 五、漏洞利用链总结 通过权限绕过获取未授权访问 利用文件上传接口实现任意文件上传 通过SQL注入获取文件存储路径信息 结合所有漏洞实现完整的攻击链