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代码审计的更多相关文章
- [代码审计]某租车系统JAVA代码审计[前台sql注入]
0x00 前言 艰难徘徊这么久,终于迈出第一步,畏畏缩缩是阻碍大多数人前进的绊脚石,共勉. 系统是租车系统,这个系统是Adog师傅之前发在freebuf(http://www.freebuf.com/ ...
- 9.10 Binder系统_Java实现_hello服务
怎么做?2.1 定义接口: 写IHelloService.aidl文件, 上传, 编译, 得到IHelloService.java 里面有Stub : onTransact, 它会分辨收到数据然后调用 ...
- 9.13 Binder系统_Java实现_内部机制_Server端
logcat TestServer:* TestClient:* HelloService:* *:S &CLASSPATH=/mnt/android_fs/TestServer.jar ap ...
- 9.12 Binder系统_Java实现_内部机制_Client端
Java实现中client端的RPC层(java实现)如何通过JNI来调用IPC层(C++实现)发送数据 TestServer通过addService向Service_manager注册的时候Test ...
- 9.9 Binder系统_Java实现_Android里java程序的编译启动
如果知道了进程号:通过ls /proc/进程号/task 可以看到所有线程 cat /proc/进程号/task/线程号/comm 可以达到线程名字(主线程是main,主线程号就是进程号) d ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- aspx代码审计-1
今天和大家分享一下aspx网站的代码审计,漏洞类型就是SQL注入和cookie欺骗. 本文作者:i春秋签约作家——非主流 今天看的cms名字叫做:XX星员工请假系统 我们首先看一下网站的目录结构: 其 ...
- WebShell代码分析溯源(七)
WebShell代码分析溯源(七) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['POST'],);array_map(ba ...
- 2012高校GIS论坛
江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...
- [代码审计]云ec电商系统代码审计
0x00 前言 看了一下博客内最新的文章,竟然是3月28号的,一个多月没写文章了,博客都长草了. 主要是临近毕业,事情繁多,也没有啥时间和心情静下来写.. 不过现在的话,毕业的东西告一段落了,几乎没啥 ...
随机推荐
- el-scrollbar 监测滚动条
export function processScroll (_this) { let _self = _this let scrollbarEl = _this.$parent.wrap ...
- 深入理解Golang 闭包,直通面试
大家好 今天为大家讲解的面试专题是: 闭包. 定义 闭包在计算机科学中的定义是:在函数内部引用了函数内部变量的函数. 看完定义后,我陷入了沉思...确实,如果之前没有接触过闭包或者对闭包不理解的话,这 ...
- Go语言基础-从菜鸟到火鸡
课程介绍: 1.概述和环境搭建 2.程序开发 3.数据类型 4. 指针 5. 标志符 6. 运算符 7. 进制介绍 8.流程控制 9.循环控制 10.break与continue 11.函数 12.g ...
- POST请求发送的表单数据和json数据的区别及python代码实现
前言 这篇博客会介绍最常见post 请求form表单数据和json数据 数据类型之间的区别, urllib代码的实现(python), requests库实现, 以及如何使用postman软件发送这些 ...
- Go1.20 新版覆盖率方案解读
玩过Go覆盖率的同学当有所了解,Go的覆盖率方案最初的设计目标仅是针对单测场景,导致其局限性很大.而为了适配更多的场景,行业内各种博客.插件.黑科技介绍也层出不穷.当然,过去我们也开源过Go系统测试覆 ...
- mysql安装及访问配置
安装教程参考:https://www.cnblogs.com/hjw-zq/p/8809227.html 下载地址:https://dev.mysql.com/downloads/mysql/ 例:h ...
- 【每日一题】【与运算判断奇偶】【list的重载前后插入】2021年11月25日-103. 二叉树的锯齿形层序遍历
给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,null,15,7], 来源:力扣 ...
- 不用USB,通过adb无线调试安卓手机页面
以前真机调试手机页面,都是使用数据线连接手机和电脑,近日身边没有USB数据线,折腾了下如何不依赖数据线只用无线调试手机页面,教程如下. 本教程适用于安卓11以及以上版本.否则应该使用USB数据线连接. ...
- BIO和NIO的区别和原理
BIO BIO(Blocking IO) 又称同步阻塞IO,一个客户端由一个线程来进行处理 当客户端建立连接后,服务端会开辟线程用来与客户端进行连接.以下两种情况会造成IO阻塞: 服务端会一直阻塞,直 ...
- [数据结构][洛谷]P3375模板题 KMP
主要还是KMP算法,上学期没学,只是考前抱了抱佛脚,也没怎么弄明白. 先放代码: //KMP #include <bits/stdc++.h>//万能头 using namespace s ...