模板注入漏洞
在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漏洞


2452

被折叠的 条评论
为什么被折叠?



