java代码审计_Java代码审计| Spring框架思路篇

Java的WEB框架是Java进阶课程,当要进行Spring的漏洞分析,要有一定的Java代码知识储备。

Java后端标准的学习路线:JavaSE->JavaEE->Java Web框架

830f19600b60259fce58604f6fed9f52.png

Spring是Java最核心,最重要的框架。

0X01 审计环境准备

当进行Spring的代码审计(Spring某一个组件包进行分析)时,首先要有相应Spring项目源码,要让没有编写代码经验的朋友从头编写一个Spring的漏洞环境还是有一点难度的,所以要学习Spring代码审计第一步要知道如何查找环境,复现环境。

1. 方法一(spring-messaging为例)

在docker中获取Spring漏洞环境源码(默认已有docker环境)

c3d53c093086a17763e55f135b3af744.png

查看Spring漏洞信息:

查看你要拉取镜像与方法(或docker中使用搜索 docker search spring-messaging)。

9bb2fe0b1152c6ee0039be2248adaf14.png

73433387c8d15f057db9bb7c3527094d.png

93874fe8214e5ec5e863df1a00820e79.png

拉取镜像:

docker pull vulhub/spring-messaging:5.0.4。

48456df1c5d59718d0cb6d22f6b16492.png

查看拉取的镜像。

93ed444cfa0ce086b18cb2e6f3b4eeb4.png

运行镜像(容器)。

10a43775b8515480270d5e951cf6a872.png

访问主机的8080,这一步已拿到漏洞的环境,可以进行POC的验证。

cf5490c99f8070c8778c5355e8fe44b5.png

查看容器ID与启动时运行的命令,可以看到使用命令为java -jar,就能知道环境里面的源码是个jar包。

0bbbba7404c1b1dcb6ae85ff4e57a8dc.png

进入容器并且找到源码。

c0e21d5db538e077ed579d667fa805fa.png

将容器中的文件复制到本地。

10e928191e5c779b138ffd92136d0b44.png

1542dfd9f3497883fd465867104f5fce.png

将jar放入jd-gui就能看到相应的源代码。

ee7db37abb7ea95fa5daa5032683cea5.png

同样在本地也可以使用java -jar运行打包成jar的项目。

b8feaeb4b415a1e64f5f0211fdd0a229.png

扩展:

如果复制出来的是个war,则只要放入tomcat下的webapps目录,运行tomcat就能生成相应的源代码,并且部署了项目,根据tomcat加war名可访问项目。

0fa971645328234160b28c3762b273b3.png

091a0e4fa5dad1a24725b4a150bb6d1c.png

a42a56ae9515b2f0effa5c2e448dea81.png

2. 方法二

如果再未接触过docker情况下,可以到github(https://github.com)搜索环境源码(此方法搜索的源码准确性低),不一定存在相应的漏洞,要修改相应的代码,才能复现漏洞。

936f363d0620f6bc08a64a768da5ca8a.png

0X02 Spring框架审计思路

先熟悉Spring已爆出的各个影响版本、漏洞造成原因、漏洞流程。

第一步:审计时先查看项目是否使用有漏洞的jar包版本(查看Spring的配置文件,但现在的项目都是Maven管理jar包,所以先查看Maven的配置文件pom.xml与.iml文件)。

d5c1028e53b3e450fe489b3d0c29012b.png

从图中可以看出项目使用Spring Framework 5.0.4并且使用spring-websockets 模块所以猜测可能存在Spring Messaging 远程命令执行漏洞。

第二步:再查看项目是否使用了造成漏洞类与方法或可能造成漏洞的危险类与方法(项目导入IDE搜索问题类、问题方法)

IDEA中

Ctrl+Shift+T(全局搜索类,包括jar包)。

0759b40eccab372beb7f4bb4b12dc15a.png

回车就能进入类所在的位置。

Ctrl+Shift+A\t+N(全局搜索方法,包括jar包)。

9bc934bf09ba36322f4c1a6a1e822bff.png

第三步:满足前两步,接下来就可以运行初步的POC动态调试确定是否可以利用漏洞(使用IDEA的Debug),在造成漏洞的类与方法处打上断点进行流程分析。

22861109e41cda9081ed04a9497478da.png

分析和调试数据流程,构造poc。

3f398ca80b19013c1e6f4f41633d0dc2.png

0X03 小小总结

此篇讲述如何得到Spring审计的Demo,审计源码,提供Spring框架审计思路初步判定是否存在漏洞,剩下就是构造POC,动态调试分析修改POC。下期斗哥将带来Java代码审计Spring框架知识篇将讲述Spring框架构造POC要必备的知识。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值