#渗透测试#漏洞挖掘#红蓝攻防#漏洞挖掘#未授权漏洞-Es未授权漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。
目录
一、Elasticsearch
二、ES的主要作用
三、什么是es未授权?
1.“es未授权”的含义
2.判断是否存在“es未授权”漏洞
3.“es未授权”漏洞产生的原因
4.防范“es未授权”漏洞的措施
四、es如何查看node节点
1. 使用 _cat/nodes API
2. 使用 _nodes API
3. 使用 Kibana Dev Tools
4. 使用 Elasticsearch Head 插件
5. 查看主节点
五、ES未授权访问的案例
六、ES未授权访问的检测方法
一、Elasticsearch
Elasticsearch(简称ES)是一种分布式搜索引擎,它能够提供实时的全文搜索和分析功能。Elasticsearch是基于Apache Lucene构建的,但相比Lucene,它提供了更高级的功能和更友好的用户接口。Elasticsearch不仅可以用于日志数据的快速检索和分析,还可以用于电商、在线媒体等平台的推荐系统,社交媒体分析,以及各种需要全文搜索的应用场景。
Elasticsearch的特点包括:
- 分布式:Elasticsearch是一个分布式搜索引擎,可以水平扩展以处理大量的数据和并发请求。
- 实时性:Elasticsearch能够实时地索引和查询数据,这对于需要实时响应的应用场景非常重要。
- 全文搜索:Elasticsearch提供了强大的全文搜索功能,支持多字段匹配、高亮显示等特性。
- 易用性:Elasticsearch提供了RESTful API,使得开发者可以很方便地与之交互。
- 可扩展性:Elasticsearch可以通过插件机制扩展其功能,例如支持地理空间查询、机器学习等。
二、ES的主要作用
包括以下几个方面:
全文搜索:Elasticsearch 提供强大的全文搜索功能,允许用户在大规模文本数据集中快速执行全文搜索操作。这使得它非常适合用于实现网站的站内搜索、文档管理系统中的搜索功能等。
实时数据分析:Elasticsearch 支持实时数据分析,用户可以实时地插入、更新和查询数据。这使得 Elasticsearch 在需要快速响应和实时数据分析的应用场景中非常有用,如监控系统、日志分析等。
日志和事件数据存储:Elasticsearch 被广泛用于存储和分析大量的日志和事件数据。通过与 Logstash 配合使用,可以方便地将各种数据源的日志数据导入 Elasticsearch 中,然后使用 Kibana 进行可视化和分析。
业务智能和分析:Elasticsearch 可以用于构建业务智能和分析应用程序,帮助用户理解他们的数据并从中提取有价值的信息。通过复杂的查询和聚合功能,用户可以对数据进行深入分析。
数据存储和分析:Elasticsearch 可以为所有类型的数据提供实时的搜索和分析,包括结构化文本、非结构化文本、数字数据或地理空间数据。Elasticsearch 能够以快速搜索的方式有效地对其进行存储和建立索引。
自动化业务工作流程:使用 Elasticsearch 作为存储引擎可以自动化业务工作流程,提高效率。
地理信息系统 (GIS):使用 Elasticsearch 可以作为地理信息系统管理,集成和分析空间信息。
生物信息学研究:Elasticsearch 可以作为生物信息学研究工具来存储和处理遗传数据。
三、什么是es未授权?
1.“es未授权”的含义
“es未授权”指的是ElasticSearch在默认配置下可能存在未授权访问风险,即允许非法查询和操作数据,攻击者可以在没有经过任何身份验证的情况下访问ElasticSearch服务中的数据,并且能够进行各种操作,如查询、修改甚至删除数据等操作,这会导致业务系统面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索等严重后果。ElasticSearch是一款Java编写的企业级搜索服务,它基于RESTful web接口,其增删改查操作全部由http接口完成,启动此服务默认开放HTTP - 9200端口,可被非法操作数据。
2.判断是否存在“es未授权”漏洞
- 通过访问特定URL查看返回字段
- 如果访问
http://ip/9200
,返回字段中有“you know,for search”则代表有未授权漏洞5。- 如果有登录点,则不存在未授权漏洞。
3.“es未授权”漏洞产生的原因
- 授权模块需付费:由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。
4.防范“es未授权”漏洞的措施
- 限制HTTP端口访问
- 限制http端口的IP访问,不对公网开放,只对内网开放。例如修改主目录下config/elasticsearch.yml 配置文件,将network.host 配置为内网地址或者127.0.0.1 1。
- 启用访问验证
- 通过安装并配置x - pack插件启用访问验证,在主目录(如
/usr/share/elasticsearch
)下运行bin/elasticsearch - plugin install x - pack
安装x - pack插件,在config/elasticsearch.yml 配置文件增加xpack.security.enabled:True
的配置,然后运行命令bin/x - pack/setup - passwords interactive
为ES服务设置密码,最后重启ES服务。- 其他措施
- 整改建议还包括设置nginx反向代理、升级到安全版本以及使用Elasticsearch漏洞监测工具来检查索引安全性、SSL/TLS加密等方面是否存在问题等。这些工具可以检测Elasticsearch的索引是否设置有适当的访问控制,防止未授权的数据读取或写入,还会检查Elasticsearch实例是否使用SSL/TLS进行加密通信以保护数据在传输过程中的安全等。
四、es如何查看node节点
在Elasticsearch中,查看节点(node)的信息可以通过多种方式实现。以下是几种常见的方法:
1. 使用
_cat/nodes
API
_cat/nodes
API 可以用来查看集群中所有节点的基本信息。你可以通过以下命令来获取这些信息:curl -X GET "localhost:9200/_cat/nodes?v"
这个命令会返回一个表格,其中包含了每个节点的 IP 地址、堆内存使用情况、CPU 负载、节点角色等信息。
v
参数表示以更易读的格式返回结果。2. 使用
_nodes
API
_nodes
API 提供了更详细的节点信息,包括节点的配置、运行状态等。你可以通过以下命令来获取这些信息:curl -X GET "localhost:9200/_nodes?pretty"
这个命令会返回一个 JSON 对象,其中包含了每个节点的详细信息。
pretty
参数表示以更易读的格式返回结果。3. 使用 Kibana Dev Tools
如果你安装了 Kibana,你也可以使用 Dev Tools 来查看节点信息。在 Dev Tools 控制台中输入以下命令:
GET _nodes
这将返回与上述
curl
命令相同的结果。4. 使用 Elasticsearch Head 插件
Elasticsearch Head 是一个基于 Web 的轻量级工具,可以用来查看集群信息、索引、文档等。你可以通过以下步骤来使用它:
- 安装 Elasticsearch Head 插件。
- 打开浏览器,访问
http://localhost:9100/
。- 在界面中选择“Cluster”选项卡,可以看到集群中所有节点的信息。
5. 查看主节点
如果你想查看当前集群中哪个节点是主节点(master),可以使用以下命令:
curl -X GET "localhost:9200/_cat/master?v"
这个命令会返回主节点的名称和其他相关信息。
五、ES未授权访问的案例
Elasticsearch未授权访问利用:在一个案例中,攻击者发现了一个未授权访问的Elasticsearch实例,并尝试利用这一漏洞。攻击者首先查找有多少数据库(实际上是index),然后查找数据库中有多少数据表(实际上是type)。攻击者可以查看具体数据,默认值返回10条数据,如果需要可以修改size。此外,攻击者还可能利用低版本的Elasticsearch进行命令执行。
黑产团伙利用ES未授权访问漏洞实施勒索:在一个真实案例中,黑产团伙利用Elasticsearch未授权访问漏洞,删除了所有索引,并留下勒索信息,要求受害者支付0.021比特币以恢复数据。这种勒索方式对企业的损失是不可估量的。该团伙通过网络空间搜索引擎,搜索端口9200开放的目标,批量检测并添加勒索信息。建议各家企业自查自家使用的Elasticsearch是否存在公网可以访问并且存在未授权访问问题的系统。
六、ES未授权访问的检测方法
asticsearch(简称ES)未授权访问的检测方法主要包括以下几个步骤:
端口扫描:使用端口扫描工具(如Nmap)扫描目标主机的9200端口,这是Elasticsearch默认的HTTP端口。如果该端口开放,说明可能存在未授权访问的风险。
尝试访问:在浏览器中输入目标主机的IP地址和9200端口,例如
http://<目标IP>:9200
。如果能够访问且没有弹出登录界面,说明Elasticsearch可能存在未授权访问的问题。查看配置文件:如果能够访问目标主机的文件系统,可以查看Elasticsearch的配置文件(通常是
elasticsearch.yml
)。检查network.host
配置项是否设置为0.0.0.0
或127.0.0.1
以外的值。如果是,说明Elasticsearch可能对外网开放。使用安全工具:可以使用一些安全工具(如Burp Suite、Fiddler等)来模拟攻击者的行为,尝试访问Elasticsearch的API接口。如果能够成功访问并获取数据,说明存在未授权访问的风险。
检查访问日志:查看Elasticsearch的访问日志,检查是否有异常的访问记录。如果有来自未知IP地址的频繁访问,可能是有人在尝试未授权访问。
使用网络空间搜索引擎:可以使用网络空间搜索引擎(如Shodan、ZoomEye等)搜索开放9200端口的主机。这些工具可以帮助快速定位可能存在未授权访问风险的Elasticsearch实例。