oasys(OA自动化办公系统)--漏洞分析与复现

xiao1star2025-10-27文章来源:SecHub网络安全社区


oasys(OA自动化办公系统)–漏洞分析与复现

简介

办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统,极大提高公司的办公效率。oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。

环境源码

oasys(gitee.com)

代码分析

查看pom.xml文件,发现有使用mybatis框架

202408031951622.png

Ctrl+Shift+R全局搜索对${查看xml文件是否使用了这种拼接形式的sql语句,发现是存在的

202408031953073.png

进入address-mapper.xml中,发现是AddressMapper接口中的allDirector中的pinyin参数

202408031955343.png

进入AddressMapper接口中,pinyinallDirector方法的第二个参数

202408031957796.png

Ctrl键点击该方法,查看谁调用了该方法

202408031959645.png

发现是AddrController调用了该方法,同时知道了该功能的路由是在\outaddresspaging下,控制的参数是alph

因此直接访问\outaddresspaging这个页面,对alph参数sql注入即可

总结

刚刚我们是逆着进行了代码审计,现在我们正向梳理一下整个思路

  1. 首先是controller层有一个方法它的路由是outaddresspaging,会从前端获取一个alph的参数并且会作为调用mapper层的allDirector方法的参数

注意:在正常的javaweb中是controller层–>service层–>mapper层

202408032006789.png

  1. 而mybatis的sql语句是在xml文件中,在对应的XML文件address-mapper.xml中对yinpin参数的赋值使用的是${}${}会将用户输入的参数内容直接拼接到sql语句中,没有任何预编译以及过滤进而导致了sql注入

202408032014066.png

漏洞复现

对外部通讯录的搜索目录进行抓包获取

202408031943820.png

202408031944298.png

将获取到的数据包内容进行使用sqlmap进行sql注入的测试

202408031946352.png

python sqlmap.py -r 1.txt --level=5 --batch

202408031947500.png