游客发表

es未授权漏洞

发帖时间:2026-10-17 04:37:32

去年秋天,未授我帮一个做电商的权漏朋友查服务器日志。凌晨三点,未授他给我发消息说网站后台多了十几个陌生账号,权漏权限全是未授管理员。我让他先别动,权漏把Elasticsearch的未授端口扫描结果发过来。五分钟后他回了句:“9200端口开着,权漏公网能直接访问。未授”

这就是权漏典型的ES未授权漏洞。Elasticsearch默认不开启认证,未授谁都能通过HTTP API读写数据。权漏你装完ES,未授只要没改配置,权漏它就老老实实把整个集群敞开给全世界。未授9200端口一暴露,攻击者连密码都不用猜,直接curl就能拿到所有索引,删库跑路也就一条命令的事。

我见过最离谱的案例是一家做物联网的公司。他们的ES集群存了三年设备日志,包含用户家庭住址、WiFi密码、设备MAC地址。安全扫描报告里标了“高危”,但运维觉得“内网环境没事”。结果某天一个开发图省事,把测试环境映射到了公网IP。三天后数据在暗网打包出售,标价0.5个比特币。

为什么这个漏洞反复出现?不是技术难防,是认知偏差。很多人把ES当成“数据库”,觉得数据库就该有密码。但ES的设计哲学是“开箱即用”,早期版本连用户概念都没有。2.x时代加了个Shield插件,要收费。直到6.8和7.1才把基础认证免费开放。这中间的几年,无数集群裸奔。

更麻烦的是,ES的API太友好了。GET /_cat/indices 列出所有索引,DELETE /索引名 直接删数据。不需要SQL注入,不需要绕过WAF,浏览器地址栏敲个URL就能操作。有次我用Shodan搜“port:9200 product:Elastic”,两万多个结果,其中三成能直接访问。点进去看,有学校的学生成绩库,有医院的预约记录,还有某市政府的舆情监控数据。

修复方案其实简单得让人发笑。要么在elasticsearch.yml里加xpack.security.enabled: true,配好证书和用户;要么用Nginx做反向代理,加HTTP Basic认证;最不济也得在防火墙里把9200限制在内网IP段。但现实是,很多团队连ES版本都不升级。我见过还在跑1.7版本的,官方早就不维护了,漏洞列表能打印三页A4纸。

有个做安全的朋友跟我说过一句话:“ES未授权就像没锁门的仓库,门上还贴着‘欢迎光临’。”攻击者不需要高超技术,写个Python脚本遍历IP段,发现开放9200的就发请求。去年有个勒索团伙专门扫ES,加密所有索引后留个比特币地址。受害者里有个创业公司,没备份,数据全丢,直接倒闭。

我自己测试过,从发现一个未授权ES到导出全部数据,用curl和jq不到两分钟。数据量大的话,用elasticdump工具,喝杯咖啡的功夫就能拖走几十GB。更隐蔽的是,攻击者可以只读不写,你根本不知道数据被复制过。等发现的时候,客户名单已经在竞争对手手里了。

所以每次看到有人问“ES怎么加密码”,我都想回一句:你先把9200端口关掉。别急着调优分片,别折腾冷热架构,安全基线没做,其他都是白搭。运维圈有句老话:没被入侵过,说明你的数据不值钱。但ES未授权这事,跟数据值不值钱没关系——门开着,总有人会进来看看。

    热门排行

    友情链接