如要转载请注明出处谢谢: https://www.cnblogs.com/vitalemontea/p/16105490.html

1、前言

某天“发现”了个漏洞,咳咳,原本以为这种没什么大碍,搜了下资料,发现隐患还是非常大的……

按照网上各种copy的文章去操作以后,发现特么要么把服务搞挂了,要么根本修复不了。。终于给我总结出来该怎么办了!!!

2、漏洞简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接口完成。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击

从这大概看出,只要有9200端口,又有es,又没验证加固,基本上就可以爬库了

3、验证漏洞

/*相关阅读

ES的基本概念:https://www.jianshu.com/p/6333940621ec

ES增删查改:https://blog.51cto.com/feelmanc/1250430

http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

*/

emm 疯狂马赛克,可以看到通过IP:端口/_cat/indices

就可以看到“数据库”了,证明漏洞是可被利用的

使用ElasticHD,下载见github

运行后浏览器访问127.0.0.1:9800,输入ES的IP加端口连接,就可以直接管理ES了……

根据index,到query界面即可搜索到数据……太阔怕了

效果同:http://IP:9200/index/_search?pretty=true

 4、漏洞加固(踩坑记录)

【先一起踩个坑吧 XD】

【第一坑】修改配置文件

本人环境中需要对9200端口访问,故采用修改配置文件的方法解决

在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"] #添加白名单,如果一定需要访问的话,比如服务器依赖关系

至此!发现!TMD!ES的服务就挂了……

(补坑:路径在etc/elasticsearch/elasticsearch.yml 下,仅供参考)

【第二坑】参数修改
第一坑中很多资料都是来自网上,csdn真是鱼龙混杂,这里的参数必须要有“:”冒号,很多人复制粘贴错误的,没有冒号参数是无效的
单引号双引号这个emm,没深究,很多用的都是双引号,但是参考原本的参数配置的话,都是单引号的,可以自己验证下

【第三坑】 安装http-basic插件

插件链接:https://github.com/Asquera/elasticsearch-http-basic  #已经停止更新好多年了,放出来只是记录

摸索以后发现,这个所谓的“http-basic”功能是需要插件实现的,github上自取哈,并且还得放到对应路径上去

cd /xx/……/elasticsearch/plugins/  #到插件目录下

mkdir http-basic #创建插件目录

把elasticsearch-http-basic下载下来,放到http-basic里,按理说应该大功告成了

reboot 然后 boom

ES服务仍然是挂了,起不来。

直接说原因:这个http-basic插件早就不更新了,版本是1.5的最新,不支持现在的版本了(都6.x、7.x了)

【填坑】xpack启用

参考资料:https://www.jianshu.com/p/b06386121f81

查阅资料发现,ES 6.8以后的版本,自带一个叫 xpack 的安全功能,启用即可

我看yml配置里面写着是 basic,不知道是不是指 xpack的免费基础功能,可能还有高级的收费功能?

总而言之,继续来到/etc/elasticsearch/下,找到yml那个配置文件

加入以下三行

xpack.security.enabled: true

xpack.license.self_generated.type: basic

xpack.security.transport.ssl.enabled: true

完成后wq,并且reboot

这里就开启了xpack的功能、模式、并且传输启用ssl,

重启完成后

cd /xx/……/elasticsearch/bin

找到elasticsearch-setup-passwords

执行

./elasticsearch-setup-passwords interactive

这里就要开始设置认证的密码,密码自定义,每次密码都要输入两次

输入完了以后可以reboot了,把前面那些错误操作都恢复了以后,ES正常了!!

5、验证

这里输入账号密码,账号默认是“elastic”

正确输入后,才可以访问到ES,至此,修复完成!

其他修复方法:

1)使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证;#这个就看各位的环境中有没有条件去做吧

真实本人亲测Elasticsearch未授权访问漏洞——利用及修复【踩坑指南到脱坑!】的更多相关文章

  1. Memcache未授权访问漏洞利用及修复

    Memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问.本文 ...

  2. Redis未授权访问漏洞复现及修复方案

    首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...

  3. Elasticsearch未授权访问漏洞

    Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击. 0x00 Elasticsearch 安装 前提,保证安装了JDK 1. ...

  4. ZooKeeper未授权访问漏洞确认与修复

    目录 探测2181 探测四字命令 用安装好zk环境的客户端连接测试 修复 修复步骤一 关闭四字命令 修复步骤二 关闭未授权访问 zookeeper未授权访问测试参考文章: https://www.cn ...

  5. rsync未授权访问漏洞利用

    漏洞描述:rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他ssh,rsync主机同步.也就是说如果你可以连接目标IP的r ...

  6. JBOSS未授权访问漏洞利用

    1. 环境搭建 https://www.cnblogs.com/chengNo1/p/14297387.html 搭建好vulhub平台后 进入对应漏洞目录 cd vulhub/jboss/CVE-2 ...

  7. [日常] 研究redis未授权访问漏洞利用过程

    前提:redis允许远程连接,不需要密码 1522057495.583846 [0 123.206.24.121:50084] "set" "dUHkp" &q ...

  8. 10.Redis未授权访问漏洞复现与利用

    一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...

  9. Redis 未授权访问漏洞(附Python脚本)

    0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...

随机推荐

  1. SpringCloudAlibaba 微服务讲解(三)Nacos Discovery-服务治理

    3.1 服务治理 先来思考一个问题,通过上一章的操作,我们已经实现微服务之间的调用,但是我们把服务提供者的网络地址(ip,端口)等硬编码到了代码中,这种做法存在许多问题: 一旦服务提供者地址变化,就需 ...

  2. 转-MySQL 数据库误删除后的数据恢复操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

  3. java线程池源码分析

    我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...

  4. MySQL 里记录货币用什么字段类型?

    NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型,这在 SQL92 标准允 许.他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数 据.当声明一个类是这些类型之 ...

  5. C语言之API

    C语言之API 1.输入(控制台输入) scanf("%d,%d",&a,&b); 2.输出(打印数值) printf("max=%d\n",c ...

  6. 微信小程序中涉及虚拟产品购买,ios暂不支持的相关整理意见

    这个东西呢也不能怪微信小程序,属实苹果搞的事情,那怎么小程序相关内容去通过审核呢? 首先我们要搞清楚哪些属于虚拟商品:如某某书币,某某会员,或者是提前编辑好的网课,文档等都属虚拟商品购买,简言之就是没 ...

  7. Python学习—(windows系统下)安装pygame

    浏览器搜索pygame的windows安装程序,下载与python版本相匹配的文件. 如果.exe文件直接运行: 如果.whl文件,将其复制到要用到的项目文件夹中,在cmd窗口中切换到该文件所在的文件 ...

  8. 【C语言】预处理、宏定义、内联函数

    一.由源码到可执行程序的过程 1. 预处理: 源码经过预处理器的预处理变成预处理过的.i中间文件 1 gcc -E test.c -o test.i 2. 编译: 中间文件经过编译器编译形成.s的汇编 ...

  9. C# Tutorial for Frontend Developer

    1.Basic Hello World Console output -> console.log Console.WriteLine("Hello World!"); Va ...

  10. 前端工作面试HTML相关问题

    前端工作面试HTML相关问题 Q: doctype(文档类型)的作用是什么? A: 在HTML中 doctype 有两个主要目的. 对文档进行有效性验证: 它告诉用户代理和校验器这个文档是按照什么DT ...