早期Solaris 2.6、7 和 8 的 telnetd存在一個漏洞, 可以通過/bin/login的環(huán)境變數(shù) TTYPROMPT 繞過驗證,導(dǎo)致無需身份認證即可登錄。最近,Solaris 10的telnet又被發(fā)現(xiàn)出現(xiàn)了漏洞,Sun也及時推出了補丁。
我們先來看問題的癥狀。漏洞出現(xiàn)的系統(tǒng)環(huán)境為Solaris 10及以后版本,安裝時沒有選擇默認安裝。漏洞表現(xiàn)為通過在Solaris的telnet命令的-l選項后指定任意一個“-fusername”參數(shù),就可以直接登錄進入Solaris系統(tǒng)。
命令格式:
telnet -l "-fbin" target_address |
下面是通過telnet漏洞以bin用戶登錄系統(tǒng)的演示。
# telnet -l "-fbin" myhost |
如果管理員修改了/etc/default/login文件,在注釋掉CONSOLE行允許root遠程登錄的情況下,訪問者可以利用該漏洞直接以root登錄系統(tǒng),這樣對系統(tǒng)危害更大。
Kingcope最早給出了在OpenSolaris中發(fā)現(xiàn)的該漏洞的源代碼,并稱其為“0day”-零日漏洞。文章地址為:
http://www.com-winner.com/0day_was_the_case_that_they_gave_me.pdf
該文章中提供一個腳本,運行后用戶可以獲得被登錄系統(tǒng)的adm用戶權(quán)限。
解決方法:
1. 禁止Solaris 10的telnet服務(wù)。
檢查本機的telnet服務(wù)是否啟動。
# svccfg list | grep telnet |
2. 下載安裝Sun的安全補丁(需Sun服務(wù)支持)。
Sun的技術(shù)支持工程師Alan Hargreaves在他2月13日的BLOG:
http://blogs.sun.com/tpenta/entry/the_in_telnetd_vulnerability_exploit
中提到,最終解決該問題的補丁120068-03已經(jīng)發(fā)布。通過Solaris 10的Update Manager可以下載安裝該補丁,如圖所示。這里可以看到該補丁是2月21日發(fā)布的。
需要說明的是Solaris 10的補丁,除了Security和hardware相關(guān)補丁可以免費下載,其它都是要服務(wù)支持的,就是Sun Service Plan。但是對于知道Patch號的,可以從http://sunsolve.sun.com中單個下載。這里可以在sunsolve上用PatchFinder查找120068-03補丁并下載,安裝到系統(tǒng)中。
安裝補丁后系統(tǒng)漏洞被禁止。
# showrev -p | grep 120068 |
需要用戶輸入密碼登錄,可見當(dāng)前Solaris 10系統(tǒng)的telnet漏洞被修正。
對新發(fā)現(xiàn)的Solaris 10的telnet漏洞,Sun的反應(yīng)還算迅速,立刻推出了相應(yīng)補丁程序。這里也可以看見,任何操作系統(tǒng)都是有Bug存在的,Sun通過OpenSolaris開源,使得系統(tǒng)的bug能盡快被發(fā)現(xiàn)和完善。