既然是我們的防範是從入侵者角度來考慮,那麼我們就首先需要知道入侵者的入侵方式。目前較為流行web入侵方式都是透過尋找程式的漏洞先得到網站的webshell然後再根據伺服器的配置來找到相應的可以利用的方法進行提權,進而拿下伺服器權限的。所以配合伺服器來設定防止webshell是有效的方法。
一、防止資料庫被非法下載
應當說,有一點網路安全的管理員,都會把從網路上下載的網站程式的預設資料庫路徑進行更改。當然也有一部分管理員非常粗心,拿到程式直接在自己的伺服器上進行安裝,甚至連說明檔案都不進行刪除,更不要說更改資料庫路徑了。這樣駭客就可以透過直接從源碼網站下載網站原始程序,然後在本地測試找到預設的資料庫,再透過下載資料庫讀取裡面的使用者資訊和資料(一般是經過MD5加密的)找到管理入口進行登陸取得webshell 。還有一種情況是由於程式出錯暴出了網站資料庫的路徑,那麼怎麼防止這種情況的發生呢?我們可以添加mdb的擴展映射。如下圖所示:
開啟IIS新增一個MDB的映射,讓mdb解析成其他下載不了的檔案:「IIS屬性」—「主目錄」—「設定」—「映射」—「應用程式擴充功能」裡面新增.mdb檔案應用解析,至於用來解析它的檔案大家可以自己選擇,只要存取資料庫檔案出現無法存取就可以了。
這樣做的好處是:1只是要是mdb後綴格式的資料庫檔案就肯定下載不了;2對伺服器上所有的mdb檔案都起作用,對於虛擬主機管理員很有用處。
二、防止上傳
針對以上的配置如果使用的是MSSQL的資料庫,只要有註入點,依然可以透過使用注入工具進行資料庫的猜解。倘若上傳檔案根本沒有身份驗證的話,我們可以直接上傳一個asp的木馬就得到了伺服器的webshell。
對付上傳,我們可以總結為:可以上傳的目錄不給執行權限,可以執行的目錄不給上傳權限。 Web程式是透過IIS使用者運行的,我們只要給IIS使用者一個特定的上傳目錄有寫入權限,然後又把這個目錄的腳本執行權限去掉,就可以防止入侵者透過上傳獲得webshell了。配置方法:首先在IIS的web目錄中,開啟權限選項卡、只給IIS使用者讀取和列出目錄權限,然後進入上傳檔案保存和存放資料庫的目錄,給IIS使用者加上寫入權限,最後在這兩個目錄的「屬性」—「執行權限」選項把「純腳本」改為「無」即可。見下圖:
最後提醒一點,在你設定以上權限的時候,一定要注意到設定好父目錄的繼承。避免所做的設定白費。
[Cut-Page]
三、MSSQL注入
對於MSSQL資料庫的防禦,我們說,首先要從資料庫連接帳戶開始。資料庫不要用SA帳號。使用SA帳戶連接資料庫對伺服器來說就是一場災難。一般來說可以使用DB_OWNER權限帳戶連接資料庫,如果可以正常執行,使用public使用者最安全的。設定成dbo權限連接資料庫之後,入侵者基本上就只能透過猜解使用者名稱和密碼或是差異備份來獲得webshell了,對於前者,我們可以透過加密和修改管理後台的預設登陸位址來防禦。對於差異備份,我們知道它的條件是有備份的權限,並且要知道web的目錄。尋找web目錄我們說通常是透過遍歷目錄進行尋找或直接讀取註冊表來實現。無路這兩個方法的哪一種,都用到了xp_regread和xp_dirtree兩個擴充預存過程,我們只需要刪除這兩個擴充儲存就可以了,當然也可以把對應的dll檔案也一起刪除。
但是如果是因為程式出錯自己暴出了web目錄,就沒有辦法了。所以我們還要讓帳戶的權限更低,無法完成備份作業。具體操作如下:在這個帳戶的屬性—資料庫存取選項裡只需要對選取對應的資料庫並賦予其DBO權限,對於其他資料庫不要操作。接著還要到該資料庫—屬性—權限把該使用者的備份和備份日誌的權限去掉,這樣入侵者就不能透過差異備份取得webshell了。
[Cut-Page]三、MSSQL注入
對於MSSQL資料庫的防禦,我們說,首先要從資料庫連接帳戶開始。資料庫不要用SA帳號。使用SA帳戶連接資料庫對伺服器來說就是一場災難。一般來說可以使用DB_OWNER權限帳戶連接資料庫,如果可以正常執行,使用public使用者最安全的。設定成dbo權限連接資料庫之後,入侵者基本上就只能透過猜解使用者名稱和密碼或是差異備份來獲得webshell了,對於前者,我們可以透過加密和修改管理後台的預設登陸位址來防禦。對於差異備份,我們知道它的條件是有備份的權限,並且要知道web的目錄。尋找web目錄我們說通常是透過遍歷目錄進行尋找或直接讀取註冊表來實現。無路這兩個方法的哪一種,都用到了xp_regread和xp_dirtree兩個擴充預存過程,我們只需要刪除這兩個擴充儲存就可以了,當然也可以把對應的dll檔案也一起刪除。
但是如果是因為程式出錯自己暴出了web目錄,就沒有辦法了。所以我們還要讓帳戶的權限更低,無法完成備份作業。具體操作如下:在這個帳戶的屬性—資料庫存取選項裡只需要對選取對應的資料庫並賦予其DBO權限,對於其他資料庫不要操作。接著還要到該資料庫—屬性—權限把該使用者的備份和備份日誌的權限去掉,這樣入侵者就不能透過差異備份取得webshell了。