一、自行搭建靶场
访问地址:IP:8088
登录账号密码:admin/123456
二、代码审计漏洞挖掘
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 中,查找 ${ 关键字,发现有如下内 容
可以发现:pinyin,outtype,baseKey都可能存在SQL注入。
以ID为全局搜索
进入AddrController.java文件
第489行中调用了allDirector并传入了4个参数,其中包括baseKey,通过注释得知这是外部通讯录模块。
SQL注入漏洞验证
2、XSS漏洞
以菜单管理,模块名称为例。
最终类型管理模块名称的接口为typetable。
在代码位置位于
src/main/java/cn/gson/oasys/controller/system下的
TypeSysController.java
在⽽ common/Interceptor ⽂件夹下只有 Interceptorconfig.java 和
recordInterceptor.java 两个⽂件,均不存在对XSS危险字符的过滤。换⾔之,整个过程实际上没
有对传⼊的内容进⾏过滤,因此可能导致XSS漏洞的产⽣。
XSS漏洞验证
3、越权漏洞
越权一般发生在用户处
⾸先定位到 /src/main/java/cn/gson/oasys/controller/user/UserController.java 的第67⾏:
发现只要没有特别制定usersearch参数,跟进,发现全过程没有对当前账号 的权限进⾏检验。有可能导致越权的漏洞。
新建⽴⼀个低权限的账号,正常登录是看不到⽤户管理界⾯:
在低权限账户里直接使用用户管理的url,便可显示