Java web框架是Java的高级课程,要进行Spring漏洞分析,需要了解Java代码。
Java后端标准学习途径: JavaSE-JavaEE-Java Web框架
Spring是Java最核心、最重要的框架。
0X01审计环境准备
在进行Spring的代码审核(对某个组件包进行Spring分析)时,首先需要对应的Spring项目的源代码,对于没有编写代码经验的朋友,一开始就要建立Spring的漏洞环境,有点困难
1 .方法1 (以1(spring-messaging为例)。
在docker中获取Spring漏洞环境的源代码(默认情况下为现有docker环境)
要显示Spring漏洞信息,请:
确认是否抽取镜像和方法。 使用或在文档器中搜索文档搜索-消息。
镜像:
dockerpullvulhub/spring-messaging :5.0.4。
显示提取的镜像。
执行镜像(容器)。
访问主机8080,在这一步骤中获得漏洞的环境可以进行POC验证。
通过查看容器ID和启动时运行的命令,可以看到使用的命令是java -jar,并可以看到环境中的源代码是jar包。
进入容器,找到源代码。
将容器中的文件复制到本地。
将jar放入jd-gui中时,将显示相应的源代码。
也可以在本地使用java -jar来运行打包在jar中的项目。
扩展:
如果复制的是war,则可以将其放在tomcat下的webapps目录中,然后运行tomcat以生成相应的源代码。 我们还部署了项目,以便可以根据tomcat和war名称访问项目。
2 .方法2
如果没有接触过docker,可以在github(3359github.com)中搜索环境源代码。 用这种方法搜索的源代码准确性很低,并不一定有相应的漏洞。 为了再现漏洞,需要修改相应的代码。
0X02 Spring框架审计的思考
熟悉Spring中揭示的影响版本、漏洞原因和漏洞流程。
步骤1 :审计将检查项目是否使用了存在漏洞的jar包版本。 检查Spring的配置文件,但是当前的所有项目都由Maven管理jar包,所以首先要检查Maven的配置文件pom.xml和. iml。
从图中可以看到,由于项目使用了Spring Framework 5.0.4,并使用了spring-websockets模块,因此推测Spring Messaging远程命令的执行中可能存在漏洞
步骤2 (验证项目是否使用了会导致漏洞的类和方法,或者是否使用了可能导致漏洞的危险类和方法(项目将导入到IDE中以查找问题类和问题方法) )。
IDEA中
ctrlshift (包含jar包的全局搜索类)。
回到车上就可以进入班级所在的位置。
ctrl shiftaTN (包含jar包的全局搜索方法。
第三步(满足前两个步骤后,接下来可以执行初步的POC动态调试以判断是否可以使用漏洞(使用IDEA的Debug ),并在导致漏洞的类和方法中插入断点进行流程分析。
分析和调试数据流,构建poc。
0X03小总结
该篇如何获取Spring审计的Demo,审计源代码,提供Spring框架的审计思路初步判定是否存在漏洞,其余构建POC,动态调试分析并修改POC。 下一期斗哥带来Java代码审计Spring框架知识篇,讲述Spring框架构建POC所需的知识。