0×00 应用介绍
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
0×01 漏洞介绍
Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis 的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致 Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。
目前比较主流的案例:yam2 minerd 挖矿程序,还有在多次应急事件中发现大量的watch-smartd挖矿木马。
0×02 未授权访问检测
Nmap扫描后发现主机的6379端口对外开放,就可以用本地Redis远程连接服务器redis在开放往外网的情况下(默认配置是bind 127.0.0.1,只允许本地访问,如果配置了其他网卡地址那么就可以网络访问,默认配置下是空口令,端口为6379)连接后可以获取Redis敏感数据。
0×03 使用 cupp + hydra 爆破Redis密码
0×04 写入ssh公钥,获取操作系统权限
在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以再服务器端的/root/.ssh下生一个授权的key。
本地建个ssh的秘钥
2. 将公钥导入key.log文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.log文件内容写入目标主机的缓冲里:
3. 将key.log内容写入到服务器redis内,将内容保存成authorized_keys
4. 连接服务器,获得root权限
0×05 漏洞修复建议
1.开启Redis IP访问限制,只允许授权白名单的IP访问
2.设置复杂的Redis密码,更改Redis默认端口,不使用root权限启动redis服务
3.禁止root直接登录服务器,使用其他账号登录后su root
4.加固ssh配置,更改默认authorized_keys名称
推荐ssh配置
0×06 总结
由此可见,该漏洞主要原因为开启了远程访问同时存在弱口令或空口令造成的;其危害程度比较严重,在拿到服务器root权限后我们可以获取到任何想要的信息以及篡改敏感数据,甚至可以留下后门当做肉鸡使用,例如植入一些minerd挖矿程序。
领取专属 10元无门槛券
私享最新 技术干货