框架漏洞(1)SpringBoot
1. Actuator未授权访问漏洞
漏洞描述:
Spring Boot Actuator是默认集成的监控组件,提供
/env
、/heapdump
等敏感端点。若开发者未关闭或配置权限,攻击者可直接访问这些端点,获取数据库密码、Redis密钥、OSS凭证等敏感信息。例如,通过/env
可检索配置中的明文密码,通过/heapdump
可下载JVM堆信息并解析出密码。
利用思路:
探测端点:通过扫描
/actuator
路径或默认端点(如/health
、/info
)确认Actuator是否暴露。信息收集:访问
/env
获取环境变量,搜索password
、secret
等关键词;访问/heapdump
下载堆信息,使用工具(如Eclipse Memory Analyzer)解析密码。后续攻击:利用获取的凭证登录数据库或云服务,进一步横向渗透。
防护建议:
①禁用非必要端点,或通过
management.endpoints.web.exposure.include
限制暴露范围。②启用Spring Security,配置Actuator端点的认证和授权。
2. Eureka XStream反序列化漏洞
漏洞描述:
Spring Cloud集成Eureka时,若依赖
eureka-client < 1.8.7
且未限制外部请求,攻击者可构造恶意payload触发XStream反序列化,导致远程代码执行(RCE)。
利用条件:
①目标系统存在
/env
和/refresh
接口。②依赖
spring-boot-starter-actuator
和eureka-client < 1.8.7
。③目标可访问攻击者的HTTP服务器。
利用思路:
设置恶意URL:通过
/env
接口修改eureka.client.serviceUrl.defaultZone
为攻击者控制的Eureka Server地址。触发反序列化:访问
/refresh
接口,目标系统从恶意Server获取payload并解析,触发RCE。反弹Shell:在恶意Server上监听端口,接收目标系统的反弹连接。
防护建议:
①升级
eureka-client
至1.8.7+版本。②禁用
/refresh
接口或配置权限。③限制Actuator端点的访问权限。
3. Jolokia组件XXE漏洞
漏洞描述:
Jolokia用于JMX远程管理,若目标系统存在
/jolokia
接口且环境存在相关MBean,攻击者可构造恶意XML文件触发XXE攻击,读取服务器文件或执行JNDI注入。
利用条件:
①目标系统存在
/jolokia
接口。②JDK版本<6u201/7u191/8u182/11.0.1(LDAP方式)。
③目标可访问攻击者的HTTP服务器。
利用思路:
构造恶意请求:通过
/jolokia
调用ch.qos.logback.classic.jmx.JMXConfigurator
的reloadByURL
方法,加载恶意XML文件。触发XXE:XML中利用外部实体引用(如
file:///etc/passwd
)读取文件,或通过JNDI注入执行远程代码。获取敏感信息:读取服务器文件或执行系统命令。
防护建议:
①禁用Jolokia组件或配置权限。
②升级JDK版本,修复XXE漏洞。
③限制XML输入的外部实体引用。
4. 数据库注入漏洞
漏洞描述:
开发者未对用户输入进行过滤或转义,直接拼接SQL语句,导致攻击者可构造恶意SQL查询数据库。
利用思路:
探测注入点:在参数中输入单引号或特殊字符,观察系统是否报错。
构造恶意SQL:通过
UNION SELECT
、--
等注释符读取数据库信息或执行命令。获取敏感数据:下载用户表、密码表等敏感信息。
防护建议:
①使用参数化查询(如PreparedStatement)或ORM框架(如JPA、MyBatis)。
②对用户输入进行严格验证和过滤。
5. 跨站脚本攻击(XSS)漏洞
漏洞描述:
开发者未对用户输入进行HTML转义,攻击者可注入恶意脚本,窃取用户信息或篡改页面内容。
利用思路:
构造恶意URL:在参数中注入
<script>alert(1)</script>
等脚本。诱导用户访问:通过邮件、社交媒体等传播恶意链接。
窃取敏感信息:脚本可获取用户Cookie或会话信息。
防护建议:
①对用户输入进行HTML转义,使用
HtmlUtils.htmlEscape
。②启用Content Security Policy(CSP),限制脚本执行来源。
③使用Thymeleaf等模板引擎,默认转义输出内容。
6. 反序列化漏洞
漏洞描述:
开发者使用不安全的反序列化方式,攻击者可构造恶意序列化对象,触发远程代码执行。
利用思路:
构造恶意序列化对象:使用工具(如ysoserial)生成Payload。
触发反序列化:通过上传、RMI等方式将Payload传入系统。
执行远程代码:Payload被反序列化时执行恶意代码。
防护建议:
①不信任反序列化的数据源,使用安全的反序列化方式。
②升级依赖库,修复已知反序列化漏洞。
7. 文件上传漏洞
漏洞描述:
开发者未限制上传文件类型和大小,攻击者可上传恶意文件(如WebShell),篡改应用配置或传播病毒。
利用思路:
上传恶意文件:上传
.jsp
、.php
等可执行文件。执行恶意代码:通过访问上传的文件执行系统命令。
篡改配置:修改
application.properties
等配置文件。
防护建议:
①限制上传文件类型和大小,对上传文件进行安全扫描。
②存储文件时进行重命名,避免直接执行。
8. 日志泄露漏洞
漏洞描述:
日志中记录敏感信息(如数据库密码、API密钥),攻击者可窃取日志获取敏感数据。
利用思路:
访问日志文件:通过文件系统或Web接口获取日志。
搜索敏感信息:在日志中搜索
password
、secret
等关键词。利用敏感信息:登录数据库或云服务。
防护建议:
①对日志信息进行脱敏处理,限制日志级别和输出范围。
②定期清理日志文件,避免长期存储敏感信息。
9. 跨站请求伪造(CSRF)漏洞
漏洞描述:
开发者未配置CSRF令牌,攻击者可诱导用户发送恶意请求,执行敏感操作。
利用思路:
构造恶意表单:在攻击者控制的页面中嵌入表单,提交敏感请求。
诱导用户访问:通过邮件、社交媒体等传播恶意链接。
执行敏感操作:用户登录状态下提交表单,执行转账、修改密码等操作。
防护建议:
①使用CSRF令牌验证请求的合法性。
②启用Spring Security的CSRF防护功能。
10. 参数污染漏洞
漏洞描述:
开发者未对用户输入进行合法性校验,攻击者可提交恶意参数,导致应用崩溃或执行任意代码。
利用思路:
构造恶意参数:提交超长字符串、特殊字符等。
触发应用崩溃:导致内存溢出、栈溢出等错误。
执行任意代码:在特定条件下执行系统命令。
防护建议:
①对用户输入进行合法性校验,使用安全的API调用方式。
②避免直接使用用户提供的参数。
总结
SpringBoot框架的漏洞主要源于配置不当、依赖过时或开发者安全意识不足。攻击者可通过Actuator、反序列化、XSS等方式获取敏感信息或执行远程代码。开发者应定期更新依赖库、配置安全策略(如权限控制、输入验证),并启用Spring Security等安全框架,提升应用的安全性。
结语
永远相信
美好的事情即将发生
!!!