安全研究
全部分类

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

  • 分类:漏洞分析利用
  • 作者:
  • 来源:
  • 发布时间:2019-11-07 19:52
  • 访问量:

【概要描述】Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Solr 使程序员能够轻松地开发具有高级功能的复杂、高性能的搜索应用程序。

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

【概要描述】Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Solr 使程序员能够轻松地开发具有高级功能的复杂、高性能的搜索应用程序。

  • 分类:漏洞分析利用
  • 作者:
  • 来源:
  • 发布时间:2019-11-07 19:52
  • 访问量:
详情

​0X01: Apache Solr介绍

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP Apache Lucene 实现。Solr 使程序员能够轻松地开发具有高级功能的复杂、高性能的搜索应用程序。它是一个独立的企业级搜索应用服务器,它对外提供 API 接口。用户可以通过 HTTP 请求或者使用 Http Get 提出查找请求。

0X02: 安装Apache Solr

Oracle官方下载solr,下载后解压并且执行solr.cmd start,执行后报错,这里要求java版本大于1.8. 我的java版本是1.7 更新Java版本后解决该问题。

0X03: 漏洞复现

执行完solr.cmd start后,可看到solr8983端口上运行,访问本机8983端口,127.0.0.1:8983可看到solr的页面。

 

环境搭建成功后,点击Core admin添加一个管理员。首次添加会提示失败。

 

这时需要在solr的安装目录的/server/solr 下建立一个与想创建管理员名称相同名称的目录。这里创建一个test

然后再将下图路径的conf文件复制到test目录中。

 

此时再添加core,成功。

 

然后访问test下的config 看是否可以访问。

 

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

 

也就是说 我们要先发post包将params.resource.loader.enabled的值设为true

 

这里将GET修改为POST ,再将修改params.resource.loader.enabled值的包发送,可看到返回status的值为0等信息。 

然后发送出的poc

 

执行了系统命令whoami

修复建议:apache暂时没有对solr更新补丁,建议使用该组件的用户(1 sorl进行访问限制、(2 sorl后台访问添加密码。

关键词:

扫二维码用手机看

天地和兴

公司总部:北京市海淀区中关村软件园8号华夏科技大厦三层

服务热线:400-810-8981 / 010-82896289

版权所有:北京天地和兴科技有限公司      京ICP备17065546号-1

扫一扫关注

天地和兴微信公众号