挖洞经验 | 利用Slack的TURN服务器访问Slack内部网络
字数 1490 2025-08-15 21:30:45

利用TURN服务器进行内网渗透的技术分析

1. STUN和TURN协议基础

1.1 STUN协议

  • 定义:STUN (Session Traversal Utilities for NAT) 是一种NAT穿透解决方案
  • 功能
    • 允许位于NAT后的主机发现其公网IP和端口
    • 最初在RFC3489中定义为UDP实现的简单NAT穿透方法
    • RFC5389修订增加了TCP穿透能力
  • 用途:主要用于P2P通信场景,如视频会议、实时通信等

1.2 TURN协议

  • 定义:TURN (Traversal Using Relays around NAT) 是STUN的中继扩展
  • 功能
    • 当直接P2P连接不可行时,通过中继服务器转发数据
    • 在RFC5766中定义
    • 支持两种中继模式:
      • TCP中继:使用RFC6062规范的0x000A消息连接方法
      • UDP中继:使用RFC5766规范的0x006消息指示方法或channel方法

2. WebRTC与TURN的关系

2.1 WebRTC概述

  • 定义:Web Real-Time Communication,网页实时通信技术
  • 特点
    • 无需插件实现web端实时通信
    • 支持跨平台(Windows, Linux, Mac, Android等)
    • 提供音视频采集、编解码、网络传输等核心功能

2.2 ICE框架

  • 作用:综合运用STUN、TURN、RSIP等NAT穿透方式
  • 工作流程
    1. 尝试直接P2P连接(STUN)
    2. 如果失败,使用TURN中继
    3. 选择最优连接路径

3. Slack的TURN服务器漏洞分析

3.1 漏洞本质

  • 问题:Slack的TURN服务器配置不当,允许将客户端流量中继到内部网络
  • 影响范围
    • 可以访问Slack内部网络
    • 可以访问AWS元数据服务(169.254.169.254)

3.2 攻击面

  1. AWS元数据服务访问

    • 获取临时IAM凭据
    • 可能导致AWS账户接管
  2. 内部网络探测

    • 扫描内部开放端口(22, 25, 53, 443等)
    • 发现内部管理服务(如node exporter)
  3. AWS架构扫描

    • 在10.41.0.0/16网段中发现更多服务

3.3 认证机制绕过

  • 正常流程:WebRTC会话时生成临时凭据
  • 攻击方法
    1. 配置浏览器使用Burp代理
    2. 过滤screenhero相关请求
    3. 发起通话获取TURN凭据
    4. 使用工具(如Stunner)利用这些凭据

4. 利用工具与技术

4.1 Stunner工具

  • 功能
    • STUN协议测试
    • TURN漏洞检测
    • 支持TURN对等端扫描
  • 特殊功能
    • turn peer httpproxy:通过HTTP代理与TURN服务器交互

4.2 攻击演示流程

  1. 获取TURN服务器生成的临时凭据
  2. 测试TURN服务器到互联网的中继功能
  3. 连接到Slack内部网络
  4. 访问AWS元数据服务

5. 防御措施

5.1 配置建议(适用于Coturn等实现)

no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255

5.2 关键防御点

  1. 限制TURN服务器可以中继的内部IP范围
  2. 禁止对私有IP地址和元数据服务的访问
  3. 加强临时凭据的生成和验证机制

6. 时间线与披露

  • 2017.11:将TURN滥用方法加入Stunner工具
  • 2017.12:在某测试中发现TURN漏洞
  • 2018.2:在Slack中发现该漏洞
  • 2018.4:向Slack报告漏洞
  • 2018.5:Slack修复漏洞
  • 2020.3:公开漏洞细节

7. 总结

TURN服务器在WebRTC架构中扮演重要角色,但配置不当可能成为内网渗透的跳板。安全团队应特别注意TURN服务器的访问控制配置,防止其被滥用为内部网络的代理入口。

利用TURN服务器进行内网渗透的技术分析 1. STUN和TURN协议基础 1.1 STUN协议 定义 :STUN (Session Traversal Utilities for NAT) 是一种NAT穿透解决方案 功能 : 允许位于NAT后的主机发现其公网IP和端口 最初在RFC3489中定义为UDP实现的简单NAT穿透方法 RFC5389修订增加了TCP穿透能力 用途 :主要用于P2P通信场景,如视频会议、实时通信等 1.2 TURN协议 定义 :TURN (Traversal Using Relays around NAT) 是STUN的中继扩展 功能 : 当直接P2P连接不可行时,通过中继服务器转发数据 在RFC5766中定义 支持两种中继模式: TCP中继:使用RFC6062规范的0x000A消息连接方法 UDP中继:使用RFC5766规范的0x006消息指示方法或channel方法 2. WebRTC与TURN的关系 2.1 WebRTC概述 定义 :Web Real-Time Communication,网页实时通信技术 特点 : 无需插件实现web端实时通信 支持跨平台(Windows, Linux, Mac, Android等) 提供音视频采集、编解码、网络传输等核心功能 2.2 ICE框架 作用 :综合运用STUN、TURN、RSIP等NAT穿透方式 工作流程 : 尝试直接P2P连接(STUN) 如果失败,使用TURN中继 选择最优连接路径 3. Slack的TURN服务器漏洞分析 3.1 漏洞本质 问题 :Slack的TURN服务器配置不当,允许将客户端流量中继到内部网络 影响范围 : 可以访问Slack内部网络 可以访问AWS元数据服务(169.254.169.254) 3.2 攻击面 AWS元数据服务访问 获取临时IAM凭据 可能导致AWS账户接管 内部网络探测 扫描内部开放端口(22, 25, 53, 443等) 发现内部管理服务(如node exporter) AWS架构扫描 在10.41.0.0/16网段中发现更多服务 3.3 认证机制绕过 正常流程 :WebRTC会话时生成临时凭据 攻击方法 : 配置浏览器使用Burp代理 过滤screenhero相关请求 发起通话获取TURN凭据 使用工具(如Stunner)利用这些凭据 4. 利用工具与技术 4.1 Stunner工具 功能 : STUN协议测试 TURN漏洞检测 支持TURN对等端扫描 特殊功能 : turn peer httpproxy :通过HTTP代理与TURN服务器交互 4.2 攻击演示流程 获取TURN服务器生成的临时凭据 测试TURN服务器到互联网的中继功能 连接到Slack内部网络 访问AWS元数据服务 5. 防御措施 5.1 配置建议(适用于Coturn等实现) 5.2 关键防御点 限制TURN服务器可以中继的内部IP范围 禁止对私有IP地址和元数据服务的访问 加强临时凭据的生成和验证机制 6. 时间线与披露 2017.11:将TURN滥用方法加入Stunner工具 2017.12:在某测试中发现TURN漏洞 2018.2:在Slack中发现该漏洞 2018.4:向Slack报告漏洞 2018.5:Slack修复漏洞 2020.3:公开漏洞细节 7. 总结 TURN服务器在WebRTC架构中扮演重要角色,但配置不当可能成为内网渗透的跳板。安全团队应特别注意TURN服务器的访问控制配置,防止其被滥用为内部网络的代理入口。