思科設(shè)備漏洞 CVE-2018-0171 的快速修復(fù)

背景

CVE-2018-0171漏洞是利用Smart Install功能的TCP 4786端口進(jìn)行攻擊沧卢,黑客可以偽造smart install message給該端口斜脂,引發(fā)路由器重啟從而使得網(wǎng)絡(luò)服務(wù)不可用。

Smart Install功能是部署大規(guī)模接入交換機(jī)是簡化配置即插即用的配置和IOS鏡像管理特性席怪。

漏洞的具體利用已經(jīng)公開瓦哎,詳見 Cisco Smart Install Remote Code Execution,通過構(gòu)造惡意的代碼可以造成交換機(jī) crash 并重啟和配置丟失夜涕。

修復(fù)

由于思科尚未放出補(bǔ)丁,所以現(xiàn)在的修復(fù)辦法只能設(shè)法禁用掉 Smart Install 功能属愤。

最快捷的方式是打 ACL 干脆禁掉 4786 端口女器,就像先前 smb 的漏洞肆虐時一樣。

從根本上來看住诸,對于不需要使用 Smart Install 的用戶而言驾胆,應(yīng)該干脆關(guān)掉這個功能。

switch#conf t

switch(config)#no vstack

switch(config)#do wr

switch(config)#exit

批量處理

由于漏洞可能包含 2960贱呐,而 2960 是應(yīng)用極其廣泛的接入層交換機(jī)……顯然必須要批量來刷才靠譜丧诺。

SSH 的批量處理

對于開啟了 SSH 的交換機(jī),可以簡單的直接使用 multissh 來一波帶走奄薇。詳見用 Go 寫一個輕量級的 ssh 批量操作工具

特別的驳阎,可以直接對整個網(wǎng)段進(jìn)行嘗試,把超時時間設(shè)小一點(diǎn)就是了馁蒂。

如下例呵晚,我們直接對 192.168.15.0/24 整個網(wǎng)段去嘗試執(zhí)行命令,對于沒有 vstack 命令的沫屡,或者不存在交換機(jī)的 ip饵隙,在 5 秒后超時。設(shè)置 255 的并發(fā)沮脖,整個掃描和修復(fù) 5 秒左右就能完成癞季。

.\multissh.exe -ips "192.168.15.0/24" -cmds "conf t;no vstack;do wr;exi
t;exit" -t 5 -n 255 -u "admin" -p "123456"
2018/04/08 11:29:14 Multissh start
2018/04/08 11:29:19 Multissh finished. Process time 5.0243802s. Number of active ip is 254
host:  192.168.15.1
========= Result =========
sw-Core>conf t
                    ^
% Invalid input detected at '^' marker.

sw-Core>no vstack
                    ^
% Invalid input detected at '^' marker.

sw-Core>do wr
                   ^
% Invalid input detected at '^' marker.

sw-Core>exit

SSH run timeout:5 second.
host:  192.168.15.140
========= Result =========
SSH run timeout:5 second.
host:  192.168.15.141
========= Result =========
North-sw-1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
North-sw-1(config)#no vstack
North-sw-1(config)#do wr
Building configuration...
[OK]
North-sw-1(config)#exit
North-sw-1#exit

<dial tcp 192.168.15.254:22: connectex: No connection could be made because the target machine actively refused it.>

telnet 的批量處理

很遺憾劫瞳,我們還有相當(dāng)一部的交換機(jī)沒有開啟 ssh,必須通過 telnet 來操作绷柒。telnet 由于各家提示符不一,做批量工具很麻煩涮因。不過這里我們要處理的都是思科废睦,所以可以弄個腳本來刷掉。如下所示养泡。

#!/usr/bin/python
import telnetlib
import os
from IPy import IP
from multiprocessing.dummy import Pool as ThreadPool

threads = 32
ips = "192.168.0.0/24"
password = "123456"
en_password = "654321"
##############################################################

def no_smart(host,password,en_password):
    rt =''
    try:
        tn = telnetlib.Telnet(host, port=23, timeout=3)
    except:
        print host + ' telnet connect error'
    # 嘗試 telnet 連接
    # 等待讀到 Password嗜湃,輸入 password
    tn.read_until('Password: ')
    tn.write(password + '\n')
    # 等待讀到 > ,尚未進(jìn)入 enable 模式,輸入 en
    tn.read_until('>')
    tn.write('en\n')
    # 等待讀到 Password ,輸入 enable 的 password
    tn.read_until('Password: ')
    tn.write(en_password + '\n')
    tn.read_until('#')
    # 等待讀到 #澜掩,已經(jīng)進(jìn)入 特權(quán)模式购披,開始刷命令
    tn.write("conf t"+"\n")
    tn.read_until('#')
    tn.write('no vstack'+'\n')
    tn.write('do wr'+'\n')
    while True:
        t = tn.read_eager()
        rt = rt + t
        if '#' in t:
            break
    tn.close()
    # 關(guān)閉連接

    return rt

def nmap_check(host):
    cmd = "nmap -p T:4786 " + host
    res = os.popen(cmd).readlines()
    if "4786/tcp open" in res[-3]:
        return True
    else:
        return False

def do(ip):
    host = str(ip)
    if nmap_check(host) == True:
        no_smart(host,password,en_password)
        print host + "smart install disabled"

if __name__=='__main__':
    pool = ThreadPool(threads)
    pool.map(do,IP(ips))
    pool.close()
    pool.join()

思路,先通過 nmap 做個試探肩榕,如果開啟了端口就去做 telnet 連接并關(guān)掉 vstack刚陡。通過 multiprocessing 來開啟并發(fā)。

腳本代碼在 github 上 cisco_disable_smart_install株汉,依賴 nmap 和 IPy

yum -y install epel-release
yum -y install python-pip
yum -y install nmap
pip install virtualenv

virtualenv ./env
source env/bin/activate
pip install -r requirement.txt

在腳本的開始修改基本配置

threads = 128 # 并發(fā)數(shù)
ips = "192.168.12.0/24" # 掃碼的地址段
password = "123456" # 密碼
en_password = "654321" # enable 密碼
#######################################

執(zhí)行結(jié)果

# python disable_smart_install.py 
192.168.12.6 smart install disabled
 192.168.12.24 smart install disabled
192.168.12.18 smart install disabled
 192.168.12.20 smart install disabled
192.168.12.14 smart install disabled
192.168.12.22 smart install disabled
192.168.12.13 smart install disabled
192.168.12.17 smart install disabled
192.168.12.15 smart install disabled
192.168.12.21 smart install disabled
192.168.12.19 smart install disabled
192.168.12.23 smart install disabled
192.168.12.5 smart install disabled
192.168.12.11 smart install disabled

當(dāng)然筐乳,由于 telnet 的關(guān)系,這個腳本只考慮了 telnet 直接輸入密碼并存在 enable 密碼的情況乔妈。諸如 telnet 之后跳 username 的蝙云,或者沒有 enable 密碼的,根據(jù)實(shí)際情況簡單修改下 telnet 部分的代碼即可润努。見上例中的注釋挪略。

參考文獻(xiàn)

Cisco Smart Install Remote Code Execution
用 Go 寫一個輕量級的 ssh 批量操作工具
Cisco IOS and IOS XE Software Smart Install Remote Code Execution Vulnerability

以上

轉(zhuǎn)載授權(quán)

CC BY-SA

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虎敦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子身隐,更是在濱河造成了極大的恐慌,老刑警劉巖揣非,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抡医,死亡現(xiàn)場離奇詭異,居然都是意外死亡早敬,警方通過查閱死者的電腦和手機(jī)忌傻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搞监,“玉大人水孩,你說我怎么就攤上這事∷雎浚” “怎么了俘种?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵秤标,是天一觀的道長。 經(jīng)常有香客問我宙刘,道長苍姜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任悬包,我火速辦了婚禮衙猪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘布近。我一直安慰自己垫释,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布撑瞧。 她就那樣靜靜地躺著棵譬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪预伺。 梳的紋絲不亂的頭發(fā)上订咸,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音扭屁,去河邊找鬼算谈。 笑死,一個胖子當(dāng)著我的面吹牛料滥,可吹牛的內(nèi)容都是我干的然眼。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼葵腹,長吁一口氣:“原來是場噩夢啊……” “哼高每!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起践宴,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤鲸匿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后阻肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體带欢,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年烤惊,在試婚紗的時候發(fā)現(xiàn)自己被綠了乔煞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡柒室,死狀恐怖渡贾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雄右,我是刑警寧澤空骚,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布纺讲,位于F島的核電站,受9級特大地震影響囤屹,放射性物質(zhì)發(fā)生泄漏熬甚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一牺丙、第九天 我趴在偏房一處隱蔽的房頂上張望则涯。 院中可真熱鬧,春花似錦冲簿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至角钩,卻和暖如春吝沫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背递礼。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工惨险, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脊髓。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓辫愉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親将硝。 傳聞我的和親對象是個殘疾皇子恭朗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)依疼,斷路器痰腮,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 演講一直是我懼怕的,從小就是一個調(diào)皮搗蛋的孩子律罢,長大了卻收斂了性子膀值,在熟悉的人面前可以聊到地老天荒,而在陌生人的面...
    良人猶美人閱讀 644評論 9 8
  • 水秀姑娘 你蘭指一翹 回眸時眾生顛倒 水秀姑娘 你似媚似嬌 紅唇是亂世佳肴 水秀姑娘 你有愛欲情殤 纏裹在三千青絲...
    羊念閱讀 191評論 0 0
  • 4點(diǎn)半误辑,清晨的陽光就照亮了大地沧踏,一改昨日的陰雨,天空藍(lán)藍(lán)的稀余,真是好天氣悦冀。 今天,我和姜瑋睛琳,蒙河盒蟆,思源踏烙,厚甫和書迪,...
    dohoney閱讀 443評論 0 3
  • 今天我們說一個美麗的玻璃器皿 分液漏斗 為了更好體現(xiàn)化學(xué)的魅力魂角,下面每張圖OD張都精挑細(xì)選。 梨形分液漏斗的主體是...
    OD張閱讀 749評論 0 0