既然是我們的防范是從入侵者角度來進(jìn)行考慮,那么我們就首先需要知道入侵者的入侵方式。目前較為流行web入侵方式都是通過尋找程序的漏洞先得到網(wǎng)站的webshell然后再根據(jù)服務(wù)器的配置來找到相應(yīng)的可以利用的方法進(jìn)行提權(quán),進(jìn)而拿下服務(wù)器權(quán)限的。所以配合服務(wù)器來設(shè)置防止webshell是有效的方法。
一、防止數(shù)據(jù)庫被非法下載
應(yīng)當(dāng)說,有一點網(wǎng)絡(luò)安全的管理員,都會把從網(wǎng)上下載的網(wǎng)站程序的默認(rèn)數(shù)據(jù)庫路徑進(jìn)行更改。當(dāng)然也有一部分管理員非常粗心,拿到程序直接在自己的服務(wù)器上進(jìn)行安裝,甚至連說明文件都不進(jìn)行刪除,更不要說更改數(shù)據(jù)庫路徑了。這樣黑客就可以通過直接從源碼站點下載網(wǎng)站源程序,然后在本地測試找到默認(rèn)的數(shù)據(jù)庫,再通過下載數(shù)據(jù)庫讀取里面的用戶信息和資料(一般是經(jīng)過MD5加密的)找到管理入口進(jìn)行登陸獲得webshell。還有一種情況是由于程序出錯暴出了網(wǎng)站數(shù)據(jù)庫的路徑,那么怎么防止這種情況的發(fā)生呢?我們可以添加mdb的擴(kuò)展映射。如下圖所示:
打開IIS添加一個MDB的映射,讓mdb解析成其他下載不了的文件:“IIS屬性”—“主目錄”—“配置”—“映射”—“應(yīng)用程序擴(kuò)展”里面添加.mdb文件應(yīng)用解析,至于用于解析它的文件大家可以自己進(jìn)行選擇,只要訪問數(shù)據(jù)庫文件出現(xiàn)無法訪問就可以了。
這樣做的好處是:1只是要是mdb后綴格式的數(shù)據(jù)庫文件就肯定下載不了;2對服務(wù)器上所有的mdb文件都起作用,對于虛擬主機(jī)管理員很有用處。
二、防止上傳
針對以上的配置如果使用的是MSSQL的數(shù)據(jù)庫,只要存在注入點,依然可以通過使用注入工具進(jìn)行數(shù)據(jù)庫的猜解。倘若上傳文件根本沒有身份驗證的話,我們可以直接上傳一個asp的木馬就得到了服務(wù)器的webshell。
對付上傳,我們可以總結(jié)為:可以上傳的目錄不給執(zhí)行權(quán)限,可以執(zhí)行的目錄不給上傳權(quán)限。Web程序是通過IIS用戶運行的,我們只要給IIS用戶一個特定的上傳目錄有寫入權(quán)限,然后又把這個目錄的腳本執(zhí)行權(quán)限去掉,就可以防止入侵者通過上傳獲得webshell了。配置方法:首先在IIS的web目錄中,打開權(quán)限選項卡、只給IIS用戶讀取和列出目錄權(quán)限,然后進(jìn)入上傳文件保存和存放數(shù)據(jù)庫的目錄,給IIS用戶加上寫入權(quán)限,最后在這兩個目錄的“屬性”—“執(zhí)行權(quán)限”選項把“純腳本”改為“無”即可。見下圖:
最后提醒一點,在你設(shè)置以上權(quán)限的時候,一定要注意到設(shè)置好父目錄的繼承。避免所做的設(shè)置白費。
三、MSSQL注入
對于MSSQL數(shù)據(jù)庫的防御,我們說,首先要從數(shù)據(jù)庫連接帳戶開始。數(shù)據(jù)庫不要用SA帳戶。使用SA帳戶連接數(shù)據(jù)庫對服務(wù)器來說就是一場災(zāi)難。一般來說可以使用DB_OWNER權(quán)限帳戶連接數(shù)據(jù)庫,如果可以正常運行,使用public用戶最安全的。設(shè)置成dbo權(quán)限連接數(shù)據(jù)庫之后,入侵者基本就只能通過猜解用戶名和密碼或者是差異備份來獲得webshell了,對于前者,我們可以通過加密和修改管理后臺的默認(rèn)登陸地址來防御。對于差異備份,我們知道它的條件是有備份的權(quán)限,并且要知道web的目錄。尋找web目錄我們說通常是通過遍歷目錄進(jìn)行尋找或者直接讀取注冊表來實現(xiàn)。無路這兩個方法的哪一種,都用到了xp_regread和xp_dirtree兩個擴(kuò)展存儲過程,我們只需要刪除這兩個擴(kuò)展存儲就可以了,當(dāng)然也可以把對應(yīng)的dll文件也一起刪除。
但是如果是由于程序出錯自己暴出了web目錄,就沒有辦法了。所以我們還要讓帳戶的權(quán)限更低,無法完成備份操作。具體操作如下:在這個帳戶的屬性—數(shù)據(jù)庫訪問選項里只需要對選中對應(yīng)的數(shù)據(jù)庫并賦予其DBO權(quán)限,對于其他數(shù)據(jù)庫不要操作。接著還要到該數(shù)據(jù)庫—屬性—權(quán)限把該用戶的備份和備份日志的權(quán)限去掉,這樣入侵者就不能通過差異備份獲得webshell了。