web|web服務|web伺服器|安全|攻擊 我們要討論的第二類安全問題涉及到伺服器公用目錄下的私人資料。許多Web空間供應商提供的只有“Web空間”,它們會把使用者FTP目錄的根映射到Web伺服器的根。也就是說,使用者可以通過FTP以“/”訪問伺服器目錄“/home/www/servers/www.customer.com/”,同時任何人可以通過URL“http://www.customer.com/”訪問它,用FTP方式儲存的“/password”檔案可以通過URL“http://www.customer.com/password”訪問。如果使用者Web應用需要儲存一些私人的、不能從Web訪問的資料,則根本無法找到滿足要求的位置。
許多Web商店把訂單日誌和調試輸出寫入一個或多個記錄檔,或者用設定檔來儲存密碼和商品資料。如果這些資料儲存到頁面主目錄之下,那麼它們就有相應的URL而且可以通過Web訪問。此時攻擊者所要做的只是猜出這些檔案的名字。只要瞭解了20種主流線上商店系統的預設設定並正確地識別出目標網站所用的系統,要猜出這些檔案名稱字是相當簡單的。
如果Web伺服器既提供私人資料存放區又提供公用頁面目錄,上述問題就不會再出現。例如在這些方案中,FTP根目錄“/”映射到“/home/www/servers/www.customer.com/”,但頁面文檔的根目錄卻在它的下一級目錄“/home/www/servers/www.customer.com/pages”,可以通過FTP以“/pages”形式訪問。在這種目錄配置下,使用者可以另外建立和頁面主目錄平行的目錄,然後把敏感性資料放到這些目錄中。由於這些目錄可以通過FTP訪問,但不能通過HTTP訪問,所以它們是無法通過Web訪問的。
如果系統沒有採用上述根目錄分離的目錄結構,我們還有一種解決問題的辦法,即在頁面主目錄下建立專用的私人資料存放區目錄,如“/shop”,然後在這個目錄中建立.htaccess檔案,通過.htaccess檔案拒絕所有HTTP訪問(適用於Apache伺服器):
$ cat /shop/.htaccessorder deny, allowdeny from all
|
該目錄中的檔案只能通過FTP傳輸,因為FTP傳輸忽略.htaccess檔案。但與前面採用頁面主目錄之外獨立目錄的方法相比,這種方法的風險更多一點,因為如果伺服器管理員在伺服器主設定檔中意外地關閉了該目錄必不可少的“AllowOverride Limit”優先權,這種保護將不再有效。
上述問題還有各種變化形式。如果一台機器上運行著多個客戶網站,那麼客戶就能夠欺騙機器,訪問在其自己目錄層次之外的路徑,例如“/home/www/servers/www.customer.com”目錄之外的檔案。通常,只需建立各種符號連結(指向儲存在使用者虛擬伺服器之外的檔案)就有可能實現這一點。最有可能成為連結目標的是包含檔案和私人密匙,這是為了擷取資料庫密碼和其他必須保密的資訊(為了讓應用能夠正常運行這些資訊往往以明文形式儲存在這類檔案中)。其他可能的攻擊目標還包括儲存在非公用目錄中的訂單記錄和其他有用資料。