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
相关推荐
m0_7472660926 分钟前
代码审计与web安全选择题1
网络安全
君鼎2 小时前
安全逆向工程学习路线
安全·逆向·网安
木棉软糖3 小时前
一个MySQL的数据表最多能够存多少的数据?
java
魔尔助理顾问3 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
程序视点3 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
GEM的左耳返3 小时前
Java面试全攻略:Spring生态与微服务架构实战
spring boot·redis·spring cloud·微服务·kafka·java面试
愿你天黑有灯下雨有伞3 小时前
Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
java·spring boot·spring
你的人类朋友3 小时前
❤️‍🔥微服务的拆分策略
后端·微服务·架构
清 晨3 小时前
剖析 Web3 与传统网络模型的安全框架
网络·安全·web3·facebook·tiktok·instagram·clonbrowser
Java初学者小白4 小时前
秋招Day20 - 微服务
java