首页 > 编程语言 >JAVA代码审计_若依管理系统

JAVA代码审计_若依管理系统

时间:2022-12-28 09:46:42浏览次数:40  
标签:JAVA 管理系统 用户 如下 若依 漏洞 SQL 所示 test5

若依管理系统代码审计

该项目使用Mybatis作为数据库持久化框架。全局搜索 ${ 、关注 xxxmapper.xml 文件寻找SQL注入。

1)后台角色管理处SQL注入漏洞

点“SysRoleMapper.xml”文件进去看看。

在通过“SysRole”进行“selectRoleList”角色查找时使用了“${params.dataScope}”进行拼接,如下图所示:

点击上图左侧“小绿箭头”跟踪到DAO层,如下图所示:

发现是一个“List”的构造方法,点击“selectRoleList”,同时按住CTRL进行追踪,如下图所示:

跟踪到了“SysRoleServiceLmpl.java”服务层,如下图所示:

发现只是调用了“roleMapper”的“selectRoleList”方法,再对该方法进行跟踪,如下图所示:

发现有三个地方都调用用了该函数,点进第一个,如下图所示:

进入了“SysRoleController”控制层,看到对应后台的接口是“system/role/list”,还有“system/role/export”接口处的“export”方法也调用了该方法,如下图所示:

第57行:查看startPage():得知是查询的数据进行分页操作;
跟进“SysRole”,如下图所示:

知道“SysRole”是用户表,往下拉可看到拼接的“dataScope”参数,如下图所示:

全程没有发现对拼接的参数进行过滤处理,所以存在SQL注入漏洞。
在后台找到对应功能点,如下图所示:

点击“搜索”的同时,进行抓包,如下图所示:

把抓到的包放进ruoyi.txt文件中,然后用sqlmap跑 python sqlmap.py -r “ruoyi.txt” -v 3 -level=5,注入点存在的漏洞类型结果如下图所示:

2)部门管理处SQL注入漏洞
















3)系统用户管理处SQL漏洞














4)垂直越权

管理员账号下添加“test5”用户,如下所示:

填写完用户信息后,保存时抓包,如下所示:

关掉代理,并退出管理员帐户,forward一下,再次登陆管理员帐户,查看用户管理,没有“test5”用户,如下所示:

退出管理员用户,登陆“tt”普通用户,如下所示:

登陆时抓包,如下所示:

把管理员添加“test5”用户的JESSIONID换成“tt”普通用户的,点击“go”发送,如下所示:

登录管理员帐户查看“用户管理”功能出,可看到“test5”用户已经添加成功,如下图所示:

使用了“tt”普通用户的JESSIONID添加了“test5”用户,所以存在垂直越权漏洞。
全局搜索“add”接口,如下图所示:

进入对应功能的代码块,如下图所示:

发现“SysUser”处有“Validated”参数校验,跟进去看一下,如下图所示:

发现只对用户数据的长度做了控制,没有对用户身份验证做校验,所以存在垂直越权。

5)CSRF(跨站点请求伪造)漏洞




标签:JAVA,管理系统,用户,如下,若依,漏洞,SQL,所示,test5
From: https://www.cnblogs.com/Gejkdj/p/16968553.html

相关文章

  • windows配置java17
    最近重置系统了,所有东西都得重装一遍。但是为了能继续撸树盖房子,java又是必不可少的,先把java搞回来再说。jdk下载地址https://www.oracle.com/java/technologies/javase......
  • Loki Promtail 使用 multiline 对Java 堆栈日志进行多行处理的示例
    promtail使用multiline处理java多行日志文本的示例Environment:promtail_version:v2.7.1originJavalogcontent:logfilecontentstdout-a.log:2022-Dec-270......
  • JavaWeb
    JavaWeb1、基本概念1.1前言静态webhtmlcss动态web技术栈:Servlet/JSP、ASP、php动态web资源开发技术统称为JavaWeb1.2web应用程序:可以提供浏览......
  • Java String类为什么用final修饰
    在Java语言中,使用final修饰符修饰的类是不可以被继承的,也就是说,如果一个类被声明为final,则不能被其他类所继承。因此,当String类被声明为final时,意味着它不能被其他类所继承......
  • Java入门练习2
    1、循环importjava.util.Scanner;publicclassHello{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);int......
  • Java学习笔记------线程安全问题
    线程的安全问题同步机制解决线程安全问题方式一:同步代码块synchronized(obj){ //需要被同步的代码}synchronized(this){}synchronized(Windows.class){}......
  • Java学习笔记----线程基础
    线程线程,进程可进一步细化为线程,是一个程序内部的一条执行路径线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小线程的创建与启动Java......
  • Java面试题-前端Vue
    Vue的生命周期beforeCreate(创建前)在数据观测和初始化事件还未开始created(创建后)完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来beforeMount(载入前)在......
  • 精心整理Java微服务最全面试题集(含答案)
    微服务架构相关大型网站架构演变过程网站架构演变演变过程传统架构 →分布式架构 → SOA架构 →微服务架构什么是分布式架构分布式架构就是将传统结构按照模块......
  • 泛型(java)
    1.泛型的理解和好处1.1看一个需求1)请编写程序,在ArrayList中,添加3个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXxx())先使用传统的方法来解决->引出......