首页 > 编程语言 >java框架漏洞的学习笔记

java框架漏洞的学习笔记

时间:2024-03-23 13:31:32浏览次数:29  
标签:java 框架 spring 笔记 漏洞 应用程序 RCE 加密

网络安全学习之框架漏洞


学习框架漏洞的意义

学习框架漏洞可以在网站漏洞挖掘的信息收集阶段收集到该网站的框架信息时用已经发现的历史漏洞来尝试漏洞挖掘(不是每一个网站的框架出现问题时都会打补丁),而学习框架漏洞能在发现框架版本和类型时能第一时间判断是否存在漏洞且知道该信息是框架用于搜索历史漏洞,所以框架漏洞的学习是非常重要的。

一、spring框架常见漏洞

spring简介

spring是非常常见的Java web框架,也是网络安全研究的热门框架。

Actuators介绍

Actuators是spring boot用来对系统进行监控的一个功能模块,spring boot是spring常见的框架扩展,如果没有做好权限控制非法用户可以用其获得应用系统中的监控信息。

spring区分

spring boot框架项目的404 405都如一下页面一样(绿叶草)。
请添加图片描述

请添加图片描述
看到该页面可以判定该框架为spring boot框架,就可以尝试Actuators功能模块的漏洞挖掘。

默认路径

有些程序员会自定义 /manage 、 /management 、项目 App 相关名称为 spring 根路径
Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ,2.x 版本则统一以 /actuator 为起始路径
Spring Boot Actuator 默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改成 /appenv

SpringBoot历史漏洞

whitelabel error page SpEL RCE
spring cloud SnakeYAML RCE
eureka xstream deserialization RCE
jolokia logback JNDI RCE
jolokia Realm JNDI RCE
restart h2 database query RCE
h2 database console JNDI RCE
mysql jdbc deserialization RCE
restart logging.config logback JNDI RCE
restart logging.config groovy RCE
restart spring.main.sources groovy RCE
restart spring.datasource.data h2 database RCE

原文链接:https://blog.csdn.net/weixin_53747497/article/details/129891959

spring boot常见端点

/autoconfig 提供了一份自动配置报告,记录哪此自动配置条件通过了,哪些没通过
/contigprops 描述配置属性 (包含默认值) 如何注入 Bean
/beans 描述应用程序上下文里全部的 Bean,以及它们的关系
/dump 获取线程活动的快照 (常见)
/env 获取全部环境属性 (常见)
/env/(name) 根据名称获取特定的环境属性值
/health 报告应用程序的健康指标,这些值由 Healthlndicator 的实现类提供 (常见)
/info 获取应用程序的定制信息,这些信息由 info 打头的属性提供
mappings 描述全部的 URI 路径,以及它们和控制器 (包含 Actuator 端点)的映射关系
/metrics 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数
/metrics/(name) 报告指定名称的应用程序度量值
/shutdown 关闭应用程序,要求 endpoints.shutdown.enabled 设置为 true (默认为 false)
/trace 提供基本的 HTTP 请求跟踪信息 (时间截、HTTP 头等)

例子
1.x版本:http://ip:port/env
2.x版本:http://ip:port/actuator/env
注:遇到springboot项目可以对这些端口通过wfuzz去枚举(这里的路径可以去网上搜索更多的路径,做一个比较大且全的字典,增加fuzz成功几率,fuzz时只显示200响应头的数据,不显示404的),很可能会出现因为配置不当暴露内网地址,用户密码等敏感配置信息

二丶Shiro框架反序列化漏洞

shiro框架介绍

shiro是Apache开发的一款强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。Shiro拥有易于理解的API,您可以快速、轻松地获得任何应用程序——从最小的移动应用程序到最大的网络和企业应用程序。

Shiro漏洞原理

前提条件:获得该网站ASE加密密钥
原理:shiro框架的cookie是通过序列号->ASE加密->base64编码形成的,通过ASE加密构造恶意cookie,最后实现原理是cookie被base64解码,ASE解密,最后反序列化,得到反序列化漏洞。
注:shiro1.2.4之前版本中使用的是硬编码,AES加密的密钥默认在代码里。其默认密钥的base64编码后的值 kPH+bIxk5D2deZiIxcaaaA==。现在高版本为了解决硬编码是每次生成一个密钥进行加密,而很多开发者是自定义密钥加密,可以通过信息收集得到自定义密钥。

三丶Tomcat任意文件写入(CVE-2017-12615)

漏洞原理

当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。

影响范围

Apache Tomcat 7.0.0 - 7.0.81
注:具体操作方法可以搜索该漏洞编号观看

总结

这里主要是写一些看到的java框架漏洞,用以记录,加深印象,框架漏洞非常的多,主要是对各框架能区分出类型并且知道版本,去各大平台搜索历史漏洞,尝试复现,可能就会因为配置错误等原因挖到漏洞。这些java框架漏洞原理主要是观看各类文章总结的,用以个人学习记录。

标签:java,框架,spring,笔记,漏洞,应用程序,RCE,加密
From: https://blog.csdn.net/weixin_63560942/article/details/136964381

相关文章

  • 【华为OD】2024年C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100分真题集质量分:94价格:39.9元C卷200分真题集质量分:94价格:99.9元从2023年11月开始,华为OD题目切换到C卷,基本上大概率会使用半年左右,要在2024年5月之前把这些题目都好好练习一下......
  • Java中过滤器应用一统一处理请求和响应中文乱码
      请求/响应中文乱码演示写一个简单的Servlet进行测试,返回数据的时候,会出现中文乱码如下图所示。有时候请求的数据中如果包含中文,如果没有经过处理,同样会出现中文乱码。 解决办法出现中文乱码时,就可以考虑统一处理,如果不统一处理,在每一个Servlet中,如果数据返回中有中文,......
  • Java中使用fastJson
     FastJson简介Fastjson是阿里巴巴开发的一个开源Java库,用于处理JSON数据,广泛应用于Web服务、API接口、数据交换等多个场景。FastJson的作用主要作用是用于将Java对象转换为JSON格式,或将JSON字符串转换为Java对象。它可以操作任何Java对象。主要特性有:.a.高性能:采......
  • 开源的数据可视化平台 Kibana 日志可视化 mac 安装笔记
    拓展阅读日志开源组件(一)java注解结合springaop实现自动输出日志日志开源组件(二)java注解结合springaop实现日志traceId唯一标识日志开源组件(三)java注解结合springaop自动输出日志新增拦截器与过滤器日志开源组件(四)如何动态修改springaop切面信息?让自动日志输出......
  • 【React】使用 JSX 为 JavaScript 添加标签
    使用JSX为JavaScript添加标签实际上是将JSX语法与JavaScript代码结合使用,以描述用户界面。JSX允许你在JavaScript中编写类似HTML的结构,并最终由React库将其转换为真正的DOM元素。以下是将标签引入JavaScript以及将HTML转化为JSX的步骤和JSX的一些基本......
  • 是时候来唠一唠synchronized关键字了,Java多线程的必问考点!
    写在开头在之前的博文中,我们介绍了volatile关键字,Java中的锁以及锁的分类,今天我们花5分钟时间,一起学习一下另一个关键字:synchronized。synchronized是什么?首先synchronized是Java中的一个关键字,所谓关键字,就是Java中根据底层封装所赋予的一种具有特殊语义的单词,而synchronized......
  • Java学习笔记:ArrayList集合
    目录为什么要有集合:解决数组自动扩容的问题Java、python数据类型对比Java支持的数据类型主要分为两大类:Python支持多种数据类型,主要包括以下几种:在Java中常见的数据类型实现方式:Java通过使用集合框架来解决一组数据的存储和管理Java集合大致也可分成List、Set、Queue、Map四种接口......
  • Java随机读写文件
    目录1. 构造方法2.文件指针3.读写操作4.应用示例       文件输入输出流类(FileInputStream和FileOutputStream)实现了对磁盘文件的顺序读写,然而在实际的应用中,经常需要在文件的任意位置读或写数据,并且要求同时进行读和写操作。为此,Java还提供了一个功能更强大、......
  • java数据结构与算法基础-----排序------堆排序
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录堆排序是利用堆(数据结构)设计的排序算法,属于选择排序,最坏,最好,平均时间复杂度均为O(nlogn),不稳......
  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg
    FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《F......