备注:本文重在检测合修复,适合甲方人员查阅
漏洞简介
Elasticsearch使用JAVA语言开发并作为Apache许可条款下的开放源码发布,它是当前流行的企业级搜索引擎,其增删改查操作全部由HTTP接口完成,如果Elasticsearch服务直接披露在公网环境中且未对服务访问端口(默认;9200)进行认证配置(Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞),则攻击者可以拥有Elasticsearch的所有权限,之后对数据进行任意操作,业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
漏洞成因
Elasticsearch未授权访问漏洞的成因主要有以下几个方面:
- Elasticsearch服务披露在公网且允许远程访问
- Elasticsearch服务端口(默认:9200)未设置认证
漏洞利用
环境介绍
- 目标靶机:Ubuntu
- 目标地址:192.168.17.154
环境搭建
Step 1:JDK版本1.8+
![](https://ask.qcloudimg.com/http-save/yehe-8423247/d764e759275509f48c6be84538af9934.png)
Step 2:创建一个elasticsearch用户,elasticsearch不能root执行
useradd al1ex
passwd al1ex
su al1ex
![](https://ask.qcloudimg.com/http-save/yehe-8423247/a2f6bea341c58eaeedd42c6a6170954a.png)
Step 3:下载环境并进行安装
#下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
#解压安装包
tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz
![](https://ask.qcloudimg.com/http-save/yehe-8423247/4fab3a7ef823e142112df8e7b2cf0a22.png)
Step 4:编辑elasticsearch-7.10.0/config/elasticsearch.yml,修改以下内容
a、编辑node.name 名称
![](https://ask.qcloudimg.com/http-save/yehe-8423247/912a84ba7e3c8470498e7778a73350d9.png)
b、数据存储和日志存储路径放开注释
path.data: /home/r00t/elasticsearch-7.10.0/data
path.logs: /home/r00t/elasticsearch-7.10.0/logs
![](https://ask.qcloudimg.com/http-save/yehe-8423247/f36bcbd584f220a1ba33c4b6f06d49f9.png)
c、设置IP限制、端口设置、跨越设置
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
![](https://ask.qcloudimg.com/http-save/yehe-8423247/488e185dc09617536f93e5441f4b7b6b.png)
d、设置启动服务器的标识符
cluster.initial_master_nodes: ["node-1"]
![](https://ask.qcloudimg.com/http-save/yehe-8423247/dbad17b7ec504cd8b88e5a0676316373.png)
Step 5、修改al1ex用户的可创建文件描述权限,使用命令"vim /etc/security/limits.conf"编辑文件,在最后面追加如下内容:
* hard nofile 65536
* soft nofile 65536
![](https://ask.qcloudimg.com/http-save/yehe-8423247/8f3015a1612410c64f02b7ff9502ac8d.png)
Step 6:通过命令"vim /etc/sysctl.conf'修改用户可以拥有的VMA的数量,在最后面追加如下内容
#fs.protected_symlinks=0
vm.max_map_count=655360
![](https://ask.qcloudimg.com/http-save/yehe-8423247/71cd675d503c0621aa74805c8b252dde.png)
Step 9:设置文件权限
chown -R al1ex /home/r00t/elasticsearch-7.10.0/
![](https://ask.qcloudimg.com/http-save/yehe-8423247/92d117dd7078857029b767f97f20fc65.png)
Step 10:使用al1ex用户启动服务并访问
./elasticsearch-7.10.0/bin/elasticsearch -d
![](https://ask.qcloudimg.com/http-save/yehe-8423247/662865114822c136f67e7e090d18e864.png)
漏洞检测
检测方式1:浏览器访问
#基本检测
http://192.168.17.154:9200/
![](https://ask.qcloudimg.com/http-save/yehe-8423247/34ceaad52283ef623a5a53126eef7603.png)
#查看节点数据
http://192.168.17.154:9200/_nodes
![](https://ask.qcloudimg.com/http-save/yehe-8423247/e5247dc83522c365308ae3d123c032c8.png)
修复方法
编辑config/elasticsearch.yml文件,在其中为9200端口设置认证
#开启开关接管全部HTTP连接
http.basic.enabled: true
#设置账号密码