标签:审计 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