MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法

首先我们了解下这个漏洞是什么?

MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件,可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。

MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在构造 SQL 表达式时默认情况下未对 tenant(租户)的 ID 值进行过滤,当程序启用了 TenantPlugin 并且 tenant(租户)ID 可由外部用户控制时,攻击者可利用该漏洞进行 sql 注入,接管程序的数据库或向操作系统发送恶意命令。用户可通过对租户 ID 进行过滤缓解此漏洞。

影响版本 <3.5.1

解决办法

1.不启用tenantId

2.必须使用tenantId的话,加过滤器,对tenantId做处理

Test Version: 3.4.2

com.example.demo.config.MybatisPlusConfig 

Pasted image 20230201155305.png

 

Pasted image 20230201155305.png

com.example.demo.common.TenantHolder 

Pasted image 20230201155404.png

 

Interface for testing: /user?tid= will returns a specified tenant data record.

com.example.demo.controller.HelloController 

Pasted image 20230201155458.png

 

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= 

Pasted image 20230201155910.png

 

Pasted image 20230201155910.png

Use ' or 1=1 and '123'='123 to perform sql injection and get all the data 

Pasted image 20230201155957.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dmlcq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值