标签:审计 oasys JAVA 删除 如下 漏洞 所示 抓包
oasys系统_JAVA代码审计
一、前言
oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目。可以看到该项目的资源文件中是mappers且pom.xml里有Mybatis的相关依赖,所以数据库持久化框架是Mybatis。
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227114423093-1391738708.png)
全局搜索 “${” ,可看到疑似有漏洞的地方如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227114534294-1070421293.png)
二、单点漏洞
1. 通讯录处SQL注入漏洞
1.1 上图先随意选中一个进入,可以看到多个地方存在字符拼接操作,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227114720572-1407667477.png)
1.2 点击左侧小绿键,跟踪到对应的Mapper文件里,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227114808799-2051964548.png)
1.3 除了allDirector这个函数,没有发现其他什么信息,跟进去这个函数,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227134449950-1285446951.png)
1.4 跟到了控制层,发现了接口,及前面用来拼接的参数,且没有对它们进行过滤处理,所以该处存在SQL注入漏洞。
1.5 找到后台对应功能处,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227115132461-111216395.png)
1.6 点击搜索时,同时抓包,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227115234215-1260052247.png)
1.7 把抓到的包放到oasys.txt文件中,然后用sqlmap 跑这个命令python sqlmap.py -r “oasys.txt” -v 3 -level=5 ,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227115517242-787065242.png)
1.8 跑出“basekey”和“outtype”基于布尔的盲注。
2 通知列表处SQL注入漏洞
2.1 之前全局搜索“${”,还发现另外一个地方疑似有漏洞,该位置也是存在字符串拼接,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227133455779-720264677.png)
2.2 点击左侧小绿键,进入相应的Mapper文件中,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227133532191-2043934332.png)
2.3 发现是关于“sortMyNotice”的函数方法,跟进去看看,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227134617419-855619330.png)
2.4 来到了控制层,可以看到对应的接口,以及“sortMyNotice”的函数方法需要的参数,没有对这些参数做过滤处理,所以该位置存在SQL注入漏洞。在后台找到对应功能处,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227133643271-496208920.png)
2.5 点击“搜索”图标的同时,开启抓包。如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227133716475-1430465787.png)
2.6 把包放到oasys1.txt文件中,然后用sqlmap 跑这个命令python sqlmap.py -r “oasys1.txt” -v 3 -level=5 ,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202212/1475633-20221227133733895-1276077443.png)
2.7 跑出“basekey”参数基于布尔的盲注和基于时间的盲注。
3 流程管理 -> 我的申请处,查看越权漏洞
3.1 登录普通用户“Bill”,流程管理 -> 我的申请,选择查看,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209175723099-59308645.png)
3.2 选择查看的同时开启抓包,发送,可看看“Bill”用户的申请,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180027121-1868972704.png)
3.3 把id号改为1,发送数据包,提单人员是“admin”的,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180149901-2085452359.png)
3.4 所以该点存在查看越权漏洞,找到该功能点对应的接口“/particular”,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180305758-211388011.png)
3.5 获取“id”后,转换为有符号十进制long型,然后就直接用去查看申请了,没有进行用户身份验证。
4 日程管理处越权漏洞
4.1 登录管理员“admin”账号,日程管理 -> 删除,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180519150-744436934.png)
4.2 删除标题为“放假通知”的日程,同时开启抓包,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180547991-463616966.png)
4.3 数据包的“rcid”值为15,发送到“Repeater”模块,扔包,再查看该日程还没被删除,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180607532-350469253.png)
4.4 登录普通用户“soli”,删除一天日程,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180628990-2139161768.png)
4.5 删除同时开启抓包,发送到“Repeater”模块,扔包,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180653941-1049330314.png)
4.6 把普通用户的“rcid”值改为15,发送,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180711125-245040930.png)
4.7 登录管理员“admin”账号,发现标题为“放假通知”的日程已经被普通用户“soli”删除。
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180726325-974136345.png)
4.8 所以该点存在刪除越权漏洞,找到该功能点对应的接口“/dayremove”,如下图所示:
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230209180745307-1624023941.png)
4.9 从请求包里传参“rcid”后,直接就拿去动态查找、删除,没有对用户身份进行验证。
5 任意文件读取
5.1 在src/main/java/cn/gson/oasys/controller/user/UserpanelController.java位置处,代码中首先通过getRequestURI方法当前访问的相对路径,然后将该路径中的iamge替换为空。接下来与rootpath拼接然后通过File打开文件后返回前端。
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230210111137015-2039906763.png)
5.2 rootpath前面只是进行了简单的替换,后面就输出了。
![](/i/l/?n=23&i=blog/1475633/202302/1475633-20230210112540858-882650127.png)
标签:审计,
oasys,
JAVA,
删除,
如下,
漏洞,
所示,
抓包
From: https://www.cnblogs.com/Gejkdj/p/17007772.html