提交
This commit is contained in:
1 parent
5fd0042068
commit
1e6dcb164c
94 files changed
+796
-312
No files matched your search
@@ -1,22 +1,40 @@
|
||||
# SQL 注入漏洞整改说明(tenantId)
|
||||
# SQL 注入漏洞整改说明(tenantId / P5)
|
||||
|
||||
## 背景
|
||||
|
||||
攻防演练报告指出智慧校园(mobile H5:`ykt.hzdyjsxy.cn:18081/#/`)存在 SQL 注入,可拖取 `sys_user` / `sys_config` 等数据。
|
||||
攻防演练报告:免登接口 `POST /prod-api/auth/register` 的 `tenantId` 经多租户插件拼入 SQL,可 `extractvalue` 拖库(RuoYi-Vue-Plus XVE-2026-50962 同类问题)。
|
||||
|
||||
实际利用入口为后端免登接口 `POST /prod-api/auth/register` 的 `tenantId` 字段,经多租户插件拼入 SQL(与 RuoYi-Vue-Plus XVE-2026-50962 同类问题)。
|
||||
## 整改措施(代码已落地)
|
||||
|
||||
## 整改内容(2026-09-17)
|
||||
|
||||
| # | 措施 | 改动位置 |
|
||||
|---|------|----------|
|
||||
| 1 | sink 白名单:租户 ID 仅允许 `^[0-9]{1,20}$`,非法直接抛错,不拼 SQL | `PlusTenantLineHandler`、`TenantHelper.checkTenantIdFormat` |
|
||||
| # | 措施 | 位置 |
|
||||
|---|------|------|
|
||||
| 1 | sink 白名单:租户 ID 仅 `^[0-9]{1,20}$`,非法不拼 SQL | `PlusTenantLineHandler`、`TenantHelper.checkTenantIdFormat` |
|
||||
| 2 | 注册接口先 `checkTenant`,再查注册开关 | `AuthController.register` |
|
||||
| 3 | 所有 `TenantHelper.dynamic/setDynamic` 入口统一格式校验;登录 `checkTenant` 增加格式校验 | `TenantHelper`、`SysLoginService.checkTenant` |
|
||||
| 4 | 删除心理咨询调试任意 SQL 接口 | 删除 `XljkConsultationDebugController` |
|
||||
| 3 | 登录/动态租户入口统一格式校验 | `SysLoginService.checkTenant`、`TenantHelper.setDynamic` |
|
||||
| 4 | 入参 Bean 校验 `@Pattern` | `LoginBody.tenantId`(含注册) |
|
||||
| 5 | `selectRegisterEnabled` 入口再校验 | `SysConfigServiceImpl` |
|
||||
| 6 | 社交登录绑定参数校验 | `AuthController.authBinding` |
|
||||
| 7 | 删除心理咨询调试任意 SQL 接口 | 已删除 `XljkConsultationDebugController` |
|
||||
|
||||
## 发布注意
|
||||
## 配套 SQL(生产建议执行)
|
||||
|
||||
- 需重新编译并发布 **backend** 后生效;仅发 mobile 前端无效。
|
||||
- 建议同步轮换初始密码、微信 AppSecret,并审计异常访问。
|
||||
- 生产环境确认 `sys.account.registerUser=false`(关闭开放注册)。
|
||||
关闭开放注册,缩小免登攻击面:
|
||||
|
||||
```sql
|
||||
UPDATE sys_config
|
||||
SET config_value = 'false',
|
||||
update_time = NOW()
|
||||
WHERE config_key = 'sys.account.registerUser'
|
||||
AND deleted = 0;
|
||||
```
|
||||
|
||||
## 发布与验证
|
||||
|
||||
1. 重新编译发布 **backend**(仅发前端无效)
|
||||
2. 用报告同类 payload 打 `/prod-api/auth/register`,应返回租户编号格式不正确 / 未开启注册,**不应**再出现 XPATH / SQL 报错泄密
|
||||
3. 正常 `tenantId=000000` 登录不受影响
|
||||
|
||||
## 状态
|
||||
|
||||
- 代码:已完成
|
||||
- 生产生效:取决于是否已用含本修复的包重启
|
||||
Reference in new issue
Block a user