一、自行搭建靶场

访问地址:IP:8088
登录账号密码:admin/123456
oasys代码审计 - 图1

二、代码审计漏洞挖掘

1、第三方组件审计

本项目是基于Maven构建的。对于Maven项目,我们首先从pom.xml文件开始审计引入的第三方组件是否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。
本项目引入的组件以及组件版本整理如下。

组件名称 组件版本
SpringBoot 1.5.6.RELEASE
Fastjson 1.2.36
Mysql 5.7.26
Mybatis 1.3.0

经判断组件中不存在漏洞

2、SQL注入漏洞

⾸先查找Resources下的mappers⽂件夹。
在 src/main/resources/mappers/address-mapper.xml 中,查找 ${ 关键字,发现有如下内 容
oasys代码审计 - 图2
可以发现:pinyin,outtype,baseKey都可能存在SQL注入。
以ID为全局搜索
oasys代码审计 - 图3
进入AddrController.java文件
oasys代码审计 - 图4
第489行中调用了allDirector并传入了4个参数,其中包括baseKey,通过注释得知这是外部通讯录模块。

SQL注入漏洞验证

加单引号 ’ 报错
oasys代码审计 - 图5
日志报错
oasys代码审计 - 图6
通过SQLmap验证:
oasys代码审计 - 图7

2、XSS漏洞

以菜单管理,模块名称为例。
最终类型管理模块名称的接口为typetable。
在代码位置位于
src/main/java/cn/gson/oasys/controller/system下的
TypeSysController.java
oasys代码审计 - 图8
在⽽ common/Interceptor ⽂件夹下只有 Interceptorconfig.java 和
recordInterceptor.java 两个⽂件,均不存在对XSS危险字符的过滤。换⾔之,整个过程实际上没
有对传⼊的内容进⾏过滤,因此可能导致XSS漏洞的产⽣。

XSS漏洞验证

oasys代码审计 - 图9
oasys代码审计 - 图10
oasys代码审计 - 图11
oasys代码审计 - 图12

3、越权漏洞

越权一般发生在用户处
⾸先定位到 /src/main/java/cn/gson/oasys/controller/user/UserController.java 的第67⾏:
oasys代码审计 - 图13
发现只要没有特别制定usersearch参数,跟进,发现全过程没有对当前账号 的权限进⾏检验。有可能导致越权的漏洞。
新建⽴⼀个低权限的账号,正常登录是看不到⽤户管理界⾯:
在低权限账户里直接使用用户管理的url,便可显示
oasys代码审计 - 图14