jeecg boot快速开发平台2.4SQL注入
https://github.com/zhangdaiscott/jeecg-boot
代码分析
1 |
|
根据注释发现这里是一处查询,且table
、text
、code
参数可控,这里把table、text、code传入queryTableDictItemsByCode
进行进一步的参数处理
跟进看看哪里定义了sysBaseAPI
接口定义,继续跟进ISysBaseAPI
1 |
|
这里为接口,往下看queryTableDictItemsByCode
方法为空实现,所以全局搜索implements ISysBaseAPI
查看其实现类
1 |
|
在此处搜索刚刚SystemAPIController
调用到的里的queryTableDictItemsByCode
方法,也就是这里
搜索结果
寻找参数是否包含有#{
,然后转到getSqlRuleValue
处理table
此处不算针对注入做的安全措施,所以回到SysBaseApiImpl
里继续跟进查看哪里定义了sysDictService
跟进ISysDictService
1 |
|
是一个接口
全局搜索implements ISysDictService
查看其实现类
1 |
|
在该实现类里搜索SysBaseApiImpl
调用的queryTableDictItemsByCode
方法,也就是这里
搜索结果
在这里把前台的table,text,code参数传入mapper进行数据查询,跟进sysDictMapper.xml
1 |
|
搜索queryTableDictItemsByCode
,发现传入的参数使用了${}
直接进行查询,导致了注入的产生
漏洞验证:
根据controller的路由构造url为
1 |
|
根据mysql的特征查系统默认数据库
1 |
|
声明:
本文章用于学习交流,严禁用于非法操作,出现后果一切自行承担,阅读此文章表示你已同意本声明。
Disclaimer:
This article is for study and communication. It is strictly forbidden to use it for illegal operations. All consequences shall be borne by yourself. Reading this article means that you have agreed to this statement.