Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在 没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis 以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可 以成功在Redis服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器
条件:
a、redis 服务以 root 账户运行b、redis 无密码或弱密码进行认证c、redis 监听在 0.0.0.0 公网上
方法:
a、通过Redis的INFO命令,可以查看服务器相关的参数和敏感信息,为攻击者的后续渗透做铺 垫
b、上传SSH公钥获得SSH登录权限c、通过crontab反弹shell
d、slave主从模式利用
修复: 密码验证降权运行
限制 ip/修改端口
- redis写入webshell
服务端的redis链接存在未授权,在攻击机上面能用redis-cli直接登录链接,并未登录验 证.
- 利用redis写入ssh公钥
服务端的redis连接存在未授权,在攻击机上面能用redis-cli直接登录链接 并未登录验证,服务端存在ssh目录并且有写入的权限.
- redis写入计划任务
这个方法只能在Centos上使用,Ubuntu上是行不通的
原因如下: 因为默认redis写文件后是644的权限,但ubuntu要求执行定时任务文
件/var/spool/cron/crontabs/<username>权限必须是600也就是-rw———-才会执
行,否则会报 错(root) INSECURE MODE (mode 0600 expected),而Centos的定时任务文 件/var/spool/cron/<username>权限644也能执行因为redis保存RDB会存在乱码,在Ubuntu上 会报错,而在Centos上不会报错 然后由于系统的不同,crontrab定时文件位置也会不同