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