代码审计HBase未

极客

代码审计HBase未授权访问?别慌,我踩过的坑都在这儿了!

哎,说到这个HBase未授权访问,我可真是有一肚子话想说!前两天刚帮一个朋友排查了个安全漏洞,那场面,啧啧啧,简直跟谍战片似的。代码审计这东西,不深入不知道,一深入吓一跳,HBase的未授权访问问题,简直就是藏在暗处的定时炸弹啊!

初见HBase,我天真了

还记得我第一次接触HBase的时候,心里想着:“这不就是个分布式数据库嘛,能有多难?”结果呢?现实直接给我上了一课!那天做代码审计,我习惯性地打开HBase的配置目录,好家伙,hbase-site.xml里居然没设置hbase.rest.csrf.enabled,这不就等于把大门敞开了吗?

当时我就一个激灵,这要是被有心人碰上了,整库的数据那不是想删就删?HBase未授权访问这事儿,真不是开玩笑的,你知道吗,HBase默认的REST API端口是8080,如果没做访问控制,任何人只要知道IP和端口,就能直接操作你的数据——删表、改数据、甚至获取所有表结构,就像在自己家后花园散步一样随意!

代码审计,从入门到“入土”

说真的,代码审计HBase这块,我一开始也走了不少弯路,有一次,我盯着个HBASE的代码看了整整一下午,愣是没发现Kerberos认证没配置,后来还是用工具扫描才发现的,那叫一个尴尬啊!

代码审计HBase未授权访问,核心要看这几个地方:

  1. 认证机制:有没有开启Kerberos?还是用的Simple认证?
  2. 授权控制:HBase的ACL权限表配置了吗?
  3. 网络隔离:HBase的RPC端口,是不是暴露在公网上了?

哎呀,说到这个网络隔离,我上次就栽在上面了,当时审计的HBase集群,只配置了防火墙规则,以为万无一失了,结果你猜怎么着?内部网络有个跳板机,被攻击者拿下了,直接通过内网横跳摸到了HBase的16010端口,我那个暴脾气啊,真是防不胜防!

深挖HBase未授权访问的“七十二变”

做了这么多代码审计,我总结出HBase未授权访问最常见的几种表现方式:

第一种:REST API裸奔 Apache HBase的RESTServer,如果不设置hbase.rest.csrf.enabledhbase.rest.support.proxyuser,那基本就是一个无遮无拦的状态,攻击者可以直接调用/status/cluster接口搞侦察,甚至通过/version接口获取版本信息,然后针对漏洞库匹配攻击方案。

第二种:Thrift接口敞开后门 Thrift网关比REST API还危险,因为它支持完整的Java API操作,我审计过一个项目,Thrift直接绑定在0.0.0上,连个ACL过滤都没有,这时候只要用Python的happybase库,几行代码就能连上去读取数据。

第三种:协处理器伪造 这个厉害了!HBase的协处理器机制本来是用来扩展功能的,但如果开启了hbase.coprocessor.user.region.classes,攻击者就能上传恶意的JAR包,直接执行任意代码!我接触过一个案例,攻击者就是通过这个把整个集群的数据都加密了,然后勒索!你说气不气人?

我的实战复盘:一次惊心动魄的修复

上个月,我给一家金融公司做代码审计,正好遇到HBase未授权问题,当时的情况是这样的:他们的HBase集群版本是1.4.9,比较老,而且用的是SimpleAuthentication,最搞笑的是,代码审计报告都指出了问题,运维团队还觉得“内网没事,不会有人攻击”。

结果呢?没过两周,就被监管平台扫到了异常流量,HBase的RegionServer CPU飙升到了99%!一查日志,好家伙,有人用scan ''命令在扫全表数据!幸亏发现得及时,否则就是一场灾难啊!

那次的修复方案,我提供了一套组合拳:

  • 开启Kerberos双因子认证(这个必须做)
  • 设置hbase.security.authorization=true
  • grant命令给特定用户分配权限
  • 在VPC网络里用安全组限制访问源

代码审计HBase未授权,我的一些“骚操作”

写了这么多,我也想分享点干货,做代码审计HBase未授权访问的时候,有几个小技巧:

第一个小技巧:翻历史配置 HBase有个/etc/hbase/hbase-policy.xml文件,这里定义了各种权限策略,很多团队初始安装时能用,但后来升级忘了更新,我审计时就遇到过,明明Kerberos都开了,但hbase-policy.xml里还是旧的通配符,等于没设置权限!翻配置时要特别留意这个。

第二个小技巧:看日志怀疑一切 HBase的Master日志和RegionServer日志里,会记录所有提交的请求,当审计代码时,可以重点搜一下“获取表metadata”的请求日志——如果有非本机的IP频繁请求describeTable操作,那极大概率是未授权访问在侦察。

第三个小技巧:用工具自动化验证 我常用hbase shell来快速验证权限问题:

whoami
list
scan 'system:meta'

如果这些操作不需要任何认证就能执行,那就说明问题存在,但注意!这只能作为初步判断,真正的代码审计需要更深入。

结语与“安全人”的忠告

哎,说了这么多,其实我想表达的是:代码审计HBase未授权访问,真不是一蹴而就的事情,需要你深入理解HBase的运行机制,还要时刻保持警惕。

安全这条路,又难又长,但总得有人走不是吗?你要是也遇到类似的HBase安全问题,或者想系统学习安全知识,欢迎加我QQ:11856639,咱们一起交流,一起避坑!嘿嘿,我这人没别的,就是爱分享实战经验!

代码审计HBase未

网络安全无小事,HBase未授权访问看起来是个小漏洞,但一旦被利用,那就是数据资产的灭顶之灾!别等到出了事再去后悔莫及,平时多花点时间做代码审计,总比事后补救来得好啊!

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

目录[+]

取消
微信二维码
微信二维码
支付宝二维码