挖洞经验 | 利用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穿透方式
- 工作流程:
- 尝试直接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等实现)
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 关键防御点
- 限制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服务器的访问控制配置,防止其被滥用为内部网络的代理入口。