若依4.5版本代码漏洞分析

模板注入漏洞

在controller层有/demo/form//localrefresh/task接口,这里的返回视图可以控制

直接构造Thymeleaf模板注入漏洞的POC

springMVC流程中返回一个modelAndView对象,这里的view视图就是demo/form/localrefresh::${T (java.lang.Runtime).getRuntime().exec("calc")}

继续调试

到这里expression.getExpression()方法是view视图中URL值中的EL表达式进行刷选,

继续调试

这里直接对EL表达式的内容进行获取

getValue方法通过反射对EL表达式的内容进行调用

漏洞主要原因还是未对EL表达式中的内容进行过滤,导致模板注入漏洞

SQL注入漏洞

若依的SQL注入漏洞还是比较多的,但都是同一个参数导致的

params.dataScope参数未进行预编译

Controller层

Service层

都未对params.dataScope参数进行过滤,可直接拼接SQL语句进行查询

任意文件下载漏洞

常量RESOURCE_PREFIX的值为profile

substringAfter()方法是对传入的resource值与RESOURCE_PREFIX进行对比,resource包含“/profile”值后,删除“/profile",将剩余的字符进行返回,当前retrun的值为:sss/../../../../../../../1.txt

最后拼接完的downloadPath值为:D:/ruoyi/uploadPathsss/../../../../../../../1.txt

writeBytes()方法直接将downloadPath的值传入File类中,造成任意文件下载漏洞

存储型XSS漏洞

若依这个版本有XSS的过滤器

XSS过滤器对/system/notice/* 接口不进行过滤,可绕过过滤器导致存储型XSS漏洞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值