代码审计 | 你一定会审的java系统

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

2024年,计算机科学与技术大学生小胖写了一套学生管理系统作为毕业设计。他希望通过审计这套系统的Java代码来学习。文章介绍了系统的部署环境和代码审计的步骤,包括查看源码目录结构、审计第三方组件、绕过验证码进行黑盒测试、分析源码中的漏洞产生原因等。

🔎

延伸解读

审计环境搭建要点

文章详细列出了搭建学生管理系统的环境要求:Windows 10、JDK 1.8.0_172、MySQL 5.7(PHPstudy集成)以及IDEA 2022.2专业版。部署步骤包括创建数据库cms、导入SQL文件、修改application-local.yml配置文件、加载pom.xml依赖并运行启动文件。这些信息为读者复现审计环境提供了明确指引,也提示了版本兼容性可能影响审计结果。

第三方组件审计重点

文章强调审计第三方组件是Java代码审计的关键环节,并具体检查了fastjson、mybatis、shiro和log4j。对于fastjson,通过全局搜索parse和parseObject等反序列化函数调用,确认不存在漏洞。这提醒读者,组件审计应首先关注已知高危漏洞的触发点,但也要注意版本和实际调用方式,避免误判。

验证码缺陷与暴力破解

通过黑盒测试,作者发现登录验证码存在刷新机制缺陷:登录失败后并未302跳转回登录页,推测验证码未在后端刷新,导致可被暴力破解。源码分析证实漏洞原因写在代码注释中。这提示审计时不能仅依赖黑盒,需结合源码验证逻辑缺陷,同时注意验证码设计是否真正起到防爆破作用。

SQL注入检查方法

项目使用MyBatis,作者通过全局搜索${}和检查dao目录下的*.xml文件来排查SQL注入。虽然文中未明确发现注入点,但这种方法值得借鉴:MyBatis中${}直接拼接SQL易导致注入,而#{}预编译则相对安全。审计时应重点关注动态SQL拼接和未过滤的参数。

❓

Q&A

小胖的毕业设计是什么?

小胖的毕业设计是一套学生管理系统。

代码审计的步骤有哪些?

代码审计的步骤包括查看源码目录结构、审计第三方组件、绕过验证码进行黑盒测试等。

系统的部署环境是什么?

系统的部署环境包括Windows 10、JDK 1.8.0_172和MySQL 5.7。

在代码审计中发现了什么安全漏洞?

通过黑盒测试发现登录存在验证码刷新机制的缺陷,可能导致暴力破解漏洞。

如何审计第三方组件?

审计第三方组件时,可以使用IDEA打开项目,检查fastjson、mybatis、shiro、log4j等组件。

如何检查SQL注入漏洞?

检查SQL注入漏洞可以通过全局搜索${符号,或查看dao目录下的*.xml文件。

🏷️

标签

➡️

继续阅读