捍衛你的網站伺服器
劉作仁 (2010/8/2)
壹、緒論
2009年8月,網友發現總統府網站存在XSS弱點,藉由修改新聞稿專區網址後方參數為任意網站的網址,便可以在新聞稿專區看到其他網站的網頁內容。若駭客將新聞稿專區網址的參數如圖1所示修改為惡意程式的網址,並透過網路論壇、即時訊息及電子郵件等方式散播,不知情的民眾點選該連結後,惡意程式便會在背後默默地執行。總統府在發現此弱點之後,已立刻修改網頁程式碼並修補XSS弱點,避免總統府網站成為駭客散播惡意程式之平台。
圖1:利用XSS弱點散播惡意程式(資料來源:自行整理)
2010年1月,教育部品德教育網的網頁內容引起中國駭客不滿,於是利用Apahce應用程式的弱點入侵網站伺服器,並在網頁中留下「Game Over」、帶有骷髏頭符號的「You、re Down!」及「HackeD By Tm3yShell7」等挑釁意味十足的字句,如圖2所示。
圖2:教育部品德教育網遭入侵之頁面(資料來源:自行整理)
除了上述總統府與教育部的案例,根據Zone-h與資安之眼等資安網站的資料可得知,全球每天有1,200個以上的網頁受到攻擊或遭受置換,顯示現行的網站中仍隱藏許多危險。因此,本文將分別從網站開發人員與系統管理者的角色,說明在開發與維護網站時,該如何降低網站遭到駭客入侵的機率。
貳、網站開發人員該做些什麼
由於現今民眾對於網際網路的使用量需求驟增,網站的內容也開始插入大量的圖片與影片,網站開發人員已無法以人工的方式更新網頁內容。為了解決這個問題,網站開發人員使用資料庫儲存網站內容的所需資料,並利用ASP、PHP及JSP等動態網頁語言擷取資料庫的內容顯示於網頁。除此之外,網站開發人員也會根據民眾的需求,增加並修改網站所提供的功能。
為了避免駭客利用網站開發人員所撰寫程式的弱點入侵網站伺服器,本文提供下列4點建議供網站開發人員參考。
一、過濾使用者輸入資料
根據OWASP(Open Web Application Security Project,開放Web軟體安全計畫)組織於2010年發表的網頁應用程式弱點統計,其中「注入攻擊」與「跨網站腳本攻擊」分別列在前2名,而這2種攻擊手法其主要發生原因皆為網站開發人員並未過濾民眾所輸入之內容,逕將資料內容直接交由程式進行處理,導致網頁程式於運作時產生改變資料庫搜尋內容與插入惡意語等非預期之結果。因此,網站開發人員在處理網址與表單所傳送的資料時,須過濾並取代「> < ) ( % ; # & + -」等特殊符號;此之外,亦可使用正規表示式(Regular Expression)驗證民眾所輸入之字串是否合法。
二、過濾檔案上傳類型
若網站未過濾民眾上傳的檔案內容,駭客便可直接上傳網頁型後門程式,並取得伺服器之控制權限。為了避免駭客上傳網頁型後門,最簡單的方法便是限制上傳檔案的副檔案;惟網站開發人員僅以檢查檔案副檔名之方式作為過濾機制,是無法完全阻擋駭客的攻擊。舉例來說,網站允許上傳JPG類型的檔案,駭客便可藉由上傳檔名為hacker.php.JPG的網頁型後門時,繞過檔案過濾機制;其原理為係結束字元,當應用程式遇到結束字元時,便不會再處理結束字元後的字串,上傳的檔案便會以hacker.php為檔名儲存於伺服器。因此,網站開發人員除應判斷檔案的副檔名是否合法外,同時需建立檢查檔案表頭之檔案過濾機制,避免駭客利用檔案上傳功能取得網站伺服器之控制權。
三、避免使用管理員帳號連接資料庫
網站開發人員在撰寫程式時,會連接資料庫並擷取所需要的資料;但是網站開發人員往往為了開發程式的方便,將使用資料庫管理者的帳號連接資料庫。如此一來,駭客若利用網頁的SQL Injection弱點,亦能透過資料庫管理者之帳號,存取資料庫的內容與完整的附加功能。以MySQL的系統管理者帳號root為例,不但可以讀取系統中的任何文件,亦可將資料直接寫入檔案系統中。駭客可藉此將簡易網頁型後門程式寫入檔案系統,再利用簡易網頁型後門程式上傳完整之後門程式伺服器,同樣可以取得網站之控制權限。
四、加強網站授權機制
網站授權機制對於網站而言是相當重要的一部分,若此機制存在使用者可利用之弱點,使用者便可以直接存取該權限無法存取之功能。舉例來說:系統管理者在後端管理介面成功登入後,會導向至管理介面的主頁admin/main.php;若網站授權機制並未檢查admin/main.php之存取權限,使用者在網址列輸入admin/main.php便可以直接進入管理介面進行系統操作。因此,為了避免上述情況發生,網站開發人員應在頁面加上網站授權機制,透過此機制確認存取該頁面的使用者身分,從而避免使用者存取其權限不應存取之內容。
參、系統管理者又該做些什麼
相較於網站開發人員,系統管理者的主要工作即負責網站伺服器本身的作業系統與應用程式(如:IIS、Apache及Tomcat)等相關設定。縱使網站網頁應用程式本身並無存在任何弱點,但是網站伺服器未定期進行安全性更新或不當設定,亦可能造成網站伺服器被駭客入侵的後果,因此,系統管理者在網站伺服器的安全方面,同樣扮演著相當重要的角色。本文接下來將介紹系統管理者應針對網站伺服器進行的相關安全性設定。
一、網站伺服器安全性更新
目前提供網站服務的應用程式以IIS、Apache及Tomcat等應用程式為主流,但是應用程式本身亦有可能存在駭客可遠端攻擊的弱點。因此,系統管理者需隨時注意資安廠商所發布的網站安全性弱點,並安裝開發廠商所提供的安全性更新,或是升級網站服務之應用程式為最新版本,避免駭客利用應用程式的弱點入侵網站伺服器。上述教育部品德教育網便是駭客利用Apahce本身的弱點,取得網站伺服器的控制權後,修改首頁的內容。
二、關閉目錄列舉(Directory Listing)功能
若民眾瀏覽網站未指定所瀏覽之檔案內容,便會根據網站伺服器所提供的選項搜尋該目錄中的啟始頁面,以圖3的Apache為例,便會依序尋找檔名為index.php、index.html及index.htm的檔案。
圖3:設定目錄的啟始頁面(資料來源:自行整理)
若應用程式未能找到設定檔所指定的啟始頁面,其開啟目錄列舉的功能便會列出該目錄下的所有檔案與目錄,詳如圖4所示。
圖4:未關閉網頁列舉的畫面(資料來源:自行整理)
駭客可以藉由此功能得知該目錄中的檔案與目錄結構,並取得儲存資料庫連線等網站的相關設定。因此,本文建議系統管理者應關閉目錄列舉功能,駭客便無法取得檔案與目錄結構。以Apache為例,系統管理者應在該目錄的Options選項中移除Indexes,或是在Indexes前方加上-號,關閉目錄列舉功能,如圖5所示。
圖5:關閉網頁列舉選項(資料來源:自行整理)
三、後端管理介面連線限制
若駭客取得後端管理介面之網址,便可嘗試利用字典檔密碼破解與其他網站弱點繞過身分驗證機制。一旦駭客成功通過身分驗證機制,駭客便可以利用後端管理介面提供的功能上傳網頁型後門,並利用後門操作網站伺服器。因此,建議系統管理者限制後端管理介面的網址,僅能從公司內部網路的IP連線,避免駭客直接從外部網路連線至後端管理介面,如圖6所示。
圖6:限制連線IP設定(資料來源:自行整理)
四、限制可存取之檔案類型
部分網站開發人員在進行網站開發時,會因個人習慣使用bak為副檔名,作為網頁程式之備份,或是使用conf檔案作為網頁之設定檔。駭客可以利用人為的疏失瀏覽bak與conf類型之檔案,因為應用程式並未規範這2種類型檔案之處理方式,故駭客可直接以純文字等方式檢視檔案內容或下載該檔案。系統管理員應限制民眾存取副檔名為bak與conf等類型之檔案,避免駭客根據網站程式碼的內容,尋找網站的相關弱點。以Aapache為例,系統管理者可以在該目錄中建立.htaccess檔案,並在檔案中加上所限制的檔案類型,限制駭客存取指定類型之檔案內容,如圖7所示。
圖7:限制存取bak與conf檔案類型(資料來源:自行整理)
若駭客直接存取副檔名為bak或conf檔案時,應用程式便會回傳403 Forbidden的禁止訊息,如圖8所示。
圖8:應用程式拒絕存取bak檔案類型(資料來源:自行整理)
肆、結論
根據Zone-h與資安之眼等資安網站所提供被入侵的網站清單,顯示現行的網站仍隱藏許多危險。然而,網站安全需要系統管理者與網站開發人員共同承擔,只要系統管理者或網站開發人員有一方疏失,就有可能導致網站遭到入侵。因此,本文分別以網站開發人員與系統管理者的角色,說明網站開發人員與系統管理者在進行網站開發與後續維運時該如何做,才能將網站被入侵的機率降到最低。
系統管理者不應拘泥於上述所提供的建議,應針對網站的實際環境,調整伺服器的相關設定;網站開發人員則應在網站實際上線前,利用相關的弱點掃描軟體驗證網站本身是否存在弱點。目前較知名的免費自動化網站弱點掃描軟體,如:Nikto、Paros及Grandel-Scan等,只需輸入網站的URL(Uniform Resource Locator,網頁位址)並進行簡易的設定,便可針對網站進行弱點測試;掃描完成後,網站開發人員亦可根據其檢測結果修改網站所存在的弱點。若網站需要更嚴密的資安防護,作者建議聘請專業的滲透測試服務公司,以實際的駭客手法,針對網站進行全面的詳細檢測。
資料來源:法務部調查局
沒有留言:
張貼留言