|
導讀網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據... 網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 由一次入侵實例看虛擬主機系統的安全問題(下) [ 作者:Sinbad轉貼自:本站原創點擊數:77文章錄入:中國之鷹 ] 雖然到目前為止,我事實上已經控制了他所有的UNIX主機,也早就有了root權限,但root的密碼我還是不知道,這多少還有點不甘心,怎樣來得到這個密碼呢?窮舉當然是一種,但我就算知道了root密碼,也不想要干什么,何必費這么大的勁,所以我決定來一招偷天換日,雖然sysadm很少會從telnet登錄,但他總要有登陸的時候的,而且一登陸肯定要干root才干的事,他必須使用su命令讓自己成為root,使用su命令的時候當然需要輸入root的密碼,我就可從這點入手,做一個假的su來欺騙,讓他先運行的是我寫的su,把他輸入的密碼保存到一個文件上,即使他的密碼是對的,也給他出錯提示,然后刪除我的這個su,他再次運行的就是真正的su了。所以我用sysadm登錄并寫了如下腳本放在他的用戶目錄下,文件名為su %vi su #!/bin/sh echo -n "Password:" stty -echo;read PASSWD;stty echo echo "$PASSWD">>/tmp/.password echo; echo "Sorry" rm -fr ~/su :wq %chmod 755 su 為了讓他先運行的是我的su而不是系統的su,還需要改變shell的rc文件,所以打開.cshrc 在 set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)前面增加一個~, 即讓系統在查找命令時首先查找的是自己的目錄,就是放有我寫的su的目錄,變成這個樣子 set path = (~ /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) 因為不知道他會使用那個shell,所以每一個rc文件都做了同樣的處理...... 最后的結果當然是順利的取得了root的密碼,雖然這個方法看起來很簡陋,容易看穿,但事實上卻是非常的隱蔽,在一個UNIX系統上,輸入密碼是連個*都沒有給你回顯的,管理員去su的時候,一般都是有事,需要很快做好,輸錯一次密碼應該還沒感覺過來,就算之后感覺出來了但我這個su又是運行一次就刪掉了,不像什么木馬后門之類,做完事還大摸大樣的留在那里,而rc文件,一般設置完成之后都很少有去看的,大不了我得到密碼之后改回來就是了,基本上并沒有留下什么痕跡。 實際上,這個入侵的實例,由頭到尾都是極為普通的,沒有什么高技術的成分,也沒有現在人家都喜歡用的什么什么漏洞,什么什么溢出,只是由一個普通用戶的弱口令開始,慢慢的發展到了整個主機群被控于一個入侵者的手中,事實上,操作系統和各種相關服務的本身并沒有什么漏洞,問題主要還是發生在CGI程序的編寫,維護中的疏忽,管理員對安全問題不敏感這些上。在系統本身的漏洞少這點上,應該可以看出,主機一開始是由一些資深的工程師配置,之后也會根據以發現的漏洞做修補,但在以后的管理過程中,是由下一層技術人員負責,這一層的人往往技術面不廣,人家叫干什么就干什么,不會有很大的責任壓力,這樣就把安全問題越捅越大。如果沒有那個備份文件,我根本不能了解那個以root運行的apache的cgi-bin的目錄結構和具體的文件名,因為其他人并沒有r權限。第二個就是suid為root的程序的寫法不夠嚴格(以root運行的apache執行CGI時和suid root是差不多一樣的),在一個虛擬主機上,為了讓用戶可以通過web界面來管理,不得不讓apache以root的身份運行,因為用戶的設置,需要改變很多系統的配置文件,如passwd httpd.conf sendmail.cf 等等,雖然apache的suexe提供了比squid更多安全選項如docroot等,但在這里根本就派不上用場。所以這個CGI應該是每一行代碼都要知道自己是以root運行的,絲毫不得有差錯,但遺憾的是,我見到的大多數服務商的這種CGI都忘記了自己是誰,其寫法和普通的CGI類似,創建的文件大多是設置為666,777,而程序本身的屬性為755,事實上,當apache加入suexec這個功能后,CGI程序本身設置為700,其他文件為400就可以了,可以做到除了自己,任何人不可以讀。如果沒有這個屬性的問題,在上面的實例中,我也不可能在cgi-bin下面創建文件,讓apache去運行,也就無法改變主業,復制文件,修改程序。正是這一步,把整個系統推向了被毀滅的邊緣。第三個問題就老生常談了,人本身的安全意識問題,在幾個服務商的主機上都發現了,同一個服務商,它的結構一樣的不同的主機,某些目錄的權限也不一樣,這個很明顯是在日常的維護中改變的。在維護過程中,對一些微妙的東西不注意,往往也是危險發生的原因,比如那個su,就這樣讓我把root密碼給偷了去。而上面提及的問題,到頭來也是體現在這個問題上,安全似乎沒有大小之分,一個大的遠程溢出可以讓入侵者得到root,但只是一些小小疏忽也可以讓入侵者得到root,但大家往往都把注意力集中在一些系統漏洞的修補上,卻忽視了某些"小問題"。 在目前的技術水平上實現的虛擬主機,這些問題的出現應該說是在所難免的,因為這涉及到了服務商的整個員工隊伍的素質問題,在沒有更好的虛擬主機的實現方法之前,如果從技術方面考慮,我覺得應該在權限方面多下功夫,比如用程序隔一定時間(如一小時)檢查各個重要的目錄、文件是否有被修改,用編譯的程序來代替腳本類型的程序等等,說下去又一長篇大論,本人知識水平有限,為了避免在各位高人面前班門弄斧,就此打住。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!