java代码审计_Java代码审计| Spring框架思路篇
Java的WEB框架是Java进阶课程,当要进行Spring的漏洞分析,要有一定的Java代码知识储备。
Java后端标准的学习路线:JavaSE->JavaEE->Java Web框架
Spring是Java最核心,最重要的框架。
0X01 审计环境准备
当进行Spring的代码审计(Spring某一个组件包进行分析)时,首先要有相应Spring项目源码,要让没有编写代码经验的朋友从头编写一个Spring的漏洞环境还是有一点难度的,所以要学习Spring代码审计第一步要知道如何查找环境,复现环境。
1. 方法一(spring-messaging为例)
在docker中获取Spring漏洞环境源码(默认已有docker环境)
查看Spring漏洞信息:
查看你要拉取镜像与方法(或docker中使用搜索 docker search spring-messaging)。
拉取镜像:
docker pull vulhub/spring-messaging:5.0.4。
查看拉取的镜像。
运行镜像(容器)。
访问主机的8080,这一步已拿到漏洞的环境,可以进行POC的验证。
查看容器ID与启动时运行的命令,可以看到使用命令为java -jar,就能知道环境里面的源码是个jar包。
进入容器并且找到源码。
将容器中的文件复制到本地。
将jar放入jd-gui就能看到相应的源代码。
同样在本地也可以使用java -jar运行打包成jar的项目。
扩展:
如果复制出来的是个war,则只要放入tomcat下的webapps目录,运行tomcat就能生成相应的源代码,并且部署了项目,根据tomcat加war名可访问项目。
2. 方法二
如果再未接触过docker情况下,可以到github(https://github.com)搜索环境源码(此方法搜索的源码准确性低),不一定存在相应的漏洞,要修改相应的代码,才能复现漏洞。
0X02 Spring框架审计思路
先熟悉Spring已爆出的各个影响版本、漏洞造成原因、漏洞流程。
第一步:审计时先查看项目是否使用有漏洞的jar包版本(查看Spring的配置文件,但现在的项目都是Maven管理jar包,所以先查看Maven的配置文件pom.xml与.iml文件)。
从图中可以看出项目使用Spring Framework 5.0.4并且使用spring-websockets 模块所以猜测可能存在Spring Messaging 远程命令执行漏洞。
第二步:再查看项目是否使用了造成漏洞类与方法或可能造成漏洞的危险类与方法(项目导入IDE搜索问题类、问题方法)
IDEA中
Ctrl+Shift+T(全局搜索类,包括jar包)。
回车就能进入类所在的位置。
Ctrl+Shift+A\t+N(全局搜索方法,包括jar包)。
第三步:满足前两步,接下来就可以运行初步的POC动态调试确定是否可以利用漏洞(使用IDEA的Debug),在造成漏洞的类与方法处打上断点进行流程分析。
分析和调试数据流程,构造poc。
0X03 小小总结
此篇讲述如何得到Spring审计的Demo,审计源码,提供Spring框架审计思路初步判定是否存在漏洞,剩下就是构造POC,动态调试分析修改POC。下期斗哥将带来Java代码审计Spring框架知识篇将讲述Spring框架构造POC要必备的知识。
java代码审计_Java代码审计| Spring框架思路篇相关推荐
- Java学习笔记-Day64 Spring 框架(二)
Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...
- java aop模式_Java的Spring框架下的AOP编程模式示例
Spring框架的关键组件是面向方面编程(AOP)框架.面向方面的编程不仅打破程序逻辑分成不同的部分称为所谓的担忧.跨越多个点的应用程序的功能被称为横切关注点和这些横切关注点是从应用程序的业务逻辑概念 ...
- 【Java】MyBatis与Spring框架整合(一)
本文将利用 Spring 对 MyBatis 进行整合,在对组件实现解耦的同时,还能使 MyBatis 框架的使用变得更加方便和简单. 整合思路 作为 Bean 容器,Spring 框架提供了 IoC ...
- 2021年最新调查:86% 的 Java 开发人员 依赖 Spring 框架
>>号外:关注"Java精选"公众号,回复"2021面试题"关键词,领取全套500多份Java面试题文件. 自2003年发布以来,Spring Ja ...
- Java普通类获取Spring框架Bean 的五种方法
方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContex(" ...
- java代码审计_Java代码审计入门篇
本期斗哥带来Java代码审计的一些环境和工具准备. Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计J ...
- Java代码审计前置知识——Spring框架AOP和IoC
目录 前言: 0x01.IoC 解释 DI依赖注入形式 2.1 setter方法注入 2.2 构造方法注入
- .Net转Java自学之路—Spring框架篇二(IOC注解、AOP)
Spring的Bean操作(注解方式): 注解:代码中特殊的标记,使用注解可以完成相关功能. @注解名称(属性名称=属性值) 注解可以使用在类.方法.属性上面. 主要用途:可以替代配置文件来创建对象和 ...
- java配置文件报错_java使用spring框架配置文件时遇到的错误——Referenced file contains errors...
报错信息: Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.3. ...
最新文章
- 人体肺活量测试软件,人体肺活量怎么测试
- Windows7中的系统健康报告
- Java12-day03【​​​​​​​(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】
- 05_MyBatis基于注解的开发
- 《白帽子将Web安全》摘抄
- 在 SAP Kyma 上部署一个 Go MSSQL API Endpoint
- 【OS】操作系统的特征与功能
- 阿里云云盾 · 云防火墙技术解读:零配置业务自动分组,安全管理有序、可见...
- n卡eth挖矿设置_“挖矿”再度兴起,N卡停产遇到ETH大涨,显卡会不会涨到18年那样...
- Shell编程之条件判断
- Android的JNI【实战教程】2⃣️--AS下NDK环境配置及第一个工程
- 使用Sqlloader处理数据
- 2022年软件评测师考试大纲
- VS2022编译librtmp制作rtmp.lib用于安装windows版本的python-librtmp 0.3.0
- 价值800新视界影视源码全开源源码
- 范德波振子的李雅普诺夫指数
- 平安夜关于苹果的题目——1705. 吃苹果的最大数目
- 鼠标中键控制音量大小
- protobuf 中 repeated fields 细节
- PowerDesigner16.5 逆向生成物理模型