• 【JAVA代码审计】——2、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环境)

    docker漏洞环境靶场(http://vulhub.org/#/environments/)

    查看Spring漏洞信息:

    docker漏洞环境(https://hub.docker.com/u/vulhub/

    查看你要拉取镜像与方法(或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 +N(全局搜索方法,包括jar包)。

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

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

    0X03 小小总结

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

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    微信出现BUG,发送“ 两位数字+15个句号 ”,双方系统会卡崩……
    手机 https 抓包---Charles篇
    AI通过了艺术创作图灵测试,你根本分不出来作者是不是人
    SublimeText SFTP连接Amazon EC2
    Facebook在代码里下毒,百度身受重伤。。。
    马斯克:有62%的程序员认为人工智能会被武器化 #精选AR人工智能算法
    映客创始人套现12.5亿之后,哪个行业最有可能成为未来造富神话?
    《A.I.爱》王力宏与人工智能谈恋爱 邀李开复来客串
    现代软件工程作业 – 计算最长英语单词链
    软件工程课的分数系统,和打分方法
  • 原文地址:https://www.cnblogs.com/devi1/p/13486325.html
Copyright © 2020-2023  润新知