当前位置: 首页 > article >正文

oasys系统代码审计

简述:

oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。

下载地址:https://github.com/misstt123/oasys

此项目部署极为简单,我使用的是phpstudy的5.7版本mysql,修改application.properties配置,在IDEA导入oasys.sql数据后,就可以直接运行

并访问后台地址:http://localhost:8088/logins

注意别端口冲突

CSRF:

登录后台,在用户面板处,修改便签功能存在csrf漏洞。

点击修改,抓包,点击生成CSRF的Poc:

将生成Poc的URL复制到浏览器,访问:

访问后,发现已经按照Poc上内容进行了修改:

SQL注入:

代码分析:

在pom文件发现采用mybatis依赖:

全局搜索${

找到outtype参数,定位到xml文件:

符合sql注入条件,于是开始找对应接口,参数,全局搜索allDirector字段:

定位到接口层,于是找接口实现类,发现无,于是全局搜索该接口名称,找哪里引用了此接口:

发现AddController层引用该接口,并通过mapper进行数据库操作,在该controller层搜索原接口方法,定位到具体代码块:

可以看到该参数没有经过任何过滤,于是根据代码块注释进行漏洞复现:

在后台找到通讯录,找到外部通讯录,点击添加联系人:

抓包找到对应数据包:

将localhost换成自己对应的IP,放入sqlmap验证成功:

其实从最初的xml文件来看,其它几个参数也存在sql注入。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

存储XSS:

登录后台后,用户处点击修改信息,插入xss代码造成弹窗。

根据提交保存的接口全局搜索:

找到相关信息,根据代码分析,无任何过滤直接存储,造成xss漏洞:

此后台很多地方也均无过滤,可以直接插入xss代码执行。

任意文件读取漏洞:

在控制层UserpanelController处,如下代码存在逻辑错误导致任意文件读取:

可以看出此代码块是用来处理图像请求,并将数据返回到http响应的代码。

这段代码我初看并没看懂,于是对代码进行详细分析:

红框代码逻辑很简单,先传入的f.getPath()值,再通过FileInputStream进行文件读取并返回到http响应。

关键就是f.getPath()的值怎么来的?

如上红框代码,f.getPath()的值来自于rootpath与path的拼接,而path的值则是,先通过request.getRequestURI()获取,再将/image替换为空得来。

但rootpath的值呢?

于是我在该类搜索rootpath找到其定义代码:

发现以@Value注解定义rootpath的值,而@Value注解的作用就是从项目配置文件中获取信息,于是转到配置文件,搜索关键字:rootpath

继续回到controller代码,此时找到rootpath的值,也明白了读取文件的逻辑,于是尝试构造多个/image…路径读取我D盘upload下的文件:

如下图,读取成功:


http://www.kler.cn/a/382416.html

相关文章:

  • python开发聊天室
  • [ DOS 命令基础 2 ] DOS 命令详解-网络相关命令
  • ElasticNet Regressor(弹性网络回归) --- 论文实战
  • 【解决】Pico 串流 Unity 开发环境 Preview 黑屏问题
  • 书生大模型第三关Git 基础知识
  • 一步步安装deeponet的详细教学
  • mmsegmentation训练自己的数据集
  • java语言基本编程原理
  • 5.Java 数组(一维数组、二维数组、数组实例实操)
  • ubuntu20安装opencv3.2记录
  • 洛谷P1090 [NOIP2004 提高组] 合并果子
  • Halcon 从XML中读取配置参数
  • 系统思考—深层结构
  • 《Ooga》进不去游戏解决方法
  • Java基础-组件及事件处理(下)
  • C语言程序的机器表示(逆向+函数调用栈详解版)
  • 情怀系列国际版棋牌完整源码具备强大的多语言扩展功能,涵盖了900多款子游戏,专为全球市场的游戏开发和运营设计。
  • 关于SwitchCase中变量定义及使用变量的一些注意事项参数传递参数时不能实现多态动态绑定的问题c++语法
  • 基于C#实现Windows后台窗口操作与图像处理技术分析
  • 【Linux】从零开始使用多路转接IO --- select
  • 时间段比较与 SQL 实现:交集、并集与补集
  • 盘点10款录音转文字工具,帮你开启高效记录。
  • docker 常用方法
  • qt QColorDialog详解
  • 数组逆序重存放
  • 【无人机设计与控制】改进无人机三维路径规划(蜣螂优化算法)Matlab程序