Elasticsearch 未授权访问漏洞验证及修复

漏洞描述:

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

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

 

漏洞检测:

漏洞检测:
http://101.198.161.xxx:9200/_cat/indices/
http://101.198.161.xxx:9200/_plugin/head/
http://101.198.161.xxx:9200/_nodes/
http://101.198.161.xxx:9200/_status
http: //101.198.161.xxx:9200/_search?pretty

如图即为未授权访问:

 

漏洞修复:

1.限制IP访问,禁止未授权IP访问ElasticSearch端口(默认9200)。

2.通过ES插件形式来增加访问验证,需要注意增加验证后切勿使用弱口令:

①shield插件,收费,暂不考虑。

②针对1.7.0版本之前的ElasticSearch,可采用elasticsearch-http-basic插件。

下载地址:https://github.com/Asquera/elasticsearch-http-basic/releases

elasticsearch-http-basic和其他ES插件一样,安装在plugins文件夹下以后,在config/elasticsearch.yml中统一配置:

http.basic.enabled true #开关,开启会接管全部HTTP连接
http.basic.user “admin” #账号
http.basic.password “admin_pw” #密码
http.basic.ipwhitelist [“localhost”, “127.0.0.1”] #白名单内的IP访问不需要通过账号和密码,支持IP和主机名,不支持IP区间或正则。

③针对elasticsearch2.x以后的版本可采用search-guard插件。

同样在config/elasticsearch.yml中统一配置,在末尾追加以下内容:

searchguard.ssl.transport.pemcert_filepath: certificates/esnode.pem
searchguard.ssl.transport.pemkey_filepath: certificates/esnode-key.pem
searchguard.ssl.transport.pemtrustedcas_filepath: certificates/root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: certificates/esnode.pem
searchguard.ssl.http.pemkey_filepath: certificates/esnode-key.pem
searchguard.ssl.http.pemtrustedcas_filepath: certificates/root-ca.pem
searchguard.allow_unsafe_democertificates: true
searchguard.allow_default_init_sgindex: true
searchguard.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test,C=de
searchguard.enable_snapshot_restore_privilege: true
searchguard.check_snapshot_restore_write_privileges: true
searchguard.restapi.roles_enabled: ["sg_all_access"] 

配置完成之后,默认访问口令为”username:admin,pwd:admin”,修改默认admin密码操作可参考https://blog.csdn.net/lu_wei_wei/article/details/100727090

 

3.架设nginx反向代理服务器,并设置http basic认证来实现elasticsearch的登录认证。(具体可参考原文地址:https://www.sojson.com/blog/213.html)

 

posted @ 2021-03-27 18:27  迪克推多0  阅读(15094)  评论(0编辑  收藏  举报