Redis未授权访问getshell三种方法
介绍:
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
2)redis默认设置密码为空,可以免密码远程登录redis服务。
漏洞复现:
漏洞环境下载
http://download.redis.io/releases/redis-2.8.17.tar.gz
(如果下载不下来的话:http://distfiles.macports.org/redis/)!
0x01:环境搭建
解压缩包
1、tar -zxf redis-2.8.17.tar.gz 
5、返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下:
cp redis.conf /etc/
6、使用/etc/目录下的reids.conf文件中的配置启动redis服务:! > pub.txt
链接靶机上的redis服务,
将保存ssh的公钥1.txt写入redis(使用redis-cli -h ip命令连接靶机,将文件写入):
登录靶机的redis服务
并使用 CONFIG GET dir 命令得到redis备份的路径:
更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh);
设置上传公钥的备份文件名字为authorized_keys;
检查是否更改成功(查看有没有authorized_keys文件),保存然后退出;
至此成功写入ssh公钥到靶机:
emmm为了明显区别把靶机hostname改为target,攻击机改为attack
成功使用默认秘钥登录成功
Referer:
https://my.oschina.net/u/3021599/blog/3046482
https://www.cnblogs.com/bmjoker/p/9548962.html