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