首页 > 编程语言 >oasys系统_JAVA代码审计

oasys系统_JAVA代码审计

时间:2023-02-10 14:36:20浏览次数:50  
标签:审计 oasys JAVA 删除 如下 漏洞 所示 抓包

oasys系统_JAVA代码审计

一、前言

oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目。可以看到该项目的资源文件中是mappers且pom.xml里有Mybatis的相关依赖,所以数据库持久化框架是Mybatis。

全局搜索 “${” ,可看到疑似有漏洞的地方如下图所示:

二、单点漏洞

1. 通讯录处SQL注入漏洞

1.1 上图先随意选中一个进入,可以看到多个地方存在字符拼接操作,如下图所示:

1.2 点击左侧小绿键,跟踪到对应的Mapper文件里,如下图所示:

1.3 除了allDirector这个函数,没有发现其他什么信息,跟进去这个函数,如下图所示:

1.4 跟到了控制层,发现了接口,及前面用来拼接的参数,且没有对它们进行过滤处理,所以该处存在SQL注入漏洞。

1.5 找到后台对应功能处,如下图所示:

1.6 点击搜索时,同时抓包,如下图所示:

1.7 把抓到的包放到oasys.txt文件中,然后用sqlmap 跑这个命令python sqlmap.py -r “oasys.txt” -v 3 -level=5 ,如下图所示:

1.8 跑出“basekey”和“outtype”基于布尔的盲注。

2 通知列表处SQL注入漏洞

2.1 之前全局搜索“${”,还发现另外一个地方疑似有漏洞,该位置也是存在字符串拼接,如下图所示:

2.2 点击左侧小绿键,进入相应的Mapper文件中,如下图所示:

2.3 发现是关于“sortMyNotice”的函数方法,跟进去看看,如下图所示:

2.4 来到了控制层,可以看到对应的接口,以及“sortMyNotice”的函数方法需要的参数,没有对这些参数做过滤处理,所以该位置存在SQL注入漏洞。在后台找到对应功能处,如下图所示:

2.5 点击“搜索”图标的同时,开启抓包。如下图所示:

2.6 把包放到oasys1.txt文件中,然后用sqlmap 跑这个命令python sqlmap.py -r “oasys1.txt” -v 3 -level=5 ,如下图所示:

2.7 跑出“basekey”参数基于布尔的盲注和基于时间的盲注。

3 流程管理 -> 我的申请处,查看越权漏洞

3.1 登录普通用户“Bill”,流程管理 -> 我的申请,选择查看,如下图所示:

3.2 选择查看的同时开启抓包,发送,可看看“Bill”用户的申请,如下图所示:

3.3 把id号改为1,发送数据包,提单人员是“admin”的,如下图所示:

3.4 所以该点存在查看越权漏洞,找到该功能点对应的接口“/particular”,如下图所示:

3.5 获取“id”后,转换为有符号十进制long型,然后就直接用去查看申请了,没有进行用户身份验证。

4 日程管理处越权漏洞

4.1 登录管理员“admin”账号,日程管理 -> 删除,如下图所示:

4.2 删除标题为“放假通知”的日程,同时开启抓包,如下图所示:

4.3 数据包的“rcid”值为15,发送到“Repeater”模块,扔包,再查看该日程还没被删除,如下图所示:

4.4 登录普通用户“soli”,删除一天日程,如下图所示:

4.5 删除同时开启抓包,发送到“Repeater”模块,扔包,如下图所示:

4.6 把普通用户的“rcid”值改为15,发送,如下图所示:

4.7 登录管理员“admin”账号,发现标题为“放假通知”的日程已经被普通用户“soli”删除。

4.8 所以该点存在刪除越权漏洞,找到该功能点对应的接口“/dayremove”,如下图所示:

4.9 从请求包里传参“rcid”后,直接就拿去动态查找、删除,没有对用户身份进行验证。

5 任意文件读取

5.1 在src/main/java/cn/gson/oasys/controller/user/UserpanelController.java位置处,代码中首先通过getRequestURI方法当前访问的相对路径,然后将该路径中的iamge替换为空。接下来与rootpath拼接然后通过File打开文件后返回前端。

5.2 rootpath前面只是进行了简单的替换,后面就输出了。

标签:审计,oasys,JAVA,删除,如下,漏洞,所示,抓包
From: https://www.cnblogs.com/Gejkdj/p/17007772.html

相关文章

  • java 存在连续三个奇数的数组
    说明给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false。 代码 publicbooleanthreeConsecutiveOdds(......
  • 浏览器中的JavaScript(2)
    2.2注册事件处理程序摘要:有两种事件处理程序的方式。第一种是web早期就有的,及设置作为事件的对象或文档元素的一个属性。第二种方法是把处理程序传给这个元素或对象或元......
  • 项目搭建碰到java.lang.NoClassDefFoundError
    基本都是pom依赖包冲突导致的,可以这样来解决:找到pom.xml找到依赖项   一般ClassNotfound会给一个具体的类名。搜索这个类名,看是在那个pom里面。然后在pom依赖项......
  • java logAdaper日志适配器
    组件开发中日志的引入。#LogAdapter:log适配器##依赖Spring中有一个依赖:spring-jcl.jar用于适配日志框架。类名为:org.apache.commons.logging.LogAdapter<depe......
  • java中的setLayOut(null)怎么理解
    我们都知道,当我们创建好一个新的窗口后,我们要在这个窗口上面添加组件但是当我们新建了一个Panel实例并且对它使用setBound()方法后运行出来的结果与我们的预期有很大出入,那......
  • Java使用代码调用接口http根据ip访问
    HttpClient的主要功能:实现了所有HTTP的方法(GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS等)支持HTTPS协议支持代理服务器(Nginx等)等支持自动(跳转)转向详细使用示例声......
  • Java多线程06——JUC并发包02
    1线程的同步工具类​​CountDownLatch​​​​CountDownLatch​​同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。​​CountDownLatch......
  • 【转载】Java 有序生成订单号或流水号
    前言  最近用到了一些编号的生成规则记录一下,有序的生成订单号或者流水号概述  第一种方式,适用于循环生成订单编号,例如有100条数据,需要循环生成相对应编号可以使用,下......
  • 测开-面试题-Java基础
    1 垃圾回收机制? 2SpringBoot的好处? 3 Java中的map有没有了解? 4 webservice接口有用过吗?答:有。在学校做过一个项目——和风天气,做客户端开发的时候,使用webse......
  • Java流程控制
    一、用户交互Scanner对象包:java.util.Scanner获取用户的输入基本语法Scanners=newScanner(System.in);通过该类的next()和nextLine()方法获取输入的字符......