Sliver C2框架漏洞解析:攻擊者可建立TCP連接竊取數(shù)據(jù)流量
近期,Sliver C2框架的團隊服務(wù)器(teamserver)實現(xiàn)中被發(fā)現(xiàn)存在一個嚴(yán)重的服務(wù)器端請求偽造(SSRF)漏洞(CVE-2025-27090)。該漏洞允許攻擊者通過受影響的服務(wù)器建立未授權(quán)的TCP連接,可能導(dǎo)致IP泄露、橫向移動和流量攔截。
漏洞影響范圍
該漏洞影響Sliver C2框架的1.5.26至1.5.42版本,以及在Of340a2提交之前的預(yù)發(fā)布版本。盡管Sliver的架構(gòu)通常會將團隊服務(wù)器置于保護(hù)性重定向器之后,但該漏洞允許攻擊者通過精心構(gòu)造的植入物回調(diào)繞過這些保護(hù)措施。
Sliver的架構(gòu)(來源:Chebuya)
漏洞利用機制
該漏洞利用鏈涉及Sliver Go代碼庫中的兩個關(guān)鍵處理函數(shù)。首先,registerSessionHandler函數(shù)通過Protobuf反序列化為新植入物創(chuàng)建一個會話對象:
`// server/handlers/sessions.go
session := core.NewSession(implantConn)
core.Sessions.Add(session) // 將會話添加到團隊服務(wù)器跟蹤`
攻擊者隨后利用tunnelDataHandler,發(fā)送包含CreateReverse設(shè)置為true的特制TunnelData消息:
`// server/handlers/session.go
if rtunnel == nil && tunnelData.CreateReverse == true {
createReverseTunnelHandler(implantConn, data) // 觸發(fā)SSRF
}`
這將強制團隊服務(wù)器通過defaultDialer.DialContext調(diào)用建立出站連接:
`remoteAddress := fmt.Sprintf("%s:%d", req.Rportfwd.Host, req.Rportfwd.Port)
dst, err := defaultDialer.DialContext(ctx, "tcp", remoteAddress)`
通過Sliver的隧道管理系統(tǒng),該漏洞實現(xiàn)了雙向通信。如下Python概念驗證(PoC)代碼所示,攻擊者首先注冊一個虛假會話,然后發(fā)起反向隧道:
`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)`
修復(fù)建議
該漏洞已通過提交3f2a1b9修復(fù),改進(jìn)了會話驗證和隧道創(chuàng)建檢查。管理員應(yīng)立即更新至Sliver v1.5.43及以上版本,并審核所有暫存監(jiān)聽器是否存在未授權(quán)的shellcode生成能力。
此SSRF漏洞突顯了在C2框架處理雙向網(wǎng)絡(luò)通信時,嚴(yán)格輸入驗證的重要性。隨著紅隊工具本身成為攻擊目標(biāo),團隊服務(wù)器組件的堅固隔離對于操作安全仍然至關(guān)重要。