Solr脱库过程

极客

Solr脱库过程全解析:一次惊心动魄的数据泄露经历

大家好呀,今天想跟你们聊聊一个挺敏感但又特别值得警惕的话题——Solr脱库过程,说实话,写这篇文章的时候我心情还挺复杂的,因为这事儿吧,真的是很多企业踩过的坑,而且一踩一个准,数据哗啦啦地就流出去了。

Solr脱库过程

事情的起因:一个不起眼的端口

前段时间跟一个做安全的朋友聊天,他跟我讲了一个真实的案例,某公司用了 Apache Solr 做全文检索,部署在内网,觉得"内网嘛,安全得很",结果呢?攻击者通过一个边缘系统打进了内网,扫了一圈,发现 8983 端口大剌剌地开着,连个认证都没有……

你们知道这意味着什么吗?Solr 默认的 Admin UI 直接暴露,攻击者打开浏览器就能看到所有 Core,看到所有索引数据,那一刻,我朋友说他自己都倒吸一口凉气——这不就等于把数据库大门敞开,还贴了个"欢迎光临"的告示吗?

Solr脱库过程到底是怎么一步步发生的?

我给大家捋一捋这个Solr脱库过程,真的没有想象中那么复杂,甚至可以说简单得让人害怕。

第一步:发现目标。 攻击者常用 Shodan、Fofa 这类空间测绘引擎,搜索 app:"Apache Solr" 或者 port:8983,一下子就能列出成千上万台暴露在公网的 Solr 实例,哎,真的是一搜一大把,看得人心里发毛。

第二步:探测接口。 访问 /solr/admin/cores?wt=json,如果返回了 Core 列表,那就成功一半了,因为很多老版本 Solr 默认没有开启认证,谁都能查。

第三步:导出数据。 这是整个Solr脱库过程最核心的一步,攻击者利用 /solr/{core}/select?q=*:*&rows=1000000&wt=json 这个查询接口,一次性把整个 Core 的数据全部拉走,注意哦,rows 参数可以设得非常大,只要服务器扛得住,几百万条数据分分钟就被拖下来了。

第四步:打包跑路。 数据拿到手之后,攻击者往往还会顺手看看有没有 RCE 漏洞可以利用,比如那个著名的 CVE-2019-17558,通过 Velocity 模板注入直接执行命令,把服务器权限也一并拿下,啧啧,这就不是脱库了,这是"连锅端"。

为什么 Solr 这么容易被脱库?

说句公道话,Solr 本身没错,错的是配置的人,我总结了几个常见原因,你们看看中招没:

  • 默认无认证:老版本 Solr 装完就能用,压根没让你设密码,很多人也就懒得配。
  • 暴露在公网:图方便,直接映射到公网 IP,防火墙也不加规则。
  • 权限过大:Solr 进程用 root 跑,一旦被 RCE,整台机器就废了。
  • 日志不监控:异常的大批量查询请求根本没有告警,数据被拖走了都不知道。

写到这儿我真的有点无语,因为这些坑,明明都可以避免的啊!

怎么防?说点实在的

既然聊到了Solr脱库过程,那就不能只吓唬人,得给点干货:

  1. 开启认证:Solr 7.x 以后支持 Basic Auth 和 Kerberos,别偷懒,一定要配上。
  2. 限制访问来源:用防火墙或者 Nginx 反代,只允许内网或者特定 IP 访问 8983。
  3. 关闭不必要的接口:Config API、Velocity 响应写入器,能关就关。
  4. 升级版本:老版本漏洞一大堆,升级到 8.x 或 9.x,安全性提升明显。
  5. 监控告警:对 rows 参数异常大的查询做限制和告警,这一点特别关键。

最后唠叨两句

其实每次聊到Solr脱库过程,我心里都挺不是滋味的,因为数据泄露的背后,是无数用户的隐私被侵犯,是企业信誉的崩塌,技术本身是中立的,但用技术的人得有点责任心,对吧?

如果你公司也在用 Solr,拜托了,今天就回去检查一下:端口暴露了吗?认证开了吗?日志看了吗?别等到数据被拖走了才拍大腿,那时候真的晚了。

好了,今天就唠到这儿,希望这篇关于Solr脱库过程的文章能给你提个醒,安全这事儿,永远不嫌早,有啥想法欢迎留言,咱们一起交流哈!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]