什么是 Sliver C2 服务器漏洞?
Sliver C2 框架的 teamserver 实现中发现了一个严重的服务器端请求伪造(SSRF)漏洞(CVE-2025-27090)。这个漏洞允许攻击者通过易受攻击的服务器建立未经授权的 TCP 连接,从而可能导致 IP 泄露、横向移动和流量拦截。
受影响版本
漏洞影响 Sliver 的版本 1.5.26 至 1.5.42,以及在提交 Of340a2 之前的预发布版本。
技术机制
SSRF 攻击链
-
会话注册处理
攻击者首先利用registerSessionHandler函数创建一个新的会话对象。这个函数通过 Protobuf 反序列化来处理植入物注册序列。go // server/handlers/sessions.go session := core.NewSession(implantConn) core.Sessions.Add(session) // 将会话添加到团队服务器的跟踪中 -
隧道数据处理
攻击者然后利用tunnelDataHandler函数发送特制的TunnelData消息,其中CreateReverse设置为true。这会触发 SSRF 攻击。go // server/handlers/session.go if rtunnel == nil && tunnelData.CreateReverse == true { createReverseTunnelHandler(implantConn, data) // 触发 SSRF } -
建立 TCP 连接
团队服务器通过defaultDialer.DialContext函数建立出站连接。go remoteAddress := fmt.Sprintf("%s:%d", req.Rportfwd.Host, req.Rportfwd.Port) dst, err := defaultDialer.DialContext(ctx, "tcp", remoteAddress)
Python PoC 代码示例
以下是 Python 中的概念验证(PoC)代码,展示了攻击者如何注册一个假会话,然后初始化反向隧道:
python
# 注册一个假会话
registration_envelope = generate_registration_envelope()
ssock.write(registration_envelope_len + registration_envelope)
# 初始化反向隧道
reverse_tunnel_envelope = generate_create_reverse_tunnel_envelope(target_ip, port, data)
ssock.write(reverse_tunnel_envelope_len + reverse_tunnel_envelope)
解决方案
- 更新 Sliver 版本:管理员应立即更新到 Sliver v1.5.43 或更高版本。
- 审计监听器:检查所有暂存监听器是否存在未经授权的 shellcode 生成能力。
总结
这个 SSRF 漏洞强调了在 C2 框架中处理双向网络通信时,严格的输入验证的重要性。随着红队工具越来越成为攻击目标,团队服务器组件的强隔离对于操作安全至关重要。