前置知识
- 首先您需要具备一定的java基础知识及漏洞知识
- 最好对java生态的框架组件具备一定的了解,比如spring mybatis等等,可以通过它们的官方文档学习
- 了解一些主流的设计模式,能帮助您更加高校的理解代码
快速入门代码审计
阅读用于代码审计快速入门的java靶机代码
-
这里提供了一些存在各类安全漏洞的java代码,初学代码审计的用户可以尝试阅读这些代码了解漏洞的形成原理
-
您也可以利用铲子对存在漏洞的靶机代码进行扫描,然后对扫描结果进行阅读,配合铲子提供的对应漏洞的原理及修复方案介绍,可更加高效的学习java代码审计
-
基于spring web框架
- 基于WebServlet
- 一些 jsp case
- 蚂蚁金服提供的sast测评代码
- https://github.com/alipay/ant-application-security-testing-benchmark(侧重于检测能力的评估、而不是漏洞类型的完整)
进阶学习
- 靶机代码通常与实际业务代码相去甚远,靶机代码逻辑简单,适合入门学习
- 如果想更深入的学习代码审计,就需要在真实的业务代码中不断审计并学习软件的设计开发知识,进而学习真实业务中的安全漏洞
- 如果当前的工作中接触不到实际的业务代码,可以参考gitee的企业应用的一些开源的企业应用代码,通过阅读这些代码可以更好的理解业务系统的真实情况
高阶学习
- 如果您希望对Java代码审计进行非常深入的学习,我们有以下几点建议供您参考
- 尝试掌握主流的设计模式,大部分项目代码或多或少采用了一些设计模式,掌握这些设计模式有助于更高效的理解代码
- 更全面了解java生态中各种框架,组件的功能,代码审计过程中可能碰到各种各样的技术框架和组件,了解这些框架组件有助于更好的理解代码
- 尝试去了解主流java软件的实现原理,尝试去阅读他们的源代码,比如spring mybatis Tomcat jdk等等,阅读优秀的软件的代码会更加快速的锻炼您的阅读理解能力
- 学习软件设计、软件安全设计,比如身份认证、权限模型、加密算法,这些理论和思想,如果您不能掌握,碰到他们的实现代码也会一头雾水。
- 最后,坚持很重要,入门容易,深入很难,贵在坚持。
java代码审计工具可以选择铲子SAST,铲子SAST是一款简单易用的JAVA SAST(静态应用程序安全测试)工具,旨在为安全工程师提供一款简单、好用、价格厚道的代码安全扫描产品。
一个小型项目通常几分钟即可扫描完成。
工具下载地址:https://github.com/Chanzi-keji/chanzi