近期,Sliver C2框架的团队服务器(teamserver)实现中被发现存在一个严重的服务器端请求伪造(SSRF)漏洞(CVE-2025-27090)。该漏洞允许攻击者通过受影响的服务器建立未授权的TCP连接,可能导致IP泄露、横向移动和流量拦截。
漏洞影响范围
该漏洞影响Sliver C2框架的1.5.26至1.5.42版本,以及在Of340a2提交之前的预发布版本。尽管Sliver的架构通常会将团队服务器置于保护性重定向器之后,但该漏洞允许攻击者通过精心构造的植入物回调绕过这些保护措施。
Sliver的架构(来源:Chebuya)
漏洞利用机制
该漏洞利用链涉及Sliver Go代码库中的两个关键处理函数。首先,registerSessionHandler函数通过Protobuf反序列化为新植入物创建一个会话对象:
`// server/handlers/sessions.go
session := core.NewSession(implantConn)
core.Sessions.Add(session) // 将会话添加到团队服务器跟踪`
攻击者随后利用tunnelDataHandler,发送包含CreateReverse设置为true的特制TunnelData消息:
`// server/handlers/session.go
if rtunnel == nil && tunnelData.CreateReverse == true {
createReverseTunnelHandler(implantConn, data) // 触发SSRF
}`
这将强制团队服务器通过defaultDialer.DialContext调用建立出站连接:
`remoteAddress := fmt.Sprintf("%s:%d", req.Rportfwd.Host, req.Rportfwd.Port)
dst, err := defaultDialer.DialContext(ctx, "tcp", remoteAddress)`
通过Sliver的隧道管理系统,该漏洞实现了双向通信。如下Python概念验证(PoC)代码所示,攻击者首先注册一个虚假会话,然后发起反向隧道:
`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)`
修复建议
该漏洞已通过提交3f2a1b9修复,改进了会话验证和隧道创建检查。管理员应立即更新至Sliver v1.5.43及以上版本,并审核所有暂存监听器是否存在未授权的shellcode生成能力。
此SSRF漏洞突显了在C2框架处理双向网络通信时,严格输入验证的重要性。随着红队工具本身成为攻击目标,团队服务器组件的坚固隔离对于操作安全仍然至关重要。