1 第三方组件漏洞审计
本项目是基于Maven构建的。对于Maven项目,我们首先从 pom.xml 文件开始审计引入的第三方组件是
否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。
本项目引入的组件以及组件版本整理如下。
组件名称 | 组件版本 |
---|---|
SpringBoot | 2.2.4.RELEASE |
Fastjson | 1.2.60 |
xxl-job-core | 2.1.2 |
junit | 4.12 |
commons-lang3 | 3.7 |
presto-jdbc | 0.225 |
druid | 1.1.17 |
mybatis | 2.1.1 |
2 sql注入代码审计
2.1 代码审计
本项目使用了Mybatis,来定义SQL。我们主要查看Myabatis中 xxxMapper.xml 文件中是否存在使用$ 拼接SQL语句的情况。使用 $ 是直接拼接SQL语句的,未进行转义。
直接搜索${ 符号
可以发现在src/main/resources/mybatis-mapper/mysql/IgReportMapper.xml中,有一个未预处理的sql
之后往上追到dao层,com/lyl/igreport/dao/mysql/IgReportDao.java,可以发现queryMysql()方法
继续追到Service层,com/lyl/igreport/service/impl/CommonReportServiceImpl.java可以发现在36行通过@Autowired给mysqlDao自动注入,最后在(queryDataSourceData方法内)55行进行调用dao层中的queryMysql()方法。