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