HackTheBox-Redeemer
字数 1059 2025-08-12 11:34:13

Redis数据库渗透测试实战教学文档

1. 环境准备与目标识别

1.1 目标信息

  • 目标IP: 10.129.17.253
  • 开放端口: 6379 (Redis默认端口)

1.2 工具准备

  • nmap: 端口扫描工具
  • redis-cli: Redis命令行客户端
  • 安装命令(如需):
    sudo apt-get install -y redis-server
    

2. 端口扫描与服务识别

2.1 使用nmap扫描

nmap -sV 10.129.17.253 -p 1-10000

参数说明:

  • -sV: 服务版本探测
  • -p 1-10000: 扫描1-10000端口范围

2.2 扫描结果分析

发现开放端口:

  • 6379/tcp: Redis服务

3. Redis基础知识

3.1 Redis数据库类型

Redis是In-memory Database(内存数据库),与传统磁盘数据库不同。

3.2 Redis客户端工具

  • 主要命令行工具: redis-cli
  • 连接命令:
    redis-cli -h <host> -p <port>
    

参数说明:

  • -h: 指定主机名/IP
  • -p: 指定端口号

4. Redis服务器信息收集

4.1 连接Redis服务器

redis-cli -h 10.129.17.253 -p 6379

4.2 获取服务器信息

连接后使用info命令获取详细信息和统计:

info

关键信息包括:

  • Redis版本
  • 运行模式
  • 内存使用情况
  • 持久化配置
  • 客户端连接数等

5. 数据库操作

5.1 选择数据库

Redis默认有16个数据库(0-15),使用select命令切换:

select <index>

5.2 查看数据库状态

  • 查看当前数据库key数量:

    dbsize
    
  • 列出所有key:

    keys *
    

6. 数据获取与flag提取

6.1 查找flag

  1. 选择数据库(通常为0):

    select 0
    
  2. 列出所有key寻找flag:

    keys *
    
  3. 获取flag值:

    get flag
    

6.2 其他可能的数据获取方式

  • 获取所有key-value:
    keys * | while read key; do echo "Key: $key"; redis-cli -h 10.129.17.253 -p 6379 get "$key"; done
    

7. 安全注意事项

  1. 未授权访问: Redis默认无密码认证,可能导致信息泄露
  2. 数据泄露风险: 敏感数据可能存储在内存中
  3. 写入webshell: 如果Redis运行在Web服务器上且知道Web目录,可通过Redis写入webshell
  4. SSH公钥注入: 如果知道用户目录,可尝试写入SSH公钥获取SSH访问权限

8. 防护建议

  1. 配置Redis密码认证
  2. 修改默认端口
  3. 限制绑定IP(不要绑定0.0.0.0)
  4. 启用保护模式
  5. 定期更新Redis版本

9. 总结

通过本实验,我们学习了:

  1. 使用nmap识别Redis服务
  2. 使用redis-cli连接Redis服务器
  3. 获取Redis服务器信息和统计数据
  4. 操作Redis数据库(选择数据库、查看key等)
  5. 提取敏感数据(如flag)
  6. 了解Redis相关的安全风险和防护措施

关键命令总结:

# 连接Redis
redis-cli -h <IP> -p <PORT>

# 获取服务器信息
info

# 数据库操作
select <index>
dbsize
keys *
get <key>
Redis数据库渗透测试实战教学文档 1. 环境准备与目标识别 1.1 目标信息 目标IP: 10.129.17.253 开放端口: 6379 (Redis默认端口) 1.2 工具准备 nmap: 端口扫描工具 redis-cli: Redis命令行客户端 安装命令(如需): 2. 端口扫描与服务识别 2.1 使用nmap扫描 参数说明 : -sV : 服务版本探测 -p 1-10000 : 扫描1-10000端口范围 2.2 扫描结果分析 发现开放端口: 6379/tcp: Redis服务 3. Redis基础知识 3.1 Redis数据库类型 Redis是 In-memory Database (内存数据库),与传统磁盘数据库不同。 3.2 Redis客户端工具 主要命令行工具: redis-cli 连接命令: 参数说明 : -h : 指定主机名/IP -p : 指定端口号 4. Redis服务器信息收集 4.1 连接Redis服务器 4.2 获取服务器信息 连接后使用 info 命令获取详细信息和统计: 关键信息包括 : Redis版本 运行模式 内存使用情况 持久化配置 客户端连接数等 5. 数据库操作 5.1 选择数据库 Redis默认有16个数据库(0-15),使用 select 命令切换: 5.2 查看数据库状态 查看当前数据库key数量: 列出所有key: 6. 数据获取与flag提取 6.1 查找flag 选择数据库(通常为0): 列出所有key寻找flag: 获取flag值: 6.2 其他可能的数据获取方式 获取所有key-value: 7. 安全注意事项 未授权访问 : Redis默认无密码认证,可能导致信息泄露 数据泄露风险 : 敏感数据可能存储在内存中 写入webshell : 如果Redis运行在Web服务器上且知道Web目录,可通过Redis写入webshell SSH公钥注入 : 如果知道用户目录,可尝试写入SSH公钥获取SSH访问权限 8. 防护建议 配置Redis密码认证 修改默认端口 限制绑定IP(不要绑定0.0.0.0) 启用保护模式 定期更新Redis版本 9. 总结 通过本实验,我们学习了: 使用nmap识别Redis服务 使用redis-cli连接Redis服务器 获取Redis服务器信息和统计数据 操作Redis数据库(选择数据库、查看key等) 提取敏感数据(如flag) 了解Redis相关的安全风险和防护措施 关键命令总结 :