redis未授权访问

前言

前几天在安全客上看到smi1e师傅发的一篇 ssrf认证攻击redis觉得很有意思,但是由于自己tcl,先学习一下redis未授权访问漏洞。(一个几年前的有些沙雕的老洞= =)

redis漏洞简介

Redis 默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

漏洞利用姿势

  • 利用redis写入webshell
  • 利用redis写入公钥实现ssh免密登录
  • 利用任务计划(crontab)反弹shell

可以发现,redis漏洞利用的最基本的原理就是写文件操作

00x00 写入webshell

这种方法一般用于得到了web路径(报错或者是phpinfo()),并且开启了web服务的情况。

这里由于我是自己在Ubuntu上搭建的,已经知道目录,就直接写入即可。

注意这里我并没有写到我的web根目录,验证能否写入成功的话,我们可以直接在靶机上看。

注意:这是我克隆的靶机,ip地址为:192.168.179.197,攻击机ip为:192.168.179.196

可以看到我们已经成功将语句写入了。

00x01 写入公钥免密登录

首先我们现在攻击机上生成一对ssh公钥和私钥,并将密码置为空。

进入/root/.ssh目录,将生成的公钥保存为1.txt

连接靶机上的redis服务,并将公钥写入到redis数据库中,并且存入靶机存放公钥的目录。

然后尝试免密连接,观察是否成功。

可以看到我们已经成功地以root权限免密登录到靶机!

00x02 通过任务计划反弹shell

首先我们在攻击机上监听一个端口:

然后连接redis,并且写入定时命令

定时命令

按理说应该能够反弹shell的,但是我nc从来没有反弹成功过,希望有师傅成功的话能够指点一下。

这里大概一分钟就能受到反弹的shell,贴一张别的师傅的图:

自动化脚本

上面这三种利用已经有师傅在github上写了脚本,但是为了不当脚本小子,还是先理解原理的好。

自动化脚本

小结

这只是最最基础的redis漏洞,一般情况下比赛应该至少都会结合ssrf一起来利用。

本来这两天是准备复现@一叶飘零写的一篇 从xss到ssrf到redis ,一直卡在xss部分打不到cookie,结果今天和@离怀秋一起测试了一下,还是么得办法,只能说可能是题目有问题了。(这就有点很难受了

还是不要在一个问题上卡太久吧,惨痛的教训。

0%