JavaSec-SpringBoot框架

简介

复制代码
Spring Boot是一个通过自动配置、嵌入式服务器和生产级功能,简化了Spring应用程序开发、配置和部署的框架,使开发者能够快速构建独立且易于部署的Java应用
  在其生态系统下,也存在一些相关组件的安全隐患,如Swagger UI可能导致敏感接口泄漏,Spring Boot Actuator可能暴露敏感端口,Druid可能面临未授权访问风险,以及Spring Cloud Gateway存在远程代码执行漏洞等

1.漏洞情景:Swagger UI 敏感接口泄漏

Swagger是一种用于描述API的开源框架,它使用OpenAPI规范来定义API的端点、请求、响应、模式等。Swagger接口泄露漏洞是指在使用Swagger描述API时,由于未正确配置访问控制或未实施安全措施,导致API接口被不授权的人员访问和利用,从而导致系统安全风险

复制代码
return new Docket(DocumentationType.OAS_30)
        .pathMapping("/")
        .enable(swaggerProperties.getEnable())//生产禁用
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("top.whgojp"))//按包扫描,也可以扫描共同的父包,不会显示basic-error-controller
        .paths(PathSelectors.any())
        .build();
}
/**
 * API 页面上半部分展示信息
 */
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
        .title(swaggerProperties.getTitle())//标题
        .description(swaggerProperties.getDescription())//描述
        .contact(new Contact(swaggerProperties.getAuthor(), swaggerProperties.getUrl(), swaggerProperties.getEmail()))//作者信息
        .version(swaggerProperties.getVersion())//版本号
        .build();
}

2.漏洞情景:SpringBoot Actuator 敏感端点泄漏

Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点,通过这些端点你可以获取到应用程序的运行信息,如健康状态、指标、线程 dump、环境变量等

复制代码
management:
  # 端点信息接口使用的端口,为了和主系统接口使用的端口进行分离
  server:
    port: 8080
  # 端点健康情况,默认值"never",设置为"always"可以显示硬盘使用情况和线程情况
  endpoint:
    health:
      show-details: always
  # 设置端点暴露的哪些内容,默认["health","info"],设置"*"代表暴露所有可访问的端点
  endpoints:
    web:
      exposure:
        include: '*'
      base-path: /sys/actuator

// 相关端点信息
路径          描述          默认启用
auditevents  显示当前应用程序的审计事件信息  Yes
beans  显示一个应用中所有Spring Beans的完整列表  Yes
conditions  显示配置类和自动配置类(configuration and auto-configuration  classes)的状态及它们被应用或未被应用的原因configprops  显示一个所有@ConfigurationProperties的集合列表  Yes
env  显示来自Spring的 ConfigurableEnvironment的属性  Yes
flyway  显示数据库迁移路径,如果有的话  Yes
health  显示应用的健康信息(当使用一个未认证连接访问时显示一个简单  的'status',使用认证连接访问则显示全部信息详情)info  显示任意的应用信息  Yes
liquibase  展示任何Liquibase数据库迁移路径,如果有的话  Yes
metrics  展示当前应用的metrics信息  Yes
mappings  显示一个所有@RequestMapping路径的集合列表  Yes
scheduledtasks  显示应用程序中的计划任务  Yes
sessions  允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)  用户会话。使用Spring Session对反应性Web应用程序的支持时不可用。shutdown  允许应用以优雅的方式关闭(默认情况下不启用)  No
threaddump  执行一个线程dump  Yes
heapdump  返回一个GZip压缩的hprof堆dump文件  Yes
jolokia  通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用)  Yes
logfile  返回日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息  Yes
prometheus  以可以被Prometheus服务器抓取的格式显示metrics信息  Yes

3.漏洞情景:Druid 配置不当

复制代码
Apache Druid 是阿里开源的高性能连接池和实时分析分布式数据存储系统,专为大规模时序数据和事件流分析设计,具有快速查询、低延迟写入及横向扩展能力
  在导入Druid依赖时,没有在application.yml中添加配置(或忘记配置账号密码),此时Druid可以未授权访问,攻击者可直接获取websession信息,进行session爆破,以及通过weburi获取敏感信息路径,进行Fuzz攻击

druid:
  ...
  filters: stat,log4j     # wall 这里关闭sql防火墙
  stat-view-servlet:
    enabled: true
    url-pattern: /druid/*
#        login-username: admin
#        login-password: admin
    reset-enable: false
  # 防火墙配置
#      wall:
#        config:
#          multi-statement-allow: false
相关推荐
前端付豪1 分钟前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
爱学习的小学渣3 分钟前
关系型数据库
后端
武子康6 分钟前
大数据-33 HBase 整体架构 HMaster HRegion
大数据·后端·hbase
前端付豪7 分钟前
19、用 Python + OpenAI 构建一个命令行 AI 问答助手
后端·python
凌览7 分钟前
斩获 27k Star,一款开源的网站统计工具
前端·javascript·后端
Zz_waiting.10 分钟前
Javaweb - 10.4 ServletConfig 和 ServletContext
java·开发语言·前端·servlet·servletconfig·servletcontext·域对象
全栈凯哥10 分钟前
02.SpringBoot常用Utils工具类详解
java·spring boot·后端
兮动人17 分钟前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
呆呆的小鳄鱼18 分钟前
cin,cin.get()等异同点[面试题系列]
java·算法·面试
独立开阀者_FwtCoder28 分钟前
"页面白屏了?别慌!前端工程师必备的排查技巧和面试攻略"
java·前端·javascript