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后,可看到solr在8983端口上运行,访问本机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后台访问添加密码。
扫二维码用手机看

公司总部:北京市海淀区西北旺东路10号院博彦科技大厦C座6层
服务热线:400-810-8981 / 010-56380988
版权所有: 北京天地和兴科技有限公司 京ICP备17065546号-1 京公网安备 11010802040756号

扫一扫关注
天地和兴微信公众号